summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/nbi/apis/serviceorder/workflow/CheckOrderConsistenceManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/nbi/apis/serviceorder/workflow/CheckOrderConsistenceManager.java')
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceorder/workflow/CheckOrderConsistenceManager.java175
1 files changed, 110 insertions, 65 deletions
diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/CheckOrderConsistenceManager.java b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/CheckOrderConsistenceManager.java
index 470b161..b3179c5 100644
--- a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/CheckOrderConsistenceManager.java
+++ b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/CheckOrderConsistenceManager.java
@@ -1,20 +1,14 @@
/**
- * Copyright (c) 2018 Orange
- * <p>
- * 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
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * 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.
+ * Copyright (c) 2018 Orange <p> 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 <p>
+ * http://www.apache.org/licenses/LICENSE-2.0 <p> 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.
*/
package org.onap.nbi.apis.serviceorder.workflow;
+import java.util.LinkedHashMap;
import org.onap.nbi.apis.serviceorder.MultiClient;
import org.onap.nbi.apis.serviceorder.model.RelatedParty;
import org.onap.nbi.apis.serviceorder.model.ServiceOrder;
@@ -23,14 +17,14 @@ import org.onap.nbi.apis.serviceorder.model.StateType;
import org.onap.nbi.apis.serviceorder.model.consumer.SubscriberInfo;
import org.onap.nbi.apis.serviceorder.model.orchestrator.ServiceOrderInfo;
import org.onap.nbi.apis.serviceorder.model.orchestrator.ServiceOrderItemInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
-import java.util.LinkedHashMap;
-
@Service
public class CheckOrderConsistenceManager {
@@ -38,59 +32,115 @@ public class CheckOrderConsistenceManager {
@Autowired
private MultiClient serviceOrderConsumerService;
+ private static final Logger LOGGER = LoggerFactory.getLogger(CheckOrderConsistenceManager.class);
+
public ServiceOrderInfo checkServiceOrder(ServiceOrder serviceOrder) {
ServiceOrderInfo serviceOrderInfo = new ServiceOrderInfo();
+ serviceOrderInfo.setServiceOrderId(serviceOrder.getId());
manageCustomer(serviceOrder, serviceOrderInfo);
int nbItemsCompleted = 0;
- boolean isServiceOrderRejected = false;
- boolean isAllItemsInAdd = true;
for (ServiceOrderItem serviceOrderItem : serviceOrder.getOrderItem()) {
ServiceOrderItemInfo serviceOrderItemInfo = new ServiceOrderItemInfo();
- serviceOrderItemInfo.setId(serviceOrderItem.getId());
handleServiceFromCatalog(serviceOrderItem, serviceOrderItemInfo);
- switch (serviceOrderItem.getAction()) {
- case ADD:
- if (existServiceInCatalog(serviceOrderItemInfo)
- && StringUtils.isEmpty(serviceOrderItem.getService().getId())
- && serviceOrderConsumerService.isTenantIdPresentInAAI()) {
- serviceOrderInfo.addServiceOrderItemInfos(serviceOrderItem.getId(), serviceOrderItemInfo);
- } else {
- isServiceOrderRejected = true;
- serviceOrderItem.setState(StateType.REJECTED);
- }
- break;
- case MODIFY:
- case DELETE:
- isAllItemsInAdd = false;
- if (isCustomerFromServiceOrderPresentInInventory(serviceOrderInfo)
- && existServiceInInventory(serviceOrderItem, serviceOrderItemInfo,
- serviceOrderInfo.getSubscriberInfo().getGlobalSubscriberId())) {
- serviceOrderInfo.addServiceOrderItemInfos(serviceOrderItem.getId(), serviceOrderItemInfo);
- } else {
- isServiceOrderRejected = true;
- serviceOrderItem.setState(StateType.REJECTED);
- }
- break;
- case NOCHANGE:
- isAllItemsInAdd = false;
- serviceOrderItem.setState(StateType.COMPLETED);
- nbItemsCompleted++;
- break;
+ if (!existServiceInCatalog(serviceOrderItemInfo)) {
+ serviceOrderInfo.setIsServiceOrderRejected(true);
+ serviceOrderItem.setState(StateType.REJECTED);
+ LOGGER.error(
+ "service order item {0} of service order {1} rejected cause no service catalog found for id {2}",
+ serviceOrderItem.getId(), serviceOrder.getId(),
+ serviceOrderItem.getService().getServiceSpecification().getId());
+ } else {
+ switch (serviceOrderItem.getAction()) {
+ case ADD:
+ handleServiceOrderItemInAdd(serviceOrderInfo, serviceOrderItem, serviceOrderItemInfo);
+ break;
+ case MODIFY:
+ case DELETE:
+ handleServiceOrderItemInChange(serviceOrderInfo, serviceOrderItem, serviceOrderItemInfo);
+ break;
+ case NOCHANGE:
+ serviceOrderInfo.setAllItemsInAdd(false);
+ serviceOrderItem.setState(StateType.COMPLETED);
+ nbItemsCompleted++;
+ break;
+ }
}
+
}
+
if (serviceOrder.getOrderItem().size() != nbItemsCompleted) {
serviceOrderInfo.setAllItemsCompleted(false);
} else {
serviceOrderInfo.setAllItemsCompleted(true);
}
- serviceOrderInfo.setAllItemsInAdd(isAllItemsInAdd);
- serviceOrderInfo.setIsServiceOrderRejected(isServiceOrderRejected);
return serviceOrderInfo;
}
+ private void handleServiceOrderItemInChange(ServiceOrderInfo serviceOrderInfo, ServiceOrderItem serviceOrderItem,
+ ServiceOrderItemInfo serviceOrderItemInfo) {
+ serviceOrderInfo.setAllItemsInAdd(false);
+ if (shouldAcceptServiceOrderItemToChange(serviceOrderInfo, serviceOrderItem,
+ serviceOrderItemInfo)) {
+ serviceOrderInfo.addServiceOrderItemInfos(serviceOrderItem.getId(), serviceOrderItemInfo);
+ } else {
+ serviceOrderInfo.setIsServiceOrderRejected(true);
+ serviceOrderItem.setState(StateType.REJECTED);
+ }
+ }
+
+ private void handleServiceOrderItemInAdd(ServiceOrderInfo serviceOrderInfo, ServiceOrderItem serviceOrderItem,
+ ServiceOrderItemInfo serviceOrderItemInfo) {
+ if (shouldAcceptServiceOrderItemToAdd(serviceOrderItem, serviceOrderInfo.getServiceOrderId())) {
+ serviceOrderInfo.addServiceOrderItemInfos(serviceOrderItem.getId(), serviceOrderItemInfo);
+ } else {
+ serviceOrderInfo.setIsServiceOrderRejected(true);
+ serviceOrderItem.setState(StateType.REJECTED);
+ }
+ }
+
+ private boolean shouldAcceptServiceOrderItemToAdd(ServiceOrderItem serviceOrderItem,
+ String serviceOrderId) {
+ if (!StringUtils.isEmpty(serviceOrderItem.getService().getId())) {
+ LOGGER
+ .error("serviceOrderItem {0} for serviceorder {1} rejected cause service.id must be empty in add action",
+ serviceOrderItem.getId(), serviceOrderId);
+ return false;
+ } else if (!serviceOrderConsumerService.isTenantIdPresentInAAI()) {
+ LOGGER.error("serviceOrderItem {0} for serviceOrder {1} rejected cause tenantId not found in AAI",
+ serviceOrderItem.getId(), serviceOrderId);
+ return false;
+ }
+ return true;
+ }
+
+ private boolean shouldAcceptServiceOrderItemToChange(ServiceOrderInfo serviceOrderInfo,
+ ServiceOrderItem serviceOrderItem,
+ ServiceOrderItemInfo serviceOrderItemInfo) {
+
+ if (StringUtils.isEmpty(serviceOrderItem.getService().getId())) {
+ LOGGER.error(
+ "serviceOrderItem {0} for serviceOrder {1} rejected cause service.id is mandatory in delete/change action",
+ serviceOrderItem.getId(), serviceOrderInfo.getServiceOrderId());
+ return false;
+ } else if (!isCustomerFromServiceOrderPresentInInventory(serviceOrderInfo)) {
+ LOGGER
+ .error("serviceOrderItem {0} for serviceOrder {1} rejected cause customer not found in inventory",
+ serviceOrderItem.getId(), serviceOrderInfo.getServiceOrderId());
+ return false;
+ } else if (!existServiceInInventory(serviceOrderItem, serviceOrderItemInfo,
+ serviceOrderInfo.getSubscriberInfo().getGlobalSubscriberId())) {
+ LOGGER
+ .error("serviceOrderItem {0} for serviceOrder {1} rejected cause service id {2} not found in inventory",
+ serviceOrderItem.getId(), serviceOrderInfo.getServiceOrderId(),
+ serviceOrderItem.getService().getId());
+ return false;
+ }
+ return true;
+ }
+
private void manageCustomer(ServiceOrder serviceOrder, ServiceOrderInfo serviceOrderInfo) {
RelatedParty customerFromServiceOrder = getCustomerFromServiceOrder(serviceOrder);
SubscriberInfo subscriberInfo = new SubscriberInfo();
@@ -122,25 +172,17 @@ public class CheckOrderConsistenceManager {
private boolean isCustomerFromServiceOrderPresentInInventory(ServiceOrderInfo serviceOrderInfo) {
if (serviceOrderInfo.isUseServiceOrderCustomer()) {
-
- boolean customerPresentInAAI = serviceOrderConsumerService
- .isCustomerPresentInAAI(serviceOrderInfo.getSubscriberInfo().getGlobalSubscriberId());
- return customerPresentInAAI;
+ return serviceOrderConsumerService
+ .isCustomerPresentInAAI(serviceOrderInfo.getSubscriberInfo().getGlobalSubscriberId());
}
return true;
}
private boolean existServiceInInventory(ServiceOrderItem serviceOrderItem,
- ServiceOrderItemInfo serviceOrderItemInfo, String globalSubscriberId) {
- if (!StringUtils.isEmpty(serviceOrderItem.getService().getId())) {
- String serviceName = (String) serviceOrderItemInfo.getCatalogResponse().get("name");
- boolean serviceExistInInventory = serviceOrderConsumerService.doesServiceExistInServiceInventory(
- serviceOrderItem.getService().getId(), serviceName, globalSubscriberId);
- if (serviceExistInInventory) {
- return true;
- }
- }
- return false;
+ ServiceOrderItemInfo serviceOrderItemInfo, String globalSubscriberId) {
+ String serviceName = (String) serviceOrderItemInfo.getCatalogResponse().get("name");
+ return serviceOrderConsumerService.doesServiceExistInServiceInventory(
+ serviceOrderItem.getService().getId(), serviceName, globalSubscriberId);
}
private boolean existServiceInCatalog(ServiceOrderItemInfo serviceOrderItemInfo) {
@@ -148,13 +190,16 @@ public class CheckOrderConsistenceManager {
}
private void handleServiceFromCatalog(ServiceOrderItem serviceOrderItem,
- ServiceOrderItemInfo serviceOrderItemInfo) {
+ ServiceOrderItemInfo serviceOrderItemInfo) {
ResponseEntity<Object> response = serviceOrderConsumerService
- .getServiceCatalog(serviceOrderItem.getService().getServiceSpecification().getId());
+ .getServiceCatalog(serviceOrderItem.getService().getServiceSpecification().getId());
if (response != null && (response.getStatusCode().equals(HttpStatus.OK)
- || response.getStatusCode().equals(HttpStatus.PARTIAL_CONTENT))) {
+ || response.getStatusCode().equals(HttpStatus.PARTIAL_CONTENT))) {
LinkedHashMap body = (LinkedHashMap) response.getBody();
serviceOrderItemInfo.setCatalogResponse(body);
+ } else {
+ LOGGER.error("unable to retrieve catalog information for service {0}",
+ serviceOrderItem.getService().getServiceSpecification().getId());
}
}