added svcapi ui and camunda code
[it/otf.git] / otf-camunda / src / main / java / org / oran / otf / service / impl / DeleteTestDefinitionServiceImpl.java
1 /*  Copyright (c) 2019 AT&T Intellectual Property.                             #\r
2 #                                                                              #\r
3 #   Licensed under the Apache License, Version 2.0 (the "License");            #\r
4 #   you may not use this file except in compliance with the License.           #\r
5 #   You may obtain a copy of the License at                                    #\r
6 #                                                                              #\r
7 #       http://www.apache.org/licenses/LICENSE-2.0                             #\r
8 #                                                                              #\r
9 #   Unless required by applicable law or agreed to in writing, software        #\r
10 #   distributed under the License is distributed on an "AS IS" BASIS,          #\r
11 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #\r
12 #   See the License for the specific language governing permissions and        #\r
13 #   limitations under the License.                                             #\r
14 ##############################################################################*/\r
15 \r
16 \r
17 package org.oran.otf.service.impl;\r
18 \r
19 import org.oran.otf.camunda.configuration.OtfCamundaConfiguration;\r
20 import org.oran.otf.common.model.TestDefinition;\r
21 import org.oran.otf.common.model.local.BpmnInstance;\r
22 import org.oran.otf.common.repository.TestDefinitionRepository;\r
23 import org.oran.otf.common.utility.http.ResponseUtility;\r
24 import org.oran.otf.service.DeleteTestDefinitionService;\r
25 import java.util.List;\r
26 import java.util.Optional;\r
27 import javax.ws.rs.core.Response;\r
28 \r
29 import org.camunda.bpm.BpmPlatform;\r
30 import org.camunda.bpm.engine.RepositoryService;\r
31 import org.springframework.beans.factory.annotation.Autowired;\r
32 import org.springframework.boot.context.event.ApplicationReadyEvent;\r
33 import org.springframework.context.event.EventListener;\r
34 import org.springframework.stereotype.Service;\r
35 \r
36 @Service\r
37 public class DeleteTestDefinitionServiceImpl implements DeleteTestDefinitionService {\r
38 \r
39 \r
40     private RepositoryService repositoryService;\r
41 \r
42     @Autowired\r
43     private TestDefinitionRepository testDefinitionRepository;\r
44 \r
45     @EventListener(ApplicationReadyEvent.class)\r
46     private void initialize(){\r
47         if(this.repositoryService == null){\r
48             this.repositoryService = BpmPlatform.getProcessEngineService().getProcessEngine(OtfCamundaConfiguration.processEngineName).getRepositoryService();\r
49         }\r
50     }\r
51 \r
52     // delete a single version by deploymentId\r
53     @Override\r
54     public Response deleteTestStrategyByDeploymentId(String deploymentId) {\r
55         try {\r
56             repositoryService.deleteDeployment(deploymentId, true);\r
57             return ResponseUtility.Build.okRequest();\r
58         } catch (Exception e) {\r
59             return ResponseUtility.Build.badRequestWithMessage(e.getMessage());\r
60         }\r
61     }\r
62 \r
63 \r
64     // delete all deployment versions given test definition\r
65     @Override\r
66     public Response deleteTestStrategyByTestDefinitionId(String testDefinitionId) {\r
67         Optional<TestDefinition> testDefinitionQuery =\r
68                 testDefinitionRepository.findById(testDefinitionId);\r
69         if (!testDefinitionQuery.isPresent()) {\r
70             return Response.status(404).build();\r
71         }\r
72         TestDefinition testDefinition = testDefinitionQuery.get();\r
73 \r
74         List<BpmnInstance> bpmnInstances = testDefinition.getBpmnInstances();\r
75         // List<Integer> indices = new ArrayList<Integer>();\r
76         for (int i = 0; i < bpmnInstances.size(); i++) {\r
77             try {\r
78                 repositoryService.deleteDeployment(bpmnInstances.get(i).getDeploymentId(), true);\r
79                 // indices.add(i);\r
80             } catch (Exception e) {\r
81 \r
82             }\r
83         }\r
84 \r
85         // for(int i = indices.size()-1; i >=0; i++) {\r
86         // bpmnInstances.remove(i);\r
87         // }\r
88         // testDefinition.setBpmnInstances(new ArrayList<BpmnInstance>());\r
89         // testDefinitionRepository.save(testDefinition);\r
90         return ResponseUtility.Build.okRequest();\r
91 \r
92 \r
93     }\r
94 \r
95 \r
96     // delete all deployments\r
97 //    public Response deleteAllTestStrategies() {\r
98 ////         create a database to retrieve all process definitions\r
99 //        List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery()\r
100 //                .orderByProcessDefinitionVersion().asc().list();\r
101 //\r
102 //        final int sizeBefore = processDefinitions.size();\r
103 //\r
104 //        // delete each deployment\r
105 //        processDefinitions.forEach(processDefinition -> {\r
106 //            repositoryService.deleteDeployment(processDefinition.getDeploymentId(), true);\r
107 //        });\r
108 //\r
109 //        final int sizeAfter = processDefinitions.size();\r
110 //\r
111 //        Map<String, Object> response = new HashMap<String, Object>();\r
112 //        if (sizeBefore - sizeAfter == 0)\r
113 //            response.put("numDeletions", sizeBefore);\r
114 //        else\r
115 //            response.put("numDeletions", sizeBefore - sizeAfter);\r
116 //\r
117 //        return ResponseUtility.Build.okRequestWithObject(response);\r
118 //    }\r
119 }\r