/**
  * Get a RaisedAlert for a given id.
  *
  * @param alertId The alert Id
  * @return The corresponding RaisedAlert.
  */
 public RaisedAlert getRaisedAlert(String alertId) {
   for (RaisedAlert raisedAlert : raisedAlerts) {
     if (raisedAlert.getAlertId().equals(alertId)) {
       return raisedAlert;
     }
   }
   return null;
 }
 /**
  * Get the overall AlertState for this RaisedAlarm summary object .
  *
  * <p>This is the highest AlertState among all the RaisedAlerts for the subsystem.
  *
  * @return The highest AlertState.
  */
 public AlertState getAlertState() {
   AlertState base = AlertState.NOMINAL;
   for (RaisedAlert alert : raisedAlerts) {
     if (alert.getHighestAlertState().compareTo(base) > 0) {
       base = alert.getHighestAlertState();
     }
   }
   return base;
 }
 private RaisedAlert getRaisedAlert(Alert alert) {
   for (RaisedAlert raisedAlert : raisedAlerts) {
     if (raisedAlert.equals(alert)) {
       return raisedAlert;
     }
   }
   RaisedAlert raisedAlert = new RaisedAlert(alert, subsystem);
   raisedAlerts.add(raisedAlert);
   return raisedAlert;
 }
 /**
  * Clear an Alert for the provided alert id.
  *
  * @param alertId The id of the Alert to clear.
  */
 public void clearAlert(String alertId) {
   RaisedAlert alertToClear = null;
   for (RaisedAlert alert : raisedAlerts) {
     if (alert.getAlertId().equals(alertId)) {
       alertToClear = alert;
       break;
     }
   }
   if (alertToClear != null) {
     raisedAlerts.remove(alertToClear);
   }
 }
 @Override
 public String toString() {
   StringBuilder sb = new StringBuilder();
   sb.append("Alarm Summary\n");
   sb.append("Subsystem ")
       .append(subsystem)
       .append(" seviery : ")
       .append(getAlertState())
       .append("\n");
   for (RaisedAlert alert : getRaisedAlertsForSubsystem()) {
     sb.append("Alert: ")
         .append(alert.getAlertId())
         .append(" instances: ")
         .append(alert.getNumberOfInstances())
         .append(" severity: ")
         .append(alert.getHighestAlertState())
         .append("\n");
   }
   return sb.toString();
 }
 /**
  * Raise an Alert with a given severity at a given CCS timestamp. This method will create a
  * RaisedAlert class if needed and update it with the new raised Alert.
  *
  * @param alert The Alert that was raised.
  * @param severity The AlertState of the Alert.
  * @param timestamp The timestamp at which the Alert was raised.
  * @return The updated RaisedAlert.
  */
 public RaisedAlert raiseAlert(Alert alert, AlertState severity, long timestamp) {
   RaisedAlert raisedAlert = getRaisedAlert(alert);
   raisedAlert.addAlertInstance(severity, timestamp);
   return raisedAlert;
 }