Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2015
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 2.59 KB | None | 0 0
  1. package com.cisco.cstg.sa.nwssot.alertsync.alertdetail
  2.  
  3. import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.FNAlertsFields
  4. import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.HWAlertsFields
  5. import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.INTELLISHIELDAlertsFields
  6. import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.PsirtAlertsFields
  7. import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.SWAlertsFields
  8. import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.deviceField
  9. import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields._
  10. import com.cisco.cstg.sa.nwssot.base.MetaData.AlertType
  11. import com.cisco.cstg.sa.nwssot.base.MetaData.EqpType
  12. import com.cisco.cstg.sa.nwssot.base.SNTCQuery
  13. import com.cisco.cstg.sa.nwssot.base.SNTCQuery.par
  14.  
  15. /**
  16.  * Class to query AlertSync dataset
  17.  *
  18.  * RowKey: ProgName#ECId#InvId#RT#SerialNum#Productid#EqpType#SDDomain#AlertId
  19.  * Question: what's EqpType, SDDomain.
  20.  *
  21.  * @param map json map
  22.  */
  23. case class AlertSyncAlertDetailQuery(map: Map[String, Any]) extends SNTCQuery(map) {
  24.  
  25.   override def createKey(): String = {
  26.     if (valid("ENTITLED_COMPANY_ID")) {
  27.       val rt = Long.MaxValue - asLong("ALERT_SYNC_PROCESSED_TIMESTAMP")
  28.       Seq(
  29.         map getOrElse ("PROGRAM_NAME", par("ProgName")), // ProgName
  30.         map("ENTITLED_COMPANY_ID"),
  31.         map getOrElse ("INVENTORY_ID", par("InvId")),
  32.         rt.toString) mkString keyDelim
  33.     } else null
  34.   }
  35.  
  36.   override def query(): Seq[Seq[(String, Any)]] = createKey() match {
  37.     case null => Seq()
  38.     case baseKey: String =>
  39.  
  40.       val suffixKey = Seq(AlertType(asString("ALERT_TYPE")), asString("ALERT_ID")) mkString keyDelim
  41.       val alertTypeFields = asString("ALERT_TYPE") match {
  42.         case "HW" => queryOptionalFields(HWAlertsFields)
  43.         case "SW" => queryOptionalFields(SWAlertsFields)
  44.         case "FN" => queryOptionalFields(FNAlertsFields)
  45.         case "IS" => queryOptionalFields(INTELLISHIELDAlertsFields)
  46.         case "PSIRT" => queryOptionalFields(PsirtAlertsFields)
  47.         case _ => null
  48.       }
  49.  
  50.       queryDevices(baseKey, suffixKey).map(row =>
  51.         row ++
  52.           alertTypeFields ++
  53.           queryOptionalFieldsAsColumns(alertSyncAlertDetailFields) ++
  54.           Seq(("SDDomain", AlertType(asString("ALERT_TYPE")))))
  55.   }
  56.  
  57.   def queryDevices(baseKey: String, suffixKey: String) = map.get(deviceField) match {
  58.     case Some(l: List[Map[String, Any]]) =>
  59.       l.flatMap(AlertSyncDeviceQuery(_, baseKey, suffixKey).query())
  60.     case _ => Seq()
  61.   }
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement