Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.cisco.cstg.sa.nwssot.alertsync.alertdetail
- import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.FNAlertsFields
- import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.HWAlertsFields
- import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.INTELLISHIELDAlertsFields
- import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.PsirtAlertsFields
- import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.SWAlertsFields
- import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields.deviceField
- import com.cisco.cstg.sa.nwssot.alertsync.alertdetail.AlertSyncFields._
- import com.cisco.cstg.sa.nwssot.base.MetaData.AlertType
- import com.cisco.cstg.sa.nwssot.base.MetaData.EqpType
- import com.cisco.cstg.sa.nwssot.base.SNTCQuery
- import com.cisco.cstg.sa.nwssot.base.SNTCQuery.par
- /**
- * Class to query AlertSync dataset
- *
- * RowKey: ProgName#ECId#InvId#RT#SerialNum#Productid#EqpType#SDDomain#AlertId
- * Question: what's EqpType, SDDomain.
- *
- * @param map json map
- */
- case class AlertSyncAlertDetailQuery(map: Map[String, Any]) extends SNTCQuery(map) {
- override def createKey(): String = {
- if (valid("ENTITLED_COMPANY_ID")) {
- val rt = Long.MaxValue - asLong("ALERT_SYNC_PROCESSED_TIMESTAMP")
- Seq(
- map getOrElse ("PROGRAM_NAME", par("ProgName")), // ProgName
- map("ENTITLED_COMPANY_ID"),
- map getOrElse ("INVENTORY_ID", par("InvId")),
- rt.toString) mkString keyDelim
- } else null
- }
- override def query(): Seq[Seq[(String, Any)]] = createKey() match {
- case null => Seq()
- case baseKey: String =>
- val suffixKey = Seq(AlertType(asString("ALERT_TYPE")), asString("ALERT_ID")) mkString keyDelim
- val alertTypeFields = asString("ALERT_TYPE") match {
- case "HW" => queryOptionalFields(HWAlertsFields)
- case "SW" => queryOptionalFields(SWAlertsFields)
- case "FN" => queryOptionalFields(FNAlertsFields)
- case "IS" => queryOptionalFields(INTELLISHIELDAlertsFields)
- case "PSIRT" => queryOptionalFields(PsirtAlertsFields)
- case _ => null
- }
- queryDevices(baseKey, suffixKey).map(row =>
- row ++
- alertTypeFields ++
- queryOptionalFieldsAsColumns(alertSyncAlertDetailFields) ++
- Seq(("SDDomain", AlertType(asString("ALERT_TYPE")))))
- }
- def queryDevices(baseKey: String, suffixKey: String) = map.get(deviceField) match {
- case Some(l: List[Map[String, Any]]) =>
- l.flatMap(AlertSyncDeviceQuery(_, baseKey, suffixKey).query())
- case _ => Seq()
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement