Adding network-prioritization-network
[ccsdk/features.git] / lib / network-prioritization / src / main / java / org / onap / ccsdk / features / lib / npm / models / NpmTransaction.java
diff --git a/lib/network-prioritization/src/main/java/org/onap/ccsdk/features/lib/npm/models/NpmTransaction.java b/lib/network-prioritization/src/main/java/org/onap/ccsdk/features/lib/npm/models/NpmTransaction.java
new file mode 100644 (file)
index 0000000..297d63b
--- /dev/null
@@ -0,0 +1,204 @@
+/*\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP : ccsdk features\r
+ * ================================================================================\r
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=======================================================\r
+ *\r
+ */\r
+\r
+package org.onap.ccsdk.features.lib.npm.models;\r
+\r
+import org.onap.ccsdk.features.lib.npm.NpmException;\r
+import org.onap.ccsdk.features.lib.npm.utils.NpmUtils;\r
+import org.apache.commons.lang3.StringUtils;\r
+\r
+import java.time.Instant;\r
+import java.util.Objects;\r
+import java.util.UUID;\r
+\r
+/**\r
+ * The type Npm Transaction.\r
+ *\r
+ * @author Kapil Singal\r
+ */\r
+public class NpmTransaction {\r
+\r
+    private UUID npmTransactionId;\r
+    private String requestId; // multiple transactions can have the same requestId\r
+\r
+    private String sbEndpoint;\r
+    private String sbType;\r
+\r
+    private int priority = -1;\r
+    private int connectionCount = 1;\r
+\r
+    private Instant timestamp = Instant.now();\r
+    private Instant timeToLive = Instant.MAX;\r
+\r
+    private NpmStatusEnum status = NpmStatusEnum.RECEIVED;\r
+    private String message;\r
+\r
+    private String serviceKey;\r
+    private Object serviceRequest;\r
+\r
+    public UUID getNpmTransactionId() {\r
+        return npmTransactionId;\r
+    }\r
+\r
+    public void setNpmTransactionId(UUID npmTransactionId) {\r
+        this.npmTransactionId = npmTransactionId;\r
+    }\r
+\r
+    public String getRequestId() {\r
+        return requestId;\r
+    }\r
+\r
+    public void setRequestId(String requestId) {\r
+        this.requestId = requestId;\r
+    }\r
+\r
+    public String getSbEndpoint() {\r
+        return sbEndpoint;\r
+    }\r
+\r
+    public void setSbEndpoint(String sbEndpoint) {\r
+        this.sbEndpoint = sbEndpoint;\r
+    }\r
+\r
+    public String getSbType() {\r
+        return sbType;\r
+    }\r
+\r
+    public void setSbType(String sbType) {\r
+        this.sbType = sbType;\r
+    }\r
+\r
+    public int getPriority() {\r
+        return priority;\r
+    }\r
+\r
+    public void setPriority(int priority) {\r
+        this.priority = priority;\r
+    }\r
+\r
+    public int getConnectionCount() {\r
+        return connectionCount;\r
+    }\r
+\r
+    public void setConnectionCount(int connectionCount) {\r
+        this.connectionCount = connectionCount;\r
+    }\r
+\r
+    public Instant getTimestamp() {\r
+        return timestamp;\r
+    }\r
+\r
+    public void setTimestamp(Instant timestamp) {\r
+        this.timestamp = timestamp;\r
+    }\r
+\r
+    public Instant getTimeToLive() {\r
+        return timeToLive;\r
+    }\r
+\r
+    public void setTimeToLive(Instant timeToLive) {\r
+        this.timeToLive = timeToLive;\r
+    }\r
+\r
+    public NpmStatusEnum getStatus() {\r
+        return status;\r
+    }\r
+\r
+    public void setStatus(NpmStatusEnum status) {\r
+        this.status = status;\r
+    }\r
+\r
+    public String getMessage() {\r
+        return message;\r
+    }\r
+\r
+    public void setMessage(String message) {\r
+        this.message = message;\r
+    }\r
+\r
+    public String getServiceKey() {\r
+        return serviceKey;\r
+    }\r
+\r
+    public void setServiceKey(String serviceKey) {\r
+        this.serviceKey = serviceKey;\r
+    }\r
+\r
+    public Object getServiceRequest() {\r
+        return serviceRequest;\r
+    }\r
+\r
+    public void setServiceRequest(Object serviceRequest) {\r
+        this.serviceRequest = serviceRequest;\r
+    }\r
+\r
+    /**\r
+     * Validate boolean.\r
+     *\r
+     * @throws NpmException the validator exception\r
+     */\r
+    public void validate() throws NpmException {\r
+        if (npmTransactionId == null) {\r
+            throw new NpmException("Transaction is not valid: npmTransactionId is required.");\r
+        }\r
+        if (StringUtils.isBlank(sbEndpoint)) {\r
+            throw new NpmException("Transaction is not valid: sbEndpoint is required.");\r
+        }\r
+        if (StringUtils.isBlank(sbType)) {\r
+            throw new NpmException("Transaction is not valid: sbType is required.");\r
+        }\r
+        if (timestamp == null) {\r
+            throw new NpmException("Transaction is not valid: txTimestamp is required.");\r
+        }\r
+        if (timeToLive == null) {\r
+            throw new NpmException("Transaction is not valid: timeToLive is required.");\r
+        }\r
+        if (StringUtils.isBlank(serviceKey)) {\r
+            throw new NpmException("Transaction is not valid: serviceKey is required.");\r
+        }\r
+        if (serviceRequest == null) {\r
+            throw new NpmException("Transaction is not valid: serviceRequest is required.");\r
+        }\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return NpmUtils.getJson(this);\r
+    }\r
+\r
+    @Override\r
+    public boolean equals(Object o) {\r
+        if (this == o) {\r
+            return true;\r
+        }\r
+        if (!(o instanceof NpmTransaction)) {\r
+            return false;\r
+        }\r
+        NpmTransaction that = (NpmTransaction) o;\r
+        return npmTransactionId.equals(that.npmTransactionId);\r
+    }\r
+\r
+    @Override\r
+    public int hashCode() {\r
+        return Math.abs(Objects.hash(npmTransactionId));\r
+    }\r
+\r
+}\r