Merge the POMBA code to ONAP AAI data router
[aai/data-router.git] / src / main / java / org / onap / aai / datarouter / entity / POAServiceInstanceEntity.java
diff --git a/src/main/java/org/onap/aai/datarouter/entity/POAServiceInstanceEntity.java b/src/main/java/org/onap/aai/datarouter/entity/POAServiceInstanceEntity.java
new file mode 100644 (file)
index 0000000..419db87
--- /dev/null
@@ -0,0 +1,173 @@
+/**\r
+ * ============LICENSE_START=======================================================\r
+ * org.onap.aai\r
+ * ================================================================================\r
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.\r
+ * Copyright © 2017-2018 Amdocs\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
+package org.onap.aai.datarouter.entity;\r
+\r
+import com.google.gson.Gson;\r
+import com.google.gson.GsonBuilder;\r
+import javax.ws.rs.core.Response.Status;\r
+import org.onap.aai.cl.api.Logger;\r
+import org.onap.aai.cl.eelf.LoggerFactory;\r
+import org.onap.aai.datarouter.exception.POAAuditException;\r
+import org.onap.aai.datarouter.logging.DataRouterMsgs;\r
+import org.onap.aai.datarouter.service.AuditService;\r
+\r
+/**\r
+ * This class includes the POMBA rest call message body which triggers the audit process\r
+ *\r
+ */\r
+public class POAServiceInstanceEntity\r
+{\r
+    private static final String ATTR_SERVICE_INST_ID = "serviceInstanceId";\r
+    private static final String ATTR_SERVICE_TYPE = "serviceType";\r
+    private static final String ATTR_MODEL_VERSION_ID = "modelVersionId";\r
+    private static final String ATTR_MODEL_INVARIANT_ID = "modelInvariantId";\r
+    private static final String ATTR_CUSTOMER_ID = "customerId";\r
+\r
+    private static final Gson gson = new GsonBuilder().disableHtmlEscaping().create();\r
+\r
+    private String xFromAppId;\r
+    private String xTransactionId;\r
+    private String serviceInstanceId;\r
+    private String serviceType;\r
+    private String modelVersionId;\r
+    private String modelInvariantId;\r
+    private String customerId;\r
+\r
+    private static Logger logger = LoggerFactory.getInstance().getLogger(POAServiceInstanceEntity.class.getName());\r
+\r
+\r
+    public String getxFromAppId() {\r
+        return xFromAppId;\r
+    }\r
+\r
+    public void setxFromAppId(String xFromAppId) {\r
+        this.xFromAppId = xFromAppId;\r
+    }\r
+\r
+    public String getxTransactionId() {\r
+        return xTransactionId;\r
+    }\r
+\r
+    public void setxTransactionId(String xTransactionId) {\r
+        this.xTransactionId = xTransactionId;\r
+    }\r
+\r
+    public String getServiceInstanceId() {\r
+        return serviceInstanceId;\r
+    }\r
+\r
+    public void setServiceInstanceId(String serviceInstanceId) {\r
+        this.serviceInstanceId = serviceInstanceId;\r
+    }\r
+\r
+    public String getServiceType() {\r
+        return serviceType;\r
+    }\r
+\r
+    public void setServiceType(String serviceType) {\r
+        this.serviceType = serviceType;\r
+    }\r
+\r
+    public String getModelVersionId() {\r
+        return modelVersionId;\r
+    }\r
+\r
+    public void setModelVersionId(String modelVersionId) {\r
+        this.modelVersionId = modelVersionId;\r
+    }\r
+\r
+    public String getModelInvariantId() {\r
+        return modelInvariantId;\r
+    }\r
+\r
+    public void setModelInvariantId(String modelInvariantId) {\r
+        this.modelInvariantId = modelInvariantId;\r
+    }\r
+\r
+    public String getCustomerId() {\r
+        return customerId;\r
+    }\r
+\r
+    public void setCustomerId(String customerId) {\r
+        this.customerId = customerId;\r
+    }\r
+\r
+\r
+    public String toJson() {\r
+        return gson.toJson(this);\r
+    }\r
+\r
+\r
+    public static POAServiceInstanceEntity fromJson(String payload) throws POAAuditException {\r
+\r
+        if (payload == null || payload.isEmpty()) {\r
+            throw new POAAuditException("Invalid Json Payload", Status.BAD_REQUEST);\r
+        }\r
+\r
+        try {\r
+            return gson.fromJson(payload, POAServiceInstanceEntity.class);\r
+        } catch (Exception ex) {\r
+            logger.debug("Invalid Json Payload: " + payload);\r
+            throw new POAAuditException("Invalid Json Payload", Status.BAD_REQUEST, DataRouterMsgs.BAD_REST_REQUEST, ex.getMessage());\r
+        }\r
+    }\r
+\r
+\r
+    /**\r
+     * Validates this service instance; only the attributes that are expected in request body are verified.\r
+     * @throws POAAuditException if the service instance is invalid\r
+     */\r
+    public void validate() throws POAAuditException {\r
+\r
+        if(serviceInstanceId == null || serviceInstanceId.isEmpty()) {\r
+            String error = "Missing attribute: " + ATTR_SERVICE_INST_ID;\r
+            throw new POAAuditException(error, Status.BAD_REQUEST, DataRouterMsgs.BAD_REST_REQUEST, error);\r
+        }\r
+\r
+        if(serviceType == null || serviceType.isEmpty()) {\r
+            String error = "Missing attribute: " + ATTR_SERVICE_TYPE;\r
+            throw new POAAuditException(error, Status.BAD_REQUEST, DataRouterMsgs.BAD_REST_REQUEST, error);\r
+        }\r
+\r
+        if(modelVersionId == null || modelVersionId.isEmpty()) {\r
+            String error = "Missing attribute: " + ATTR_MODEL_VERSION_ID;\r
+            throw new POAAuditException(error, Status.BAD_REQUEST, DataRouterMsgs.BAD_REST_REQUEST, error);\r
+        }\r
+\r
+        if(modelInvariantId == null || modelInvariantId.isEmpty()) {\r
+            String error = "Missing attribute: " + ATTR_MODEL_INVARIANT_ID;\r
+            throw new POAAuditException(error, Status.BAD_REQUEST, DataRouterMsgs.BAD_REST_REQUEST, error);\r
+        }\r
+\r
+        if(customerId == null || customerId.isEmpty()) {\r
+            String error = "Missing attribute: " + ATTR_CUSTOMER_ID;\r
+            throw new POAAuditException(error, Status.BAD_REQUEST, DataRouterMsgs.BAD_REST_REQUEST, error);\r
+        }\r
+    }\r
+\r
+\r
+    @Override\r
+    public String toString() {\r
+        return "ServiceInstance [xFromAppId=" + xFromAppId + ", xTransactionId=" + xTransactionId\r
+                + ", serviceInstanceId=" + serviceInstanceId + ", serviceType=" + serviceType + ", modelVersionId="\r
+                + modelVersionId + ", modelInvariantId=" + modelInvariantId + ", customerId=" + customerId + "]";\r
+    }\r
+}\r