Merge "Reorder modifiers"
[so.git] / adapters / mso-requests-db-adapter / src / main / java / org / openecomp / mso / adapters / requestsdb / MsoRequestsDbAdapterImpl.java
index a5e9690..3dcf69c 100644 (file)
 package org.openecomp.mso.adapters.requestsdb;
 
 import java.sql.Timestamp;
-import java.util.List;
 
 import javax.jws.WebService;
 
-import org.openecomp.mso.requestsdb.SiteStatus;
-import org.openecomp.mso.utils.UUIDChecker;
 import org.hibernate.HibernateException;
 import org.hibernate.Query;
 import org.hibernate.Session;
-
 import org.openecomp.mso.adapters.requestsdb.exceptions.MsoRequestsDbException;
+import org.openecomp.mso.db.AbstractSessionFactoryManager;
 import org.openecomp.mso.logger.MessageEnum;
 import org.openecomp.mso.logger.MsoLogger;
-import org.openecomp.mso.db.AbstractSessionFactoryManager;
-import org.openecomp.mso.requestsdb.RequestsDbSessionFactoryManager;
 import org.openecomp.mso.requestsdb.InfraActiveRequests;
+import org.openecomp.mso.requestsdb.OperationStatus;
+import org.openecomp.mso.requestsdb.RequestsDatabase;
+import org.openecomp.mso.requestsdb.RequestsDbConstant;
+import org.openecomp.mso.requestsdb.RequestsDbSessionFactoryManager;
+import org.openecomp.mso.requestsdb.ResourceOperationStatus;
+import org.openecomp.mso.requestsdb.SiteStatus;
+import org.openecomp.mso.utils.UUIDChecker;
 
 @WebService(serviceName = "RequestsDbAdapter", endpointInterface = "org.openecomp.mso.adapters.requestsdb.MsoRequestsDbAdapter", targetNamespace = "http://org.openecomp.mso/requestsdb")
 public class MsoRequestsDbAdapterImpl implements MsoRequestsDbAdapter {
 
     protected AbstractSessionFactoryManager requestsDbSessionFactoryManager = new RequestsDbSessionFactoryManager ();
     
-    private static MsoLogger LOGGER = MsoLogger.getMsoLogger (MsoLogger.Catalog.RA);
+    private static MsoLogger logger = MsoLogger.getMsoLogger (MsoLogger.Catalog.RA);
 
     @Override
     public void updateInfraRequest (String requestId,
@@ -59,6 +61,8 @@ public class MsoRequestsDbAdapterImpl implements MsoRequestsDbAdapter {
                                     String vfModuleId,
                                     String volumeGroupId,
                                     String serviceInstanceName,
+                                    String configurationId,
+                                    String configurationName,
                                     String vfModuleName) throws MsoRequestsDbException {
         MsoLogger.setLogContext (requestId, null);
         Session session = requestsDbSessionFactoryManager.getSessionFactory ().openSession ();
@@ -66,134 +70,152 @@ public class MsoRequestsDbAdapterImpl implements MsoRequestsDbAdapter {
         long startTime = System.currentTimeMillis ();
         try {
                session.beginTransaction ();
-            String queryString = "update InfraActiveRequests set ";
+            StringBuilder queryString = new StringBuilder("update InfraActiveRequests set ");
             if (statusMessage != null) {
-                queryString += "statusMessage = :statusMessage, ";
+                queryString.append("statusMessage = :statusMessage, ");
             }
             if (responseBody != null) {
-                queryString += "responseBody = :responseBody, ";
+                queryString.append("responseBody = :responseBody, ");
             }
             if (requestStatus != null) {
-                queryString += "requestStatus = :requestStatus, ";
+                queryString.append("requestStatus = :requestStatus, ");
             }
             if (progress != null) {
-                queryString += "progress = :progress, ";
+                queryString.append("progress = :progress, ");
             }
             if (vnfOutputs != null) {
-                queryString += "vnfOutputs = :vnfOutputs, ";
+                queryString.append("vnfOutputs = :vnfOutputs, ");
             }
             if (serviceInstanceId != null) {
-                queryString += "serviceInstanceId = :serviceInstanceId, ";
+                queryString.append("serviceInstanceId = :serviceInstanceId, ");
             }
             if (networkId != null) {
-                queryString += "networkId = :networkId, ";
+                queryString.append("networkId = :networkId, ");
             }
             if (vnfId != null) {
-                queryString += "vnfId = :vnfId, ";
+                queryString.append("vnfId = :vnfId, ");
             }
             if (vfModuleId != null) {
-                queryString += "vfModuleId = :vfModuleId, ";
+                queryString.append("vfModuleId = :vfModuleId, ");
             }
             if (volumeGroupId != null) {
-                queryString += "volumeGroupId = :volumeGroupId, ";
+                queryString.append("volumeGroupId = :volumeGroupId, ");
             }
             if (serviceInstanceName != null) {
-                queryString += "serviceInstanceName = :serviceInstanceName, ";
+                queryString.append("serviceInstanceName = :serviceInstanceName, ");
             }
             if (vfModuleName != null) {
-                queryString += "vfModuleName = :vfModuleName, ";
+                queryString.append("vfModuleName = :vfModuleName, ");
+            }
+            if (configurationId != null) {
+                queryString.append("configurationId = :configurationId, ");
+            }
+            if (configurationName != null) {
+                queryString.append("configurationName = :configurationName, ");
             }
             if (requestStatus == RequestStatusType.COMPLETE || requestStatus == RequestStatusType.FAILED) {
-                queryString += "endTime = :endTime, ";
+                queryString.append("endTime = :endTime, ");
             } else {
-                queryString += "modifyTime = :modifyTime, ";
+                queryString.append("modifyTime = :modifyTime, ");
             }
-            queryString += "lastModifiedBy = :lastModifiedBy where requestId = :requestId OR clientRequestId = :requestId";
+            queryString.append("lastModifiedBy = :lastModifiedBy where requestId = :requestId OR clientRequestId = :requestId");
 
-            LOGGER.debug("Executing update: " + queryString);
+            logger.debug("Executing update: " + queryString.toString());
 
-            Query query = session.createQuery (queryString);
+            Query query = session.createQuery (queryString.toString());
             query.setParameter ("requestId", requestId);
             if (statusMessage != null) {
                 query.setParameter ("statusMessage", statusMessage);
-                LOGGER.debug ("StatusMessage in updateInfraRequest is set to: " + statusMessage);
+                logger.debug ("StatusMessage in updateInfraRequest is set to: " + statusMessage);
             }
             if (responseBody != null) {
                query.setParameter ("responseBody", responseBody);
-               LOGGER.debug ("ResponseBody in updateInfraRequest is set to: " + responseBody);
+                logger.debug ("ResponseBody in updateInfraRequest is set to: " + responseBody);
             }
             if (requestStatus != null) {
                 query.setParameter ("requestStatus", requestStatus.toString ());
-                LOGGER.debug ("RequestStatus in updateInfraRequest is set to: " + requestStatus.toString());
+                logger.debug ("RequestStatus in updateInfraRequest is set to: " + requestStatus.toString());
             }
 
             if (progress != null) {
                 query.setParameter ("progress", Long.parseLong (progress));
-                LOGGER.debug ("Progress in updateInfraRequest is set to: " + progress);
+                logger.debug ("Progress in updateInfraRequest is set to: " + progress);
             }
             if (vnfOutputs != null) {
                 query.setParameter ("vnfOutputs", vnfOutputs);
-                LOGGER.debug ("VnfOutputs in updateInfraRequest is set to: " + vnfOutputs);
+                logger.debug ("VnfOutputs in updateInfraRequest is set to: " + vnfOutputs);
             }
             if (serviceInstanceId != null) {
                 query.setParameter ("serviceInstanceId", serviceInstanceId);
-                LOGGER.debug ("ServiceInstanceId in updateInfraRequest is set to: " + serviceInstanceId);
+                logger.debug ("ServiceInstanceId in updateInfraRequest is set to: " + serviceInstanceId);
             }
             if (networkId != null) {
                 query.setParameter ("networkId", networkId);
-                LOGGER.debug ("NetworkId in updateInfraRequest is set to: " + networkId);
+                logger.debug ("NetworkId in updateInfraRequest is set to: " + networkId);
             }
             if (vnfId != null) {
                 query.setParameter ("vnfId", vnfId);
-                LOGGER.debug ("VnfId in updateInfraRequest is set to: " + vnfId);
+                logger.debug ("VnfId in updateInfraRequest is set to: " + vnfId);
             }
             if (vfModuleId != null) {
                 query.setParameter ("vfModuleId", vfModuleId);
-                LOGGER.debug ("vfModuleId in updateInfraRequest is set to: " + vfModuleId);
+                logger.debug ("vfModuleId in updateInfraRequest is set to: " + vfModuleId);
             }
             if (volumeGroupId != null) {
                 query.setParameter ("volumeGroupId", volumeGroupId);
-                LOGGER.debug ("VolumeGroupId in updateInfraRequest is set to: " + volumeGroupId);
+                logger.debug ("VolumeGroupId in updateInfraRequest is set to: " + volumeGroupId);
             }
             if (serviceInstanceName != null) {
                 query.setParameter ("serviceInstanceName", serviceInstanceName);
-                LOGGER.debug ("ServiceInstanceName in updateInfraRequest is set to: " + serviceInstanceName);
+                logger.debug ("ServiceInstanceName in updateInfraRequest is set to: " + serviceInstanceName);
             }
             if (vfModuleName != null) {
                 query.setParameter ("vfModuleName", vfModuleName);
-                LOGGER.debug ("vfModuleName in updateInfraRequest is set to: " + vfModuleName);
+                logger.debug ("vfModuleName in updateInfraRequest is set to: " + vfModuleName);
+            }
+            if (configurationId != null) {
+                query.setParameter ("configurationId", configurationId);
+                logger.debug ("configurationId in updateInfraRequest is set to: " + configurationId);
+            }
+            if (configurationName != null) {
+                query.setParameter ("configurationName", configurationName);
+                logger.debug ("configurationName in updateInfraRequest is set to: " + configurationName);
+            }
+            if (vfModuleName != null) {
+                query.setParameter ("vfModuleName", vfModuleName);
+                logger.debug ("vfModuleName in updateInfraRequest is set to: " + vfModuleName);
             }
             Timestamp nowTimeStamp = new Timestamp (System.currentTimeMillis ());
             if (requestStatus == RequestStatusType.COMPLETE || requestStatus == RequestStatusType.FAILED) {
                 query.setParameter ("endTime", nowTimeStamp);
-                LOGGER.debug ("EndTime in updateInfraRequest is set to: " + nowTimeStamp);
+                logger.debug ("EndTime in updateInfraRequest is set to: " + nowTimeStamp);
             } else {
                 query.setParameter ("modifyTime", nowTimeStamp);
-                LOGGER.debug ("ModifyTime in updateInfraRequest is set to: " + nowTimeStamp);
+                logger.debug ("ModifyTime in updateInfraRequest is set to: " + nowTimeStamp);
             }
             query.setParameter ("lastModifiedBy", lastModifiedBy);
-            LOGGER.debug ("LastModifiedBy in updateInfraRequest is set to: " + lastModifiedBy);
+            logger.debug ("LastModifiedBy in updateInfraRequest is set to: " + lastModifiedBy);
             result = query.executeUpdate ();
-            checkIfExists (result, requestId, startTime);
+            checkIfExists (result, requestId);
             session.getTransaction ().commit ();
         } catch (HibernateException e) {
             String error = "Unable to update MSO Requests DB: " + e.getMessage ();
-            LOGGER.error (MessageEnum.RA_CANT_UPDATE_REQUEST, "infra request parameters", requestId, "", "", MsoLogger.ErrorCode.BusinessProcesssError, "HibernateException - " + error, e);
-            LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, error);
+            logger.error (MessageEnum.RA_CANT_UPDATE_REQUEST, "infra request parameters", requestId, "", "", MsoLogger.ErrorCode.BusinessProcesssError, "HibernateException - " + error, e);
+            logger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, error);
             throw new MsoRequestsDbException (error, e);
         } finally {
             if (session != null && session.isOpen ()) {
                 session.close ();
             }
         }
-        LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
+        logger.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
     }
 
 
-    private void checkIfExists (int result, String requestId, long startTime) throws MsoRequestsDbException {
+    private void checkIfExists (int result, String requestId) throws MsoRequestsDbException {
         if (result == 0) {
             String error = "Request ID does not exist in MSO Requests DB: " + requestId;
-            LOGGER.error (MessageEnum.RA_DB_REQUEST_NOT_EXIST, requestId, "", "", MsoLogger.ErrorCode.DataError, error);
+            logger.error (MessageEnum.RA_DB_REQUEST_NOT_EXIST, requestId, "", "", MsoLogger.ErrorCode.DataError, error);
             throw new MsoRequestsDbException (error);
         }
     }
@@ -205,7 +227,7 @@ public class MsoRequestsDbAdapterImpl implements MsoRequestsDbAdapter {
         MsoLogger.setLogContext (requestId, null);
         Session session = requestsDbSessionFactoryManager.getSessionFactory ().openSession ();
 
-        LOGGER.debug ("Call to MSO Infra RequestsDb adapter get method with request Id: " + requestId);
+        logger.debug ("Call to MSO Infra RequestsDb adapter get method with request Id: " + requestId);
 
         InfraActiveRequests request = null;
         try {
@@ -216,15 +238,15 @@ public class MsoRequestsDbAdapterImpl implements MsoRequestsDbAdapter {
         } catch (HibernateException e) {
             String error = "Unable to retrieve MSO Infra Requests DB for Request ID "
                            + requestId;
-            LOGGER.error (MessageEnum.RA_DB_REQUEST_NOT_EXIST, "Get Infra request", requestId, "", "", MsoLogger.ErrorCode.BusinessProcesssError, "HibernateException - " + error, e);
-            LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, error);
+            logger.error (MessageEnum.RA_DB_REQUEST_NOT_EXIST, "Get Infra request", requestId, "", "", MsoLogger.ErrorCode.BusinessProcesssError, "HibernateException - " + error, e);
+            logger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, error);
             throw new MsoRequestsDbException (error, e);
         } finally {
             if (session != null && session.isOpen ()) {
                 session.close ();
             }
         }
-        LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
+        logger.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
         return request;
     }
 
@@ -235,13 +257,14 @@ public class MsoRequestsDbAdapterImpl implements MsoRequestsDbAdapter {
      * @param siteName The unique name of the site
      * @return Status of that site
      */
+    @Override
     public boolean getSiteStatus (String siteName) {
-        UUIDChecker.generateUUID (LOGGER);
+        UUIDChecker.generateUUID (logger);
         Session session = requestsDbSessionFactoryManager.getSessionFactory ().openSession ();
 
         long startTime = System.currentTimeMillis ();
         SiteStatus siteStatus = null;
-        LOGGER.debug ("Request database - get Site Status with Site name:" + siteName);
+        logger.debug ("Request database - get Site Status with Site name:" + siteName);
         try {
             String hql = "FROM SiteStatus WHERE siteName = :site_name";
             Query query = session.createQuery (hql);
@@ -255,11 +278,123 @@ public class MsoRequestsDbAdapterImpl implements MsoRequestsDbAdapter {
         }
         if (siteStatus == null) {
             // if not exist in DB, it means the site is not disabled, thus return true
-            LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
+            logger.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
             return true;
         } else {
-            LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
+            logger.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successful");
             return siteStatus.getStatus();
         }
     }
+    
+    /**
+     * update operation status
+     * <br>
+     * 
+     * @param serviceId
+     * @param operationId
+     * @param operationType
+     * @param userId
+     * @param result
+     * @param operationContent
+     * @param progress
+     * @param reason
+     * @throws MsoRequestsDbException
+     * @since   ONAP Amsterdam Release
+     */
+    @Override
+    public void updateServiceOperationStatus(String serviceId, String operationId, String operationType, String userId,
+            String result, String operationContent, String progress, String reason) throws MsoRequestsDbException {
+        OperationStatus operStatus = new OperationStatus();
+        operStatus.setServiceId(serviceId);
+        operStatus.setOperationId(operationId);
+        operStatus.setUserId(userId);
+        operStatus.setOperation(operationType);
+        operStatus.setReason(reason);
+        operStatus.setProgress(progress);
+        operStatus.setResult(result);
+        operStatus.setOperationContent(operationContent);
+        RequestsDatabase.getInstance().updateOperationStatus(operStatus);
+    }
+    
+    /**
+     * init the operation status of  all the resources 
+     * <br>
+     * 
+     * @param serviceId the service Id
+     * @param operationId the operation Id
+     * @param operationType the operationType
+     * @param resourceTemplateUUIDs the resources, the UUID is split by ":"
+     * @throws MsoRequestsDbException
+     * @since   ONAP Amsterdam Release
+     */
+    @Override
+    public void initResourceOperationStatus(String serviceId, String operationId, String operationType,
+            String resourceTemplateUUIDs) throws MsoRequestsDbException{
+        String[] resourceLst = resourceTemplateUUIDs.split(":");
+        for(String resource: resourceLst){
+            if("".equals(resource)){
+                continue;
+            }
+            ResourceOperationStatus resourceStatus = new ResourceOperationStatus();
+            resourceStatus.setOperationId(operationId);
+            resourceStatus.setServiceId(serviceId);
+            resourceStatus.setResourceTemplateUUID(resource);
+            resourceStatus.setOperType(operationType);
+            resourceStatus.setStatus(RequestsDbConstant.Status.PROCESSING);
+            resourceStatus.setStatusDescription("Waiting for start");
+            RequestsDatabase.getInstance().updateResOperStatus(resourceStatus);
+        }     
+    }
+    
+    /**
+     * get resource operation status
+     * <br>
+     * 
+     * @param serviceId
+     * @param operationId
+     * @param resourceTemplateUUID
+     * @return
+     * @throws MsoRequestsDbException
+     * @since   ONAP Amsterdam Release
+     */
+    @Override
+    public ResourceOperationStatus getResourceOperationStatus(String serviceId, String operationId, String resourceTemplateUUID)
+            throws MsoRequestsDbException {
+        return RequestsDatabase.getInstance().getResourceOperationStatus(serviceId, operationId, resourceTemplateUUID);
+    }
+    
+    /**
+     * update resource operation status
+     * <br>
+     * 
+     * @param serviceId
+     * @param operationId
+     * @param resourceTemplateUUID
+     * @param operationType
+     * @param resourceInstanceID
+     * @param jobId
+     * @param status
+     * @param progress
+     * @param errorCode
+     * @param statusDescription
+     * @throws MsoRequestsDbException
+     * @since   ONAP Amsterdam Release
+     */
+    @Override
+    public void updateResourceOperationStatus(String serviceId, String operationId, String resourceTemplateUUID,
+            String operationType, String resourceInstanceID, String jobId, String status, String progress,
+            String errorCode, String statusDescription) throws MsoRequestsDbException {
+         ResourceOperationStatus resStatus = new ResourceOperationStatus();
+         resStatus.setServiceId(serviceId);
+         resStatus.setOperationId(operationId);
+         resStatus.setResourceTemplateUUID(resourceTemplateUUID);
+         resStatus.setOperType(operationType);
+         resStatus.setResourceInstanceID(resourceInstanceID);
+         resStatus.setJobId(jobId);
+         resStatus.setStatus(status);
+         resStatus.setProgress(progress);
+         resStatus.setErrorCode(errorCode);
+         resStatus.setStatusDescription(statusDescription);
+         RequestsDatabase.getInstance().updateResOperStatus(resStatus);
+    }
 }