Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2015
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.98 KB | None | 0 0
  1. package com.cisco.cstg.sa.nwssot.alertsync.devicedetail
  2.  
  3. import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.alertSyncAlertDetailFields
  4. import com.cisco.cstg.sa.nwssot.alertsync.devicedetail.AlertSyncDeviceDetailsFields.alertsField
  5. import com.cisco.cstg.sa.nwssot.alertsync.devicedetail.AlertSyncDeviceDetailsFields.alertsLabel
  6. import com.cisco.cstg.sa.nwssot.alertsync.devicedetail.AlertSyncDeviceDetailsFields.deviceField
  7. import com.cisco.cstg.sa.nwssot.alertsync.devicedetail.AlertSyncDeviceDetailsFields.timestampField
  8. import com.cisco.cstg.sa.nwssot.alertsync.devicedetail.AlertSyncDeviceDetailsFields.timestampLabel
  9. import com.cisco.cstg.sa.nwssot.base.SNTCQuery
  10. import com.cisco.cstg.sa.nwssot.base.SNTCQuery.par
  11.  
  12. /**
  13.  * Class to query AlertSync dataset for DEVICE_DETAILS column
  14.  * @param map json map
  15.  */
  16. case class AlertSyncDeviceDetailsQuery(map: Map[String, Any]) extends SNTCQuery(map) {
  17.  
  18.   override def createKey(): String = {
  19.     if (valid("ENTITLED_COMPANY_ID")) {
  20.       Seq(
  21.         map("ENTITLED_COMPANY_ID")
  22.       ) mkString keyDelim
  23.     } else null
  24.   }
  25.  
  26.   override def query(): Seq[Seq[(String, Any)]] = createKey() match {
  27.     case null => Seq()
  28.     case baseKey: String =>
  29.       val alertFieldName = asString("ALERT_TYPE") match {
  30.         case "HW" => "HWAlerts"
  31.         case "SW" => "SWAlerts"
  32.         case "FN" => "FNAlerts"
  33.         case "IS" => "ISAlerts"
  34.         case "PSIRT" => "PSIRTAlerts"
  35.         case _ => ""
  36.       }
  37.       val alerts = Map(timestampLabel -> asString(timestampField),
  38.         alertsField -> asJson(map.filterKeys(!_.equals(deviceField))))
  39.  
  40.       queryDevices(baseKey).map(row => (row :+ (alertsLabel, alerts)) ++ Seq(("ALERT_TYPE", alertFieldName)) ++ queryOptionalFieldsAsString(alertSyncAlertDetailFields))
  41.   }
  42.  
  43.   def queryDevices(baseKey: String) = map.get(deviceField) match {
  44.     case Some(l: List[Map[String, Any]]) =>
  45.       l.flatMap(AlertSyncDeviceQuery(_, baseKey).query())
  46.     case _ => Seq()
  47.   }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement