package eu.aniketos.notification; /** * A message object that is used for Aniketos notifications. * Usually created by subscribers that receive a notification. * * @version 1.0 * @author Erlend Andreas Gjære (SINTEF), erlendandreas.gjare@sintef.no * */ public class Notification { /** Represents a service change **/ public static final String SERVICE_CHANGE = "ServiceChange"; /** Represents a context change **/ public static final String CONTEXT_CHANGE = "ContextChange"; /** Represents a threat level change **/ public static final String THREAT_LEVEL_CHANGE = "ThreatLevelChange"; /** Represents a security property change **/ public static final String SECURITY_PROPERTY_CHANGE = "SecurityPropertyChange"; /** Represents a trust level change **/ public static final String TRUST_LEVEL_CHANGE = "TrustLevelChange"; /** Represents a contract change **/ public static final String CONTRACT_CHANGE = "ContractChange"; /** Represents a contract violation **/ public static final String CONTRACT_VIOLATION = "ContractViolation"; /** * A value of monitored parameter */ private String alertValue; /** * A description of the alert */ private String description; /** * Types of alert to be sent to the Notification module: * - ServiceChange * - ContextChange * - ThreatLevelChange * - SecurityPropertyChange * - TrustLevelChange * - ContractChange * - ContractViolation */ private String alertType; /** * The threat id with which the notification is associated */ private String threatId; /** * Service that the alert concerns */ private String serviceId; /** * The threshold above which the alert should be sent */ private int importance; /** * The server time for receiving the alert */ private String serverTime; /** * The threshold above which the alert should be sent */ private String messageId; /** * Simple constructor for messages that do not have a unique message ID */ public Notification() { initObj(); } /** * Constructor used by the publisher and subscriber to store the unique message ID * already assigned to the JMS message created by the ActiveMQ message broker. * * @param messageId */ public Notification(String messageId) { initObj(); this.messageId = messageId; } /** * Get the identifier of the service ID that the alert concerns * @return A service ID */ public String getServiceId() { return serviceId; } /** * Get the identifier of the service ID that the alert concerns * @return A service ID * @deprecated Replace with getServiceId() */ public String getService() { return getServiceId(); } /** * Set the ID of the service which the notification relates to * @param serviceId The service URL * @deprecated Replace with getServiceId() */ public void setService(String serviceId) { setServiceId(serviceId); } /** * Set the ID of the service which the notification relates to * @param serviceId The service URL */ public void setServiceId(String serviceId) { this.serviceId = serviceId; } /** * Set the type for this notification * @return One of this class' class constants */ public String getAlertType() { return alertType; } /** * Set the type for this notification * @param alertType Use one of this class' class constants */ public void setAlertType(String alertType) { this.alertType = alertType; } /** * Get the value of the alert * @return The alert value (string contents, not a standardized format) */ public String getValue() { return alertValue; } /** * Get the value of the alert * @return The alert value (string contents, not a standardized format) * @deprecated Replace with getValue() */ public String getAlertValue() { return getValue(); } /** * Set the value of the alert * @param alertValue A value that represents the alert's content beyond type and standardized description * @deprecated Replace with setValue() */ public void setAlertValue(String alertValue) { setValue(alertValue); } /** * Set the value of the alert * @param alertValue A value that represents the alert's content beyond type and standardized description */ public void setValue(String alertValue) { this.alertValue = alertValue; } /** * Get the description of the notification contents * @param description A class constant from the appropriate class of the taxonomy package, corresponding to the alertType */ public String getDescription() { return description; } /** * Get the description of the notification contents * @param description A class constant from the appropriate class of the taxonomy package, corresponding to the alertType * @deprecated Replace with getDescription() */ public String getAlertDesc() { return getDescription(); } /** * Set the description of the notification contents * @param description Use a class constant from the appropriate class of the taxonomy package, corresponding to the alertType * @deprecated Replace with setDescription() */ public void setAlertDesc(String description) { setDescription(description); } /** * Set the description of the notification contents * @param description Use a class constant from the appropriate class of the taxonomy package, corresponding to the alertType */ public void setDescription(String description) { this.description = description; } /** * Get the threatID associated with the message, as it is found in the SVRS. * @return The threatID (UUID format), or null if not set */ public String getThreatId() { return threatId; } /** * Get the threatID associated with the message, as it is found in the SVRS. * @return The threatID (UUID format), or null if not set * @deprecated Replace with getThreatId() */ public String getAlertThreatId() { return getThreatId(); } /** * Set a threat ID for the object * @param alertThreatId A threat ID as it is found in the SVRS * @deprecated Replace with setThreatId() */ public void setAlertThreatId(String alertThreatId) { setThreatId(alertThreatId); } /** * Set a threat ID for the object * @param alertThreatId A threat ID as it is found in the SVRS */ public void setThreatId(String alertThreatId) { this.threatId = alertThreatId; } /** * Returns a value that indicates the importance of this notification. * @return An integer on an integer range where 1 is least important */ public int getImportance() { return importance; } /** * Returns a value that indicates the importance of this notification. * @return An integer on an integer range where 1 is least important * @deprecated Replace with getImportance() */ public int getAlertThreshold() { return getImportance(); } /** * Set the importance value of this notification. * @param alertThreshold An integer >0 which represents the relative importance * @deprecated Replace with setImportance() */ public void setAlertThreshold(int alertThreshold) { setImportance(alertThreshold); } /** * Set the importance value of this notification. * @param importance An integer >0 which represents the relative importance */ public void setImportance(int importance) { this.importance = importance; } /** * When used with the ActiveMQ message broker, a notification represents a specific topic. * This method returns the topic ID in which the notification will be found * @return The topic ID which can be for subscribing to messages of this same category */ public String getTopicId() { String alertId = serviceId; if (alertType != null) { alertId += "." + alertType; if (description != null && !alertType.equals(">")) alertId += "." + description; } else { alertId = "pub"; } return alertId; } /** * Returns the time from the Notification server when it was received * @return String containing the time (incl. milliseconds) */ public String getServerTime() { return serverTime; } /** * Set the time from the Notification server when it was received * @param The server time */ public void setServerTime(String serverTime) { this.serverTime = serverTime; } /** * Returns the unique JMS message ID assigned by the ActiveMQ message broker. * @return The JMS message ID if set, null if empty */ public String getMessageId() { return messageId; } /** * Set a unique JMS message ID as assigned by the ActiveMQ message broker. */ public void setMessageId(String messageId) { this.messageId = messageId; } /** * Initialize the object fields. */ private void initObj() { alertValue = null; description = null; alertType = null; threatId = null; serviceId = null; importance = 1; messageId = null; } }