Initial TCA commit into DCAEGEN2
[dcaegen2/analytics/tca.git] / dcae-analytics-cdap-common / src / main / java / org / openecomp / dcae / apod / analytics / cdap / common / persistance / tca / TCAMessageStatusEntity.java
diff --git a/dcae-analytics-cdap-common/src/main/java/org/openecomp/dcae/apod/analytics/cdap/common/persistance/tca/TCAMessageStatusEntity.java b/dcae-analytics-cdap-common/src/main/java/org/openecomp/dcae/apod/analytics/cdap/common/persistance/tca/TCAMessageStatusEntity.java
new file mode 100644 (file)
index 0000000..c529e55
--- /dev/null
@@ -0,0 +1,555 @@
+/*
+ * ===============================LICENSE_START======================================
+ *  dcae-analytics
+ * ================================================================================
+ *    Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *          http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  ============================LICENSE_END===========================================
+ */
+
+package org.openecomp.dcae.apod.analytics.cdap.common.persistance.tca;
+
+import org.apache.hadoop.io.Writable;
+import org.apache.hadoop.io.WritableUtils;
+import org.openecomp.dcae.apod.analytics.model.domain.cef.EventSeverity;
+import org.openecomp.dcae.apod.analytics.model.domain.policy.tca.Direction;
+import org.openecomp.dcae.apod.analytics.model.domain.policy.tca.TCAPolicy;
+import org.openecomp.dcae.apod.analytics.tca.processor.TCACEFJsonProcessor;
+import org.openecomp.dcae.apod.analytics.tca.processor.TCACEFPolicyDomainFilter;
+import org.openecomp.dcae.apod.analytics.tca.processor.TCACEFPolicyFunctionalRoleFilter;
+import org.openecomp.dcae.apod.analytics.tca.processor.TCACEFPolicyThresholdsProcessor;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.io.Serializable;
+
+/**
+ * TCA Message Status is an Entity which is used to persist TCA VES Message status information in Message Status Table
+ *
+ * @author Rajiv Singla . Creation Date: 11/16/2016.
+ */
+public class TCAMessageStatusEntity implements Writable, Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private long creationTS;
+    private int instanceId;
+    private String messageType;
+    private String vesMessage;
+    private String domain;
+    private String functionalRole;
+    private String thresholdPath;
+    private String thresholdSeverity;
+    private String thresholdDirection;
+    private Long thresholdValue;
+    private String jsonProcessorStatus;
+    private String jsonProcessorMessage;
+    private String domainFilterStatus;
+    private String domainFilterMessage;
+    private String functionalRoleFilterStatus;
+    private String functionalRoleFilterMessage;
+    private String thresholdCalculatorStatus;
+    private String thresholdCalculatorMessage;
+    private String alertMessage;
+
+    /**
+     * No Arg constructor required for Jackson Json Serialization / Deserialization
+     */
+    public TCAMessageStatusEntity() {
+        // no argument constructor required for json serialization / deserialization
+    }
+
+    /**
+     * Create new Instance of {@link TCAMessageStatusEntity}
+     *
+     * @param creationTS creation Timestamp
+     * @param instanceId CDAP flowlet instance ID
+     * @param messageType {@link TCACalculatorMessageType}
+     * @param vesMessage incoming VES message from collector
+     * @param domain VES message domain if present
+     * @param functionalRole VES message functional role if present
+     */
+    public TCAMessageStatusEntity(final long creationTS, final int instanceId, final String messageType,
+                                  final String vesMessage, final String domain, final String functionalRole) {
+        this(creationTS, instanceId, messageType, vesMessage, domain, functionalRole, null, null, null, null,
+                null, null, null, null, null, null, null, null, null);
+    }
+
+
+    /**
+     * Create new Instance of {@link TCAMessageStatusEntity}
+     *
+     * @param creationTS creation Timestamp
+     * @param instanceId CDAP flowlet instance ID
+     * @param messageType {@link TCACalculatorMessageType}
+     * @param vesMessage incoming VES message from collector
+     * @param domain VES message domain if present
+     * @param functionalRole VES message functional role if present
+     * @param thresholdPath Violated threshold path
+     * @param thresholdSeverity Violated threshold Severity if any
+     * @param thresholdDirection Violated threshold Direction if any
+     * @param thresholdValue Violated threshold value if any
+     * @param jsonProcessorStatus {@link TCACEFJsonProcessor} status
+     * @param jsonProcessorMessage {@link TCACEFJsonProcessor} message
+     * @param domainFilterStatus {@link TCACEFPolicyDomainFilter} status
+     * @param domainFilterMessage {@link TCACEFPolicyDomainFilter} message
+     * @param functionalRoleFilterStatus
+     * {@link TCACEFPolicyFunctionalRoleFilter} status
+     * @param functionalRoleFilterMessage
+     * {@link TCACEFPolicyFunctionalRoleFilter} message
+     * @param thresholdCalculatorStatus
+     * {@link TCACEFPolicyThresholdsProcessor} status
+     * @param thresholdCalculatorMessage
+     * {@link TCACEFPolicyThresholdsProcessor} message
+     * @param alertMessage alert message that will be sent out in case of threshold violation
+     */
+    public TCAMessageStatusEntity(long creationTS, int instanceId, String messageType, String vesMessage,
+                                  String domain, String functionalRole,
+                                  String thresholdPath, String thresholdSeverity, String thresholdDirection,
+                                  Long thresholdValue,
+                                  String jsonProcessorStatus, String jsonProcessorMessage,
+                                  String domainFilterStatus, String domainFilterMessage,
+                                  String functionalRoleFilterStatus, String functionalRoleFilterMessage,
+                                  String thresholdCalculatorStatus, String thresholdCalculatorMessage,
+                                  String alertMessage) {
+        this.creationTS = creationTS;
+        this.instanceId = instanceId;
+        this.messageType = messageType;
+        this.vesMessage = vesMessage;
+        this.domain = domain;
+        this.functionalRole = functionalRole;
+        this.thresholdPath = thresholdPath;
+        this.thresholdSeverity = thresholdSeverity;
+        this.thresholdDirection = thresholdDirection;
+        this.thresholdValue = thresholdValue;
+        this.jsonProcessorStatus = jsonProcessorStatus;
+        this.jsonProcessorMessage = jsonProcessorMessage;
+        this.domainFilterStatus = domainFilterStatus;
+        this.domainFilterMessage = domainFilterMessage;
+        this.functionalRoleFilterStatus = functionalRoleFilterStatus;
+        this.functionalRoleFilterMessage = functionalRoleFilterMessage;
+        this.thresholdCalculatorStatus = thresholdCalculatorStatus;
+        this.thresholdCalculatorMessage = thresholdCalculatorMessage;
+        this.alertMessage = alertMessage;
+    }
+
+    /**
+     * Provides Creation Timestamp
+     *
+     * @return creation timestamp long value
+     */
+    public long getCreationTS() {
+        return creationTS;
+    }
+
+    /**
+     * Sets Creations Timestamp
+     *
+     * @param creationTS creation timestamp long value
+     */
+    public void setCreationTS(long creationTS) {
+        this.creationTS = creationTS;
+    }
+
+
+    /**
+     * Provides CDAP Flowlet instance ID
+     *
+     * @return cdap flowlet instance ID
+     */
+    public int getInstanceId() {
+        return instanceId;
+    }
+
+    /**
+     * Sets CDAP Flowlet instance ID
+     *
+     * @param instanceId flowlet instance ID
+     */
+    public void setInstanceId(int instanceId) {
+        this.instanceId = instanceId;
+    }
+
+    /**
+     * Provides Message Calculator Type {@link TCACalculatorMessageType}
+     *
+     * @return calculator message type
+     */
+    public String getMessageType() {
+        return messageType;
+    }
+
+    /**
+     * Sets Calculator message Type {@link TCACalculatorMessageType}
+     *
+     * @param messageType calculator message type
+     */
+    public void setMessageType(String messageType) {
+        this.messageType = messageType;
+    }
+
+    /**
+     * Provides incoming VES Message
+     *
+     * @return ves message
+     */
+    public String getVesMessage() {
+        return vesMessage;
+    }
+
+    /**
+     * Set new value for VES message
+     *
+     * @param vesMessage ves message
+     */
+    public void setVesMessage(String vesMessage) {
+        this.vesMessage = vesMessage;
+    }
+
+    /**
+     * Provides VES message Domain
+     *
+     * @return ves message domain
+     */
+    public String getDomain() {
+        return domain;
+    }
+
+    /**
+     * Sets VES Message Domain
+     *
+     * @param domain ves message domain
+     */
+    public void setDomain(String domain) {
+        this.domain = domain;
+    }
+
+    /**
+     * Provides VES Message Functional Role
+     *
+     * @return ves message functional role
+     */
+    public String getFunctionalRole() {
+        return functionalRole;
+    }
+
+    /**
+     * Sets VES Message Functional Role
+     *
+     * @param functionalRole ves message Functional Role
+     */
+    public void setFunctionalRole(String functionalRole) {
+        this.functionalRole = functionalRole;
+    }
+
+    /**
+     * Violated Threshold Path as extracted from {@link TCAPolicy}
+     *
+     * @return violated threshold path
+     */
+    public String getThresholdPath() {
+        return thresholdPath;
+    }
+
+    /**
+     * Sets value for Violated Threshold Path
+     *
+     * @param thresholdPath violated threshold path
+     */
+    public void setThresholdPath(String thresholdPath) {
+        this.thresholdPath = thresholdPath;
+    }
+
+    /**
+     * Violated threshold {@link EventSeverity}
+     *
+     * @return event severity
+     */
+    public String getThresholdSeverity() {
+        return thresholdSeverity;
+    }
+
+    /**
+     * Violated Threshold Severity
+     *
+     * @param thresholdSeverity violated threshold severity
+     */
+    public void setThresholdSeverity(String thresholdSeverity) {
+        this.thresholdSeverity = thresholdSeverity;
+    }
+
+    /**
+     * Violated Threshold {@link Direction}
+     *
+     * @return violated threshold Direction
+     */
+    public String getThresholdDirection() {
+        return thresholdDirection;
+    }
+
+    /**
+     * Sets Violated Threshold Direction
+     *
+     * @param thresholdDirection violated threshold direction
+     */
+    public void setThresholdDirection(String thresholdDirection) {
+        this.thresholdDirection = thresholdDirection;
+    }
+
+    /**
+     * Provides Violated Threshold Value
+     *
+     * @return violated Threshold value
+     */
+    public Long getThresholdValue() {
+        return thresholdValue;
+    }
+
+    /**
+     * Sets Violated Threshold Value
+     *
+     * @param thresholdValue violated threshold value
+     */
+    public void setThresholdValue(Long thresholdValue) {
+        this.thresholdValue = thresholdValue;
+    }
+
+    /**
+     * Provides {@link TCACEFJsonProcessor} status
+     *
+     * @return json processor status
+     */
+    public String getJsonProcessorStatus() {
+        return jsonProcessorStatus;
+    }
+
+    /**
+     * Sets Json Processor status
+     *
+     * @param jsonProcessorStatus json processor status
+     */
+    public void setJsonProcessorStatus(String jsonProcessorStatus) {
+        this.jsonProcessorStatus = jsonProcessorStatus;
+    }
+
+    /**
+     * Provides {@link TCACEFJsonProcessor} message
+     *
+     * @return json processor message
+     */
+    public String getJsonProcessorMessage() {
+        return jsonProcessorMessage;
+    }
+
+    /**
+     * Sets Json Processor Message
+     *
+     * @param jsonProcessorMessage json processor message
+     */
+    public void setJsonProcessorMessage(String jsonProcessorMessage) {
+        this.jsonProcessorMessage = jsonProcessorMessage;
+    }
+
+    /**
+     * Provides {@link TCACEFPolicyDomainFilter} status
+     *
+     * @return domain filter status
+     */
+    public String getDomainFilterStatus() {
+        return domainFilterStatus;
+    }
+
+    /**
+     * Sets Domain Filter status
+     *
+     * @param domainFilterStatus domain filter status
+     */
+    public void setDomainFilterStatus(String domainFilterStatus) {
+        this.domainFilterStatus = domainFilterStatus;
+    }
+
+    /**
+     * Provides {@link TCACEFPolicyDomainFilter} message
+     *
+     * @return domain filter message
+     */
+    public String getDomainFilterMessage() {
+        return domainFilterMessage;
+    }
+
+    /**
+     * Sets Domain filter message
+     *
+     * @param domainFilterMessage domain filter message
+     */
+    public void setDomainFilterMessage(String domainFilterMessage) {
+        this.domainFilterMessage = domainFilterMessage;
+    }
+
+    public String getFunctionalRoleFilterStatus() {
+        return functionalRoleFilterStatus;
+    }
+
+    /**
+     * Provides {@link TCACEFPolicyFunctionalRoleFilter} status
+     *
+     * @param functionalRoleFilterStatus functional Role filter status
+     */
+    public void setFunctionalRoleFilterStatus(String functionalRoleFilterStatus) {
+        this.functionalRoleFilterStatus = functionalRoleFilterStatus;
+    }
+
+    /**
+     * Provides {@link TCACEFPolicyFunctionalRoleFilter} message
+     *
+     * @return functional role filter message
+     */
+    public String getFunctionalRoleFilterMessage() {
+        return functionalRoleFilterMessage;
+    }
+
+    /**
+     * Sets Functional Role filter message
+     *
+     * @param functionalRoleFilterMessage functional role filter message
+     */
+    public void setFunctionalRoleFilterMessage(String functionalRoleFilterMessage) {
+        this.functionalRoleFilterMessage = functionalRoleFilterMessage;
+    }
+
+    /**
+     * Provides {@link TCACEFPolicyThresholdsProcessor} status
+     *
+     * @return threshold processor status
+     */
+    public String getThresholdCalculatorStatus() {
+        return thresholdCalculatorStatus;
+    }
+
+    /**
+     * Sets threshold calculator status
+     *
+     * @param thresholdCalculatorStatus threshold calculator status
+     */
+    public void setThresholdCalculatorStatus(String thresholdCalculatorStatus) {
+        this.thresholdCalculatorStatus = thresholdCalculatorStatus;
+    }
+
+    /**
+     * Provides {@link TCACEFPolicyThresholdsProcessor} message
+     *
+     * @return threshold processor message
+     */
+    public String getThresholdCalculatorMessage() {
+        return thresholdCalculatorMessage;
+    }
+
+    /**
+     * Sets Threshold Calculator Processor Message
+     *
+     * @param thresholdCalculatorMessage threshold calculator message
+     */
+    public void setThresholdCalculatorMessage(String thresholdCalculatorMessage) {
+        this.thresholdCalculatorMessage = thresholdCalculatorMessage;
+    }
+
+    /**
+     * Provides generated alert message
+     *
+     * @return generated alert message
+     */
+    public String getAlertMessage() {
+        return alertMessage;
+    }
+
+    /**
+     * Sets alert message
+     *
+     * @param alertMessage alert message
+     */
+    public void setAlertMessage(String alertMessage) {
+        this.alertMessage = alertMessage;
+    }
+
+    /**
+     * Write entity to Table
+     *
+     * @param dataOutput data output
+     *
+     * @throws IOException io exception
+     */
+    @Override
+    public void write(DataOutput dataOutput) throws IOException {
+        WritableUtils.writeVLong(dataOutput, creationTS);
+        WritableUtils.writeVInt(dataOutput, instanceId);
+        WritableUtils.writeString(dataOutput, messageType);
+        WritableUtils.writeString(dataOutput, vesMessage);
+
+        WritableUtils.writeString(dataOutput, domain);
+        WritableUtils.writeString(dataOutput, functionalRole);
+
+        WritableUtils.writeString(dataOutput, thresholdPath);
+        WritableUtils.writeString(dataOutput, thresholdSeverity);
+        WritableUtils.writeString(dataOutput, thresholdDirection);
+        WritableUtils.writeVLong(dataOutput, thresholdValue);
+
+        WritableUtils.writeString(dataOutput, jsonProcessorStatus);
+        WritableUtils.writeString(dataOutput, jsonProcessorMessage);
+        WritableUtils.writeString(dataOutput, domainFilterStatus);
+        WritableUtils.writeString(dataOutput, domainFilterMessage);
+        WritableUtils.writeString(dataOutput, functionalRoleFilterStatus);
+        WritableUtils.writeString(dataOutput, functionalRoleFilterMessage);
+        WritableUtils.writeString(dataOutput, thresholdCalculatorStatus);
+        WritableUtils.writeString(dataOutput, thresholdCalculatorMessage);
+
+        WritableUtils.writeString(dataOutput, alertMessage);
+
+    }
+
+    /**
+     * Read entity from table
+     *
+     * @param dataInput data input
+     * @throws IOException io exception
+     */
+    @Override
+    public void readFields(DataInput dataInput) throws IOException {
+        creationTS = WritableUtils.readVLong(dataInput);
+        instanceId = WritableUtils.readVInt(dataInput);
+        messageType = WritableUtils.readString(dataInput);
+        vesMessage = WritableUtils.readString(dataInput);
+
+        domain = WritableUtils.readString(dataInput);
+        functionalRole = WritableUtils.readString(dataInput);
+
+        thresholdPath = WritableUtils.readString(dataInput);
+        thresholdSeverity = WritableUtils.readString(dataInput);
+        thresholdDirection = WritableUtils.readString(dataInput);
+        thresholdValue = WritableUtils.readVLong(dataInput);
+
+        jsonProcessorStatus = WritableUtils.readString(dataInput);
+        jsonProcessorMessage = WritableUtils.readString(dataInput);
+        domainFilterStatus = WritableUtils.readString(dataInput);
+        domainFilterMessage = WritableUtils.readString(dataInput);
+        functionalRoleFilterStatus = WritableUtils.readString(dataInput);
+        functionalRoleFilterMessage = WritableUtils.readString(dataInput);
+        thresholdCalculatorStatus = WritableUtils.readString(dataInput);
+        thresholdCalculatorMessage = WritableUtils.readString(dataInput);
+
+        alertMessage = WritableUtils.readString(dataInput);
+
+    }
+
+}