aboutsummaryrefslogtreecommitdiffstats
path: root/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryImpl.java')
-rw-r--r--mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryImpl.java618
1 files changed, 0 insertions, 618 deletions
diff --git a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryImpl.java b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryImpl.java
deleted file mode 100644
index d66e378146..0000000000
--- a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/data/repository/InfraActiveRequestsRepositoryImpl.java
+++ /dev/null
@@ -1,618 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-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;
-import java.util.Map.Entry;
-import java.util.concurrent.TimeUnit;
-
-import javax.persistence.EntityManager;
-import javax.persistence.NonUniqueResultException;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-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.onap.so.logger.MsoLogger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-
-@Repository
-@Transactional(readOnly = true)
-public class InfraActiveRequestsRepositoryImpl implements InfraActiveRequestsRepositoryCustom {
-
-
- @Qualifier("requestEntityManagerFactory")
- @Autowired
- private EntityManager entityManager;
-
- protected static MsoLogger msoLogger =
- MsoLogger.getMsoLogger(MsoLogger.Catalog.GENERAL, InfraActiveRequestsRepositoryImpl.class);
-
- protected static final String REQUEST_STATUS = "requestStatus";
- 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";
- protected static final String VNF_INSTANCE_ID = "vnfId";
- protected static final String VOLUME_GROUP_INSTANCE_NAME = "volumeGroupName";
- protected static final String VOLUME_GROUP_INSTANCE_ID = "volumeGroupId";
- protected static final String VFMODULE_INSTANCE_NAME = "vfModuleName";
- protected static final String VFMODULE_INSTANCE_ID = "vfModuleId";
- protected static final String NETWORK_INSTANCE_NAME = "networkName";
- protected static final String CONFIGURATION_INSTANCE_ID = "configurationId";
- protected static final String CONFIGURATION_INSTANCE_NAME = "configurationName";
- protected static final String OPERATIONAL_ENV_ID = "operationalEnvId";
- protected static final String OPERATIONAL_ENV_NAME = "operationalEnvName";
- protected static final String NETWORK_INSTANCE_ID = "networkId";
- protected static final String GLOBAL_SUBSCRIBER_ID = "globalSubscriberId";
- protected static final String SERVICE_NAME_VERSION_ID = "serviceNameVersionId";
- protected static final String SERVICE_ID = "serviceId";
- 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";
-
- private static final List<String> VALID_COLUMNS =
- Arrays.asList(REQUEST_ID, SERVICE_INSTANCE_ID, SERVICE_INSTANCE_NAME, ACTION, REQUEST_STATUS);
-
-
- /*
- * (non-Javadoc)
- *
- * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#healthCheck()
- */
- @Override
- public boolean healthCheck() {
-
- final Query query = entityManager.createNativeQuery(" show tables ");
-
- final List<?> list = query.getResultList();
-
- return true;
- }
-
- private List<InfraActiveRequests> executeInfraQuery(final CriteriaQuery<InfraActiveRequests> crit,
- final List<Predicate> predicates, final Order order) {
-
- final long startTime = System.currentTimeMillis();
- msoLogger.debug("Execute query on infra active request table");
-
- List<InfraActiveRequests> results = new ArrayList<InfraActiveRequests>();
-
- try {
- final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
- crit.where(cb.and(predicates.toArray(new Predicate[0])));
- crit.orderBy(order);
- results = entityManager.createQuery(crit).getResultList();
-
- } finally {
- msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
- "Successfully", "RequestDB", "getInfraActiveRequest", null);
- }
- return results;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestFromInfraActive(java.
- * lang.String)
- */
- @Override
- public InfraActiveRequests getRequestFromInfraActive(final String requestId) {
- final long startTime = System.currentTimeMillis();
- msoLogger.debug("Get request " + requestId + " from InfraActiveRequests DB");
-
- InfraActiveRequests ar = null;
- try {
- final Query query = entityManager.createQuery(
- "from InfraActiveRequests where requestId = :requestId OR clientRequestId = :requestId");
- query.setParameter(REQUEST_ID, requestId);
- ar = this.getSingleResult(query);
- } finally {
-
- msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
- "Successfully", "InfraRequestDB", "getRequestFromInfraActive", null);
- }
- return ar;
- }
-
- /*
- * (non-Javadoc)
- *
- * @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,
- final String instanceName, final String requestScope) {
-
- final List<Predicate> predicates = new LinkedList<>();
- final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
- final CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
- final Root<InfraActiveRequests> tableRoot = crit.from(InfraActiveRequests.class);
-
- if (instanceName != null && !instanceName.equals("")) {
-
- if ("service".equals(requestScope)) {
- predicates.add(cb.equal(tableRoot.get(SERVICE_INSTANCE_NAME), instanceName));
- } else if ("vnf".equals(requestScope)) {
- predicates.add(cb.equal(tableRoot.get(VNF_INSTANCE_NAME), instanceName));
- } else if ("volumeGroup".equals(requestScope)) {
- predicates.add(cb.equal(tableRoot.get(VOLUME_GROUP_INSTANCE_NAME), instanceName));
- } else if ("vfModule".equals(requestScope)) {
- predicates.add(cb.equal(tableRoot.get(VFMODULE_INSTANCE_NAME), instanceName));
- } else if ("network".equals(requestScope)) {
- 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")) {
- predicates.add(cb.equal(tableRoot.get(OPERATIONAL_ENV_NAME), instanceName));
- }
-
- } else {
- if (instanceIdMap != null) {
- if ("service".equals(requestScope) && instanceIdMap.get("serviceInstanceId") != null) {
- predicates
- .add(cb.equal(tableRoot.get(SERVICE_INSTANCE_ID), instanceIdMap.get("serviceInstanceId")));
- }
-
- if ("vnf".equals(requestScope) && instanceIdMap.get("vnfInstanceId") != null) {
- predicates.add(cb.equal(tableRoot.get(VNF_INSTANCE_ID), instanceIdMap.get("vnfInstanceId")));
- }
-
- if ("vfModule".equals(requestScope) && instanceIdMap.get("vfModuleInstanceId") != null) {
- predicates.add(
- cb.equal(tableRoot.get(VFMODULE_INSTANCE_ID), instanceIdMap.get("vfModuleInstanceId")));
- }
-
- if ("volumeGroup".equals(requestScope) && instanceIdMap.get("volumeGroupInstanceId") != null) {
- predicates.add(cb.equal(tableRoot.get(VOLUME_GROUP_INSTANCE_ID),
- instanceIdMap.get("volumeGroupInstanceId")));
- }
-
- if ("network".equals(requestScope) && instanceIdMap.get("networkInstanceId") != null) {
- predicates
- .add(cb.equal(tableRoot.get(NETWORK_INSTANCE_ID), instanceIdMap.get("networkInstanceId")));
- }
-
- if (requestScope.equals("configuration") && instanceIdMap.get("configurationInstanceId") != null) {
- predicates.add(cb.equal(tableRoot.get(CONFIGURATION_INSTANCE_ID),
- instanceIdMap.get("configurationInstanceId")));
- }
-
- if (requestScope.equals("operationalEnvironment")
- && instanceIdMap.get("operationalEnvironmentId") != null) {
- predicates.add(
- cb.equal(tableRoot.get(OPERATIONAL_ENV_ID), instanceIdMap.get("operationalEnvironmentId")));
- }
- }
- }
-
- predicates.add(tableRoot.get(REQUEST_STATUS)
- .in(Arrays.asList("PENDING", "IN_PROGRESS", "TIMEOUT", "PENDING_MANUAL_TASK")));
-
- final Order order = cb.desc(tableRoot.get(START_TIME));
-
- final List<InfraActiveRequests> dupList = executeInfraQuery(crit, predicates, order);
-
- InfraActiveRequests infraActiveRequests = null;
-
- if (dupList != null && !dupList.isEmpty()) {
- infraActiveRequests = dupList.get(0);
- }
-
- return infraActiveRequests;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#
- * getOrchestrationFiltersFromInfraActive(java.util.Map)
- */
- @Override
- public List<InfraActiveRequests> getOrchestrationFiltersFromInfraActive(
- final Map<String, List<String>> orchestrationMap) {
-
-
- final List<Predicate> predicates = new LinkedList<>();
- final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
- final CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
- final Root<InfraActiveRequests> tableRoot = crit.from(InfraActiveRequests.class);
- for (final Map.Entry<String, List<String>> entry : orchestrationMap.entrySet()) {
- String mapKey = entry.getKey();
- if ("serviceInstanceId".equalsIgnoreCase(mapKey)) {
- mapKey = "serviceInstanceId";
- } else if ("serviceInstanceName".equalsIgnoreCase(mapKey)) {
- mapKey = "serviceInstanceName";
- } else if ("vnfInstanceId".equalsIgnoreCase(mapKey)) {
- mapKey = "vnfId";
- } else if ("vnfInstanceName".equalsIgnoreCase(mapKey)) {
- mapKey = "vnfName";
- } else if ("vfModuleInstanceId".equalsIgnoreCase(mapKey)) {
- mapKey = "vfModuleId";
- } else if ("vfModuleInstanceName".equalsIgnoreCase(mapKey)) {
- mapKey = "vfModuleName";
- } else if ("volumeGroupInstanceId".equalsIgnoreCase(mapKey)) {
- mapKey = "volumeGroupId";
- } else if ("volumeGroupInstanceName".equalsIgnoreCase(mapKey)) {
- mapKey = "volumeGroupName";
- } else if ("networkInstanceId".equalsIgnoreCase(mapKey)) {
- mapKey = "networkId";
- } else if ("networkInstanceName".equalsIgnoreCase(mapKey)) {
- mapKey = "networkName";
- } else if (mapKey.equalsIgnoreCase("configurationInstanceId")) {
- mapKey = "configurationId";
- } else if (mapKey.equalsIgnoreCase("configurationInstanceName")) {
- mapKey = "configurationName";
- } else if ("lcpCloudRegionId".equalsIgnoreCase(mapKey)) {
- mapKey = "aicCloudRegion";
- } else if ("tenantId".equalsIgnoreCase(mapKey)) {
- mapKey = "tenantId";
- } else if ("modelType".equalsIgnoreCase(mapKey)) {
- mapKey = "requestScope";
- } else if ("requestorId".equalsIgnoreCase(mapKey)) {
- mapKey = "requestorId";
- } else if ("requestExecutionDate".equalsIgnoreCase(mapKey)) {
- mapKey = "startTime";
- }
-
- final String propertyValue = entry.getValue().get(1);
- if ("startTime".equals(mapKey)) {
- final SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");
- try {
- final Date thisDate = format.parse(propertyValue);
- final Timestamp minTime = new Timestamp(thisDate.getTime());
- final Timestamp maxTime = new Timestamp(thisDate.getTime() + TimeUnit.DAYS.toMillis(1));
-
- if ("DOES_NOT_EQUAL".equalsIgnoreCase(entry.getValue().get(0))) {
- predicates.add(cb.or(cb.lessThan(tableRoot.get(mapKey), minTime),
- cb.greaterThanOrEqualTo(tableRoot.get(mapKey), maxTime)));
- } else {
- predicates.add(cb.between(tableRoot.get(mapKey), minTime, maxTime));
- }
- } catch (final Exception e) {
- msoLogger.debug("Exception in getOrchestrationFiltersFromInfraActive(): + " + e.getMessage(), e);
- return null;
- }
- } else if ("DOES_NOT_EQUAL".equalsIgnoreCase(entry.getValue().get(0))) {
- predicates.add(cb.notEqual(tableRoot.get(mapKey), propertyValue));
- } else {
- predicates.add(cb.equal(tableRoot.get(mapKey), propertyValue));
- }
-
- }
-
- final Order order = cb.asc(tableRoot.get(START_TIME));
-
- return executeInfraQuery(crit, predicates, order);
- }
-
- // Added this method for Tenant Isolation project ( 1802-295491a) to query the mso_requests DB
- // (infra_active_requests table) for operationalEnvId and OperationalEnvName
- /*
- * (non-Javadoc)
- *
- * @see org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#
- * getCloudOrchestrationFiltersFromInfraActive(java.util.Map)
- */
- @Override
- public List<InfraActiveRequests> getCloudOrchestrationFiltersFromInfraActive(
- final Map<String, String> orchestrationMap) {
- final List<Predicate> predicates = new LinkedList<>();
- final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
- final CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
- final Root<InfraActiveRequests> tableRoot = crit.from(InfraActiveRequests.class);
-
- // Add criteria on OperationalEnvironment RequestScope when requestorId is only specified in
- // the filter
- // 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"));
- }
-
- for (final Map.Entry<String, String> entry : orchestrationMap.entrySet()) {
- String mapKey = entry.getKey();
- if (mapKey.equalsIgnoreCase("requestorId")) {
- mapKey = "requestorId";
- } else if (mapKey.equalsIgnoreCase("requestExecutionDate")) {
- mapKey = "startTime";
- } else if (mapKey.equalsIgnoreCase("operationalEnvironmentId")) {
- mapKey = "operationalEnvId";
- } else if (mapKey.equalsIgnoreCase("operationalEnvironmentName")) {
- mapKey = "operationalEnvName";
- } else if (mapKey.equalsIgnoreCase("resourceType")) {
- mapKey = "requestScope";
- }
-
- final String propertyValue = entry.getValue();
- if (mapKey.equals("startTime")) {
- final SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");
- try {
- final Date thisDate = format.parse(propertyValue);
- final Timestamp minTime = new Timestamp(thisDate.getTime());
- final Timestamp maxTime = new Timestamp(thisDate.getTime() + TimeUnit.DAYS.toMillis(1));
-
- predicates.add(cb.between(tableRoot.get(mapKey), minTime, maxTime));
- } catch (final Exception e) {
- msoLogger.debug("Exception in getCloudOrchestrationFiltersFromInfraActive(): + " + e.getMessage());
- return null;
- }
- } else {
- predicates.add(cb.equal(tableRoot.get(mapKey), propertyValue));
- }
- }
-
- final Order order = cb.asc(tableRoot.get(START_TIME));
- return executeInfraQuery(crit, predicates, order);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestListFromInfraActive(java
- * .lang.String, java.lang.String, java.lang.String)
- */
- @Override
- public List<InfraActiveRequests> getRequestListFromInfraActive(final String queryAttributeName,
- final String queryValue, final String requestType) {
- msoLogger.debug("Get list of infra requests from DB with " + queryAttributeName + " = " + queryValue);
-
-
- try {
- final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
- 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()) {
- return arList;
- }
- } catch (final Exception exception) {
- msoLogger.error("Unable to execute query", exception);
- }
- return Collections.emptyList();
- }
-
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#getRequestFromInfraActive(java.
- * lang.String, java.lang.String)
- */
- @Override
- public InfraActiveRequests getRequestFromInfraActive(final String requestId, final String requestType) {
- final long startTime = System.currentTimeMillis();
- msoLogger.debug("Get infra request from DB with id " + requestId);
-
- InfraActiveRequests ar = null;
- try {
- final Query query = entityManager.createQuery(
- "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);
- } finally {
- msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
- "Successfully", "RequestDB", "getRequestFromInfraActive", null);
- }
- 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();
- msoLogger.debug("Get infra request from DB for VNF " + vnfName + " and action " + action + " and requestType "
- + requestType);
-
- InfraActiveRequests ar = null;
- try {
- 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);
- }
- } finally {
- msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
- "Successfully", "RequestDB", "checkDuplicateByVnfName", null);
- }
-
- 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();
- msoLogger.debug("Get list of infra requests from DB for VNF " + vnfId + " and action " + action);
-
- InfraActiveRequests ar = null;
- try {
- 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);
- }
- } finally {
- msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
- "Successfully", "RequestDB", "checkDuplicateByVnfId", null);
- }
-
- return ar;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.onap.so.requestsdb.InfraActiveRequestsRepositoryCustom#checkVnfIdStatus(java.lang.String)
- */
- @Override
- public InfraActiveRequests checkVnfIdStatus(final String operationalEnvironmentId) {
- final long startTime = System.currentTimeMillis();
- msoLogger.debug("Get Infra request from DB for OperationalEnvironmentId " + operationalEnvironmentId);
-
- InfraActiveRequests ar = null;
- try {
- final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
- final CriteriaQuery<InfraActiveRequests> crit = cb.createQuery(InfraActiveRequests.class);
- 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.orderBy(startTimeOrder);
- final TypedQuery<InfraActiveRequests> query = entityManager.createQuery(crit);
- final List<InfraActiveRequests> results = query.getResultList();
- if (!results.isEmpty()) {
- ar = results.get(0);
- }
- } finally {
- msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
- "Successfully", "RequestDB", "checkDuplicateByVnfName", null);
- }
-
- return ar;
- }
-
- protected <T> T getSingleResult(final Query query) {
- query.setMaxResults(1);
- final List<T> list = query.getResultList();
- if (list == null || list.isEmpty()) {
- return null;
- } else if (list.size() == 1) {
- return list.get(0);
- } else {
- throw new NonUniqueResultException();
- }
-
- }
-
- @Override
- public List<InfraActiveRequests> getInfraActiveRequests(final Map<String, String[]> filters, final long startTime,
- final long endTime, final Integer maxResult) {
- if (filters == null) {
- return Collections.emptyList();
- }
- try {
- final CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
- final CriteriaQuery<InfraActiveRequests> criteriaQuery =
- criteriaBuilder.createQuery(InfraActiveRequests.class);
- final Root<InfraActiveRequests> tableRoot = criteriaQuery.from(InfraActiveRequests.class);
- final List<Predicate> predicates = getPredicates(filters, criteriaBuilder, tableRoot);
-
- 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));
-
- criteriaQuery.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));
- if (maxResult != null) {
- return entityManager.createQuery(criteriaQuery).setMaxResults(maxResult).getResultList();
- }
- return entityManager.createQuery(criteriaQuery).getResultList();
- } catch (final Exception exception) {
- msoLogger.error("Unable to execute query using filters: " + filters, exception);
- return Collections.emptyList();
- }
- }
-
- private 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()) {
- final String[] params = entry.getValue();
- if (VALID_COLUMNS.contains(entry.getKey()) && params.length == 2) {
- final QueryOperationType operationType = QueryOperationType.getQueryOperationType(params[0]);
- final Predicate predicate =
- operationType.getPredicate(criteriaBuilder, tableRoot, entry.getKey(), params[1]);
- predicates.add(predicate);
- }
- }
- return predicates;
- }
-}