Merge "update version for 1.5.1"
[so.git] / mso-api-handlers / mso-requests-db-repositories / src / main / java / org / onap / so / db / request / data / repository / InfraActiveRequestsRepositoryImpl.java
index 761aaa1..13ca33c 100644 (file)
@@ -34,7 +34,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.TimeUnit;
-
 import javax.persistence.EntityManager;
 import javax.persistence.NonUniqueResultException;
 import javax.persistence.Query;
@@ -44,7 +43,6 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Order;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-
 import org.onap.so.db.request.beans.InfraActiveRequests;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -91,9 +89,11 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     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);
+            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);
 
 
     /*
@@ -130,9 +130,7 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     /*
      * (non-Javadoc)
      * 
-     * @see
-     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestFromInfraActive(java.
-     * lang.String)
+     * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestFromInfraActive(java. lang.String)
      */
     @Override
     public InfraActiveRequests getRequestFromInfraActive(final String requestId) {
@@ -141,7 +139,7 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
 
         InfraActiveRequests ar = null;
         final Query query = entityManager
-            .createQuery("from InfraActiveRequests where requestId = :requestId OR clientRequestId = :requestId");
+                .createQuery("from InfraActiveRequests where requestId = :requestId OR clientRequestId = :requestId");
         query.setParameter(REQUEST_ID, requestId);
         ar = this.getSingleResult(query);
         return ar;
@@ -150,12 +148,11 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     /*
      * (non-Javadoc)
      * 
-     * @see
-     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkInstanceNameDuplicate(java.
-     * util.HashMap, java.lang.String, java.lang.String)
+     * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkInstanceNameDuplicate(java. util.HashMap,
+     * 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<>();
@@ -178,13 +175,13 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
                 predicates.add(cb.equal(tableRoot.get(NETWORK_INSTANCE_NAME), instanceName));
             } else if (requestScope.equals("configuration")) {
                 predicates.add(cb.equal(tableRoot.get(CONFIGURATION_INSTANCE_NAME), instanceName));
-            } else if (requestScope.equals("operationalEnvironment")) {
+            } else if (requestScope.equals(OPENV)) {
                 predicates.add(cb.equal(tableRoot.get(OPERATIONAL_ENV_NAME), instanceName));
             }
 
         } else {
             if (instanceIdMap != null) {
-                if ("service".equals(requestScope) && instanceIdMap.get("serviceInstanceId") != null) {
+                if ("service".equals(requestScope) && instanceIdMap.get(SERVICE_INSTANCE_ID) != null) {
                     predicates
                             .add(cb.equal(tableRoot.get(SERVICE_INSTANCE_ID), instanceIdMap.get("serviceInstanceId")));
                 }
@@ -213,8 +210,7 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
                             instanceIdMap.get("configurationInstanceId")));
                 }
 
-                if (requestScope.equals("operationalEnvironment")
-                        && instanceIdMap.get("operationalEnvironmentId") != null) {
+                if (requestScope.equals(OPENV) && instanceIdMap.get("operationalEnvironmentId") != null) {
                     predicates.add(
                             cb.equal(tableRoot.get(OPERATIONAL_ENV_ID), instanceIdMap.get("operationalEnvironmentId")));
                 }
@@ -341,7 +337,7 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
         // as the same requestorId can also match on different API methods
         final String resourceType = orchestrationMap.get("resourceType");
         if (resourceType == null) {
-            predicates.add(cb.equal(tableRoot.get("requestScope"), "operationalEnvironment"));
+            predicates.add(cb.equal(tableRoot.get("requestScope"), OPENV));
         }
 
         for (final Map.Entry<String, String> entry : orchestrationMap.entrySet()) {
@@ -383,9 +379,8 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     /*
      * (non-Javadoc)
      * 
-     * @see
-     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestListFromInfraActive(java
-     * .lang.String, java.lang.String, java.lang.String)
+     * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestListFromInfraActive(java .lang.String,
+     * java.lang.String, java.lang.String)
      */
     @Override
     public List<InfraActiveRequests> getRequestListFromInfraActive(final String queryAttributeName,
@@ -419,9 +414,8 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     /*
      * (non-Javadoc)
      * 
-     * @see
-     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestFromInfraActive(java.
-     * lang.String, java.lang.String)
+     * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestFromInfraActive(java. lang.String,
+     * java.lang.String)
      */
     @Override
     public InfraActiveRequests getRequestFromInfraActive(final String requestId, final String requestType) {
@@ -431,7 +425,7 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
         InfraActiveRequests ar = null;
 
         final Query query = entityManager.createQuery(
-            "from InfraActiveRequests where (requestId = :requestId OR clientRequestId = :requestId) and requestType = :requestType");
+                "from InfraActiveRequests where (requestId = :requestId OR clientRequestId = :requestId) and requestType = :requestType");
         query.setParameter(REQUEST_ID, requestId);
         query.setParameter(REQUEST_TYPE, requestType);
         ar = this.getSingleResult(query);
@@ -442,9 +436,8 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     /*
      * (non-Javadoc)
      * 
-     * @see
-     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkDuplicateByVnfName(java.lang.
-     * String, java.lang.String, java.lang.String)
+     * @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,
@@ -452,16 +445,17 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
 
         final long startTime = System.currentTimeMillis();
         logger.debug("Get infra request from DB for VNF {} and action {} and requestType {}", vnfName, action,
-            requestType);
+                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");
+                "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();
+        @SuppressWarnings("unchecked")
+        final List<InfraActiveRequests> results = query.getResultList();
         if (!results.isEmpty()) {
             ar = results.get(0);
         }
@@ -472,9 +466,8 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     /*
      * (non-Javadoc)
      * 
-     * @see
-     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkDuplicateByVnfId(java.lang.
-     * String, java.lang.String, java.lang.String)
+     * @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,
@@ -486,11 +479,12 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
         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");
+                "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();
+        @SuppressWarnings("unchecked")
+        final List<InfraActiveRequests> results = query.getResultList();
         if (!results.isEmpty()) {
             ar = results.get(0);
         }
@@ -501,8 +495,7 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
     /*
      * (non-Javadoc)
      * 
-     * @see
-     * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkVnfIdStatus(java.lang.String)
+     * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkVnfIdStatus(java.lang.String)
      */
     @Override
     public InfraActiveRequests checkVnfIdStatus(final String operationalEnvironmentId) {
@@ -551,6 +544,7 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
         }
         try {
             final CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
+
             final CriteriaQuery<InfraActiveRequests> criteriaQuery =
                     criteriaBuilder.createQuery(InfraActiveRequests.class);
             final Root<InfraActiveRequests> tableRoot = criteriaQuery.from(InfraActiveRequests.class);
@@ -558,17 +552,13 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
 
             final Timestamp minTime = new Timestamp(startTime);
             final Timestamp maxTime = new Timestamp(endTime);
-            predicates.add(criteriaBuilder.greaterThanOrEqualTo(tableRoot.get(START_TIME), minTime));
-            predicates.add(criteriaBuilder.lessThanOrEqualTo(tableRoot.get(END_TIME), maxTime));
-
             final Predicate basePredicate = criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
-            
-            final Predicate additionalPredicate = criteriaBuilder.and(tableRoot.get(END_TIME).isNull(),
-                    criteriaBuilder.greaterThanOrEqualTo(tableRoot.get(START_TIME), minTime),
-                    criteriaBuilder.lessThanOrEqualTo(tableRoot.get(START_TIME), maxTime));
-
-            criteriaQuery.where(criteriaBuilder.or(basePredicate, additionalPredicate));
+            final Predicate additionalPredicate =
+                    criteriaBuilder.and(criteriaBuilder.greaterThanOrEqualTo(tableRoot.get(START_TIME), minTime),
+                            criteriaBuilder.or(tableRoot.get(END_TIME).isNull(),
+                                    criteriaBuilder.lessThanOrEqualTo(tableRoot.get(END_TIME), maxTime)));
 
+            criteriaQuery.where(criteriaBuilder.and(basePredicate, additionalPredicate));
             if (maxResult != null) {
                 return entityManager.createQuery(criteriaQuery).setMaxResults(maxResult).getResultList();
             }
@@ -579,7 +569,7 @@ public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRep
         }
     }
 
-    private List<Predicate> getPredicates(final Map<String, String[]> filters, final CriteriaBuilder criteriaBuilder,
+    protected List<Predicate> getPredicates(final Map<String, String[]> filters, final CriteriaBuilder criteriaBuilder,
             final Root<InfraActiveRequests> tableRoot) {
         final List<Predicate> predicates = new LinkedList<>();
         for (final Entry<String, String[]> entry : filters.entrySet()) {