HUB Resource
[externalapi/nbi.git] / src / main / java / org / onap / nbi / apis / serviceorder / ServiceOrderResource.java
index 4530528..d439306 100644 (file)
  */
 package org.onap.nbi.apis.serviceorder;
 
-import java.util.Date;
-import java.util.List;
-import javax.validation.Valid;
 import org.onap.nbi.apis.serviceorder.model.ServiceOrder;
-import org.onap.nbi.apis.serviceorder.model.ServiceOrderItem;
 import org.onap.nbi.apis.serviceorder.model.StateType;
 import org.onap.nbi.apis.serviceorder.model.orchestrator.ServiceOrderInfo;
-import org.onap.nbi.apis.serviceorder.repositories.ServiceOrderInfoRepository;
-import org.onap.nbi.apis.serviceorder.repositories.ServiceOrderRepository;
+import org.onap.nbi.apis.serviceorder.service.ServiceOrderService;
 import org.onap.nbi.apis.serviceorder.workflow.CheckOrderConsistenceManager;
 import org.onap.nbi.apis.serviceorder.workflow.CreateAAICustomerManager;
 import org.onap.nbi.apis.serviceorder.workflow.CreateAAIServiceTypeManager;
@@ -41,22 +36,20 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.util.MultiValueMap;
 import org.springframework.validation.Errors;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
 
 @RestController
 @RequestMapping("/serviceOrder")
 @EnableScheduling
-public class ServiceOrderResource extends ResourceManagement<ServiceOrder> {
+public class ServiceOrderResource extends ResourceManagement {
+
+
 
     @Autowired
-    ServiceOrderRepository serviceOrderRepository;
+    ServiceOrderService serviceOrderService;
 
     @Autowired
     CheckOrderConsistenceManager checkOrderConsistenceManager;
@@ -73,9 +66,6 @@ public class ServiceOrderResource extends ResourceManagement<ServiceOrder> {
     @Autowired
     SOTaskManager serviceOrchestratorManager;
 
-    @Autowired
-    ServiceOrderInfoRepository serviceOrderInfoRepository;
-
     @Autowired
     MultiCriteriaRequestBuilder multiCriteriaRequestBuilder;
 
@@ -84,7 +74,7 @@ public class ServiceOrderResource extends ResourceManagement<ServiceOrder> {
     public ResponseEntity<Object> getServiceOrder(@PathVariable String serviceOrderId,
             @RequestParam MultiValueMap<String, String> params) {
 
-        ServiceOrder serviceOrder = serviceOrderRepository.findOne(serviceOrderId);
+        ServiceOrder serviceOrder = serviceOrderService.findServiceOrderById(serviceOrderId);
         if (serviceOrder == null) {
             return ResponseEntity.notFound().build();
         }
@@ -99,20 +89,19 @@ public class ServiceOrderResource extends ResourceManagement<ServiceOrder> {
         Query query = multiCriteriaRequestBuilder.buildRequest(params);
         List<ServiceOrder> serviceOrders = mongoTemplate.find(query, ServiceOrder.class);
         JsonRepresentation filter = new JsonRepresentation(params);
-        long totalCount = serviceOrderRepository.count();
+        long totalCount = serviceOrderService.countServiceOrder();
         HttpHeaders headers = new HttpHeaders();
         headers.add("X-Total-Count", String.valueOf(totalCount));
         headers.add("X-Result-Count", String.valueOf(serviceOrders.size()));
 
-        ResponseEntity<Object> response = this.findResponse(serviceOrders, filter, headers);
-        return response;
+        return this.findResponse(serviceOrders, filter, headers);
 
     }
 
     @DeleteMapping(value = "/{serviceOrderId}")
     public ResponseEntity<Object> deleteServiceOrder(@PathVariable String serviceOrderId) {
 
-        serviceOrderRepository.delete(serviceOrderId);
+        serviceOrderService.deleteServiceOrder(serviceOrderId);
 
         return this.deleteResponse();
 
@@ -127,15 +116,8 @@ public class ServiceOrderResource extends ResourceManagement<ServiceOrder> {
             throw new ValidationException(errors.getAllErrors());
         }
 
-        serviceOrder.setState(StateType.ACKNOWLEDGED);
-        serviceOrder.setOrderDate(new Date());
-        for (ServiceOrderItem serviceOrderItem : serviceOrder.getOrderItem()) {
-            serviceOrderItem.setState(StateType.ACKNOWLEDGED);
-        }
-
-        ServiceOrder serviceOrderSaved = serviceOrderRepository.save(serviceOrder);
-        serviceOrderSaved.setHref("serviceOrder/" + serviceOrderSaved.getId());
-        serviceOrderRepository.save(serviceOrderSaved);
+        ServiceOrder serviceOrderSaved =serviceOrderService.createServiceOrder(serviceOrder);
+        serviceOrderService.updateOrderHref(serviceOrderSaved);
         JsonRepresentation filter = new JsonRepresentation(params);
         return this.createResponse(serviceOrderSaved, filter);
 
@@ -143,31 +125,24 @@ public class ServiceOrderResource extends ResourceManagement<ServiceOrder> {
 
     @Scheduled(fixedDelay = 5000)
     public void scheduleCheckServiceOrders() {
-        List<ServiceOrder> acknowledgedOrders = serviceOrderRepository.findByState(StateType.ACKNOWLEDGED);
+        List<ServiceOrder> acknowledgedOrders = serviceOrderService.findServiceOrdersByState(StateType.ACKNOWLEDGED);
         for (ServiceOrder serviceOrder : acknowledgedOrders) {
             ServiceOrderInfo serviceOrderInfo = checkOrderConsistenceManager.checkServiceOrder(serviceOrder);
             if (serviceOrderInfo.isServiceOrderRejected()) {
-                changeServiceOrderState(serviceOrder, StateType.REJECTED);
+                serviceOrderService.updateOrderState(serviceOrder, StateType.REJECTED);
             } else if (serviceOrderInfo.isAllItemsCompleted()) {
-                changeServiceOrderState(serviceOrder, StateType.COMPLETED);
+                serviceOrderService.updateOrderState(serviceOrder, StateType.COMPLETED);
             } else {
-                serviceOrderRepository.save(serviceOrder);
-                createAAICustomer.createAAICustomer(serviceOrderInfo);
-                createAAIServiceType.createAAIServiceType(serviceOrder, serviceOrderInfo);
-                serviceOrchestratorManager.registerServiceOrder(serviceOrder, serviceOrderInfo);
+                createAAICustomer.createAAICustomer(serviceOrder,serviceOrderInfo);
+                if(StateType.ACKNOWLEDGED==serviceOrder.getState()) {
+                    createAAIServiceType.createAAIServiceType(serviceOrder, serviceOrderInfo);
+                    if(StateType.ACKNOWLEDGED==serviceOrder.getState()) {
+                        serviceOrchestratorManager.registerServiceOrder(serviceOrder, serviceOrderInfo);
+                    }
+                }
+
             }
         }
     }
 
-    /**
-     *
-     * @param serviceOrder
-     * @param stateType
-     */
-    private void changeServiceOrderState(ServiceOrder serviceOrder, StateType stateType) {
-        serviceOrder.setState(stateType);
-        serviceOrder.setCompletionDateTime(new Date());
-        serviceOrderRepository.save(serviceOrder);
-    }
-
 }