Merge "SO API to support custom PNF workflow"
[so.git] / mso-api-handlers / mso-requests-db-repositories / src / main / java / org / onap / so / db / request / data / repository / InfraActiveRequestsRepositoryImpl.java
index d8c7c8f..6b5ea01 100644 (file)
@@ -24,11 +24,9 @@ package org.onap.so.db.request.data.repository;
 
 import java.sql.Timestamp;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -67,7 +65,6 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     protected static final String SOURCE = "source";
     protected static final String START_TIME = "startTime";
     protected static final String END_TIME = "endTime";
-    protected static final String REQUEST_TYPE = "requestType";
     protected static final String SERVICE_INSTANCE_ID = "serviceInstanceId";
     protected static final String SERVICE_INSTANCE_NAME = "serviceInstanceName";
     protected static final String VNF_INSTANCE_NAME = "vnfName";
@@ -88,12 +85,11 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     protected static final String SERVICE_VERSION = "serviceVersion";
     protected static final String REQUEST_ID = "requestId";
     protected static final String REQUESTOR_ID = "requestorId";
-    protected static final String ACTION = "action";
     protected static final String OPENV = "operationalEnvironment";
 
     private static final List<String> VALID_COLUMNS =
-            Arrays.asList(REQUEST_ID, SERVICE_INSTANCE_ID, SERVICE_INSTANCE_NAME, ACTION, REQUEST_STATUS,
-                    VFMODULE_INSTANCE_ID, VNF_INSTANCE_ID, NETWORK_INSTANCE_ID, VOLUME_GROUP_INSTANCE_ID);
+            Arrays.asList(REQUEST_ID, SERVICE_INSTANCE_ID, SERVICE_INSTANCE_NAME, REQUEST_STATUS, VFMODULE_INSTANCE_ID,
+                    VNF_INSTANCE_ID, NETWORK_INSTANCE_ID, VOLUME_GROUP_INSTANCE_ID);
 
 
     /*
@@ -114,17 +110,13 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     private List<InfraActiveRequests> executeInfraQuery(final CriteriaQuery<InfraActiveRequests> crit,
             final List<Predicate> predicates, final Order order) {
 
-        final long startTime = System.currentTimeMillis();
         logger.debug("Execute query on infra active request table");
 
-        List<InfraActiveRequests> results = new ArrayList<InfraActiveRequests>();
-
         final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
         crit.where(cb.and(predicates.toArray(new Predicate[0])));
         crit.orderBy(order);
-        results = entityManager.createQuery(crit).getResultList();
 
-        return results;
+        return entityManager.createQuery(crit).getResultList();
     }
 
     /*
@@ -134,12 +126,10 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
      */
     @Override
     public InfraActiveRequests getRequestFromInfraActive(final String requestId) {
-        final long startTime = System.currentTimeMillis();
         logger.debug("Get request {} from InfraActiveRequests DB", requestId);
 
         InfraActiveRequests ar = null;
-        final Query query = entityManager
-                .createQuery("from InfraActiveRequests where requestId = :requestId OR clientRequestId = :requestId");
+        final Query query = entityManager.createQuery("from InfraActiveRequests where requestId = :requestId");
         query.setParameter(REQUEST_ID, requestId);
         ar = this.getSingleResult(query);
         return ar;
@@ -152,7 +142,7 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
      * java.lang.String, java.lang.String)
      */
     @Override
-    public InfraActiveRequests checkInstanceNameDuplicate(final HashMap<String, String> instanceIdMap,
+    public InfraActiveRequests checkInstanceNameDuplicate(final Map<String, String> instanceIdMap,
             final String instanceName, final String requestScope) {
 
         final List<Predicate> predicates = new LinkedList<>();
@@ -255,6 +245,8 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
                 mapKey = "serviceInstanceName";
             } else if ("vnfInstanceId".equalsIgnoreCase(mapKey)) {
                 mapKey = "vnfId";
+            } else if ("pnfId".equalsIgnoreCase(mapKey)) {
+                mapKey = "pnfId";
             } else if ("vnfInstanceName".equalsIgnoreCase(mapKey)) {
                 mapKey = "vnfName";
             } else if ("vfModuleInstanceId".equalsIgnoreCase(mapKey)) {
@@ -393,12 +385,8 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
             final CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
             final Root<InfraActiveRequests> candidateRoot = crit.from(InfraActiveRequests.class);
             final Predicate isEqual = cb.equal(candidateRoot.get(queryAttributeName), queryValue);
-            final Predicate equalRequestType = cb.equal(candidateRoot.get(REQUEST_TYPE), requestType);
-            final Predicate isNull = cb.isNull(candidateRoot.get(REQUEST_TYPE));
-            final Predicate orClause = cb.or(equalRequestType, isNull);
             final Order orderDesc = cb.desc(candidateRoot.get(START_TIME));
             final Order orderAsc = cb.asc(candidateRoot.get(SOURCE));
-            crit.where(cb.and(isEqual, orClause)).orderBy(orderDesc, orderAsc);
 
             final List<InfraActiveRequests> arList = entityManager.createQuery(crit).getResultList();
             if (arList != null && !arList.isEmpty()) {
@@ -419,79 +407,17 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
      */
     @Override
     public InfraActiveRequests getRequestFromInfraActive(final String requestId, final String requestType) {
-        final long startTime = System.currentTimeMillis();
         logger.debug("Get infra request from DB with id {}", requestId);
 
         InfraActiveRequests ar = null;
 
-        final Query query = entityManager.createQuery(
-                "from InfraActiveRequests where (requestId = :requestId OR clientRequestId = :requestId) and requestType = :requestType");
+        final Query query = entityManager
+                .createQuery("from InfraActiveRequests where requestId = :requestId and requestType = :requestType");
         query.setParameter(REQUEST_ID, requestId);
-        query.setParameter(REQUEST_TYPE, requestType);
         ar = this.getSingleResult(query);
         return ar;
     }
 
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkDuplicateByVnfName(java.lang. String,
-     * java.lang.String, java.lang.String)
-     */
-    @Override
-    public InfraActiveRequests checkDuplicateByVnfName(final String vnfName, final String action,
-            final String requestType) {
-
-        final long startTime = System.currentTimeMillis();
-        logger.debug("Get infra request from DB for VNF {} and action {} and requestType {}", vnfName, action,
-                requestType);
-
-        InfraActiveRequests ar = null;
-
-        final Query query = entityManager.createQuery(
-                "from InfraActiveRequests where vnfName = :vnfName and action = :action and (requestStatus = 'PENDING' or requestStatus = 'IN_PROGRESS' or requestStatus = 'TIMEOUT' or requestStatus = 'PENDING_MANUAL_TASK') and requestType = :requestType ORDER BY startTime DESC");
-        query.setParameter("vnfName", vnfName);
-        query.setParameter("action", action);
-        query.setParameter(REQUEST_TYPE, requestType);
-        @SuppressWarnings("unchecked")
-        final List<InfraActiveRequests> results = query.getResultList();
-        if (!results.isEmpty()) {
-            ar = results.get(0);
-        }
-
-        return ar;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkDuplicateByVnfId(java.lang. String,
-     * java.lang.String, java.lang.String)
-     */
-    @Override
-    public InfraActiveRequests checkDuplicateByVnfId(final String vnfId, final String action,
-            final String requestType) {
-
-        final long startTime = System.currentTimeMillis();
-        logger.debug("Get list of infra requests from DB for VNF {} and action {}", vnfId, action);
-
-        InfraActiveRequests ar = null;
-
-        final Query query = entityManager.createQuery(
-                "from InfraActiveRequests where vnfId = :vnfId and action = :action and (requestStatus = 'PENDING' or requestStatus = 'IN_PROGRESS' or requestStatus = 'TIMEOUT' or requestStatus = 'PENDING_MANUAL_TASK') and requestType = :requestType ORDER BY startTime DESC");
-        query.setParameter("vnfId", vnfId);
-        query.setParameter("action", action);
-        query.setParameter(REQUEST_TYPE, requestType);
-        @SuppressWarnings("unchecked")
-        final List<InfraActiveRequests> results = query.getResultList();
-        if (!results.isEmpty()) {
-            ar = results.get(0);
-        }
-
-        return ar;
-    }
-
     /*
      * (non-Javadoc)
      * 
@@ -499,7 +425,6 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
      */
     @Override
     public InfraActiveRequests checkVnfIdStatus(final String operationalEnvironmentId) {
-        final long startTime = System.currentTimeMillis();
         logger.debug("Get Infra request from DB for OperationalEnvironmentId {}", operationalEnvironmentId);
 
         InfraActiveRequests ar = null;
@@ -509,10 +434,9 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
         final Root<InfraActiveRequests> candidateRoot = crit.from(InfraActiveRequests.class);
         final Predicate operationalEnvEq = cb.equal(candidateRoot.get("operationalEnvId"), operationalEnvironmentId);
         final Predicate requestStatusNotEq = cb.notEqual(candidateRoot.get(REQUEST_STATUS), "COMPLETE");
-        final Predicate actionEq = cb.equal(candidateRoot.get("action"), "create");
         final Order startTimeOrder = cb.desc(candidateRoot.get("startTime"));
         crit.select(candidateRoot);
-        crit.where(cb.and(operationalEnvEq, requestStatusNotEq, actionEq));
+        crit.where(cb.and(operationalEnvEq, requestStatusNotEq));
         crit.orderBy(startTimeOrder);
         final TypedQuery<InfraActiveRequests> query = entityManager.createQuery(crit);
         final List<InfraActiveRequests> results = query.getResultList();