--- /dev/null
+/* Copyright (c) 2019 AT&T Intellectual Property. #\r
+# #\r
+# Licensed under the Apache License, Version 2.0 (the "License"); #\r
+# you may not use this file except in compliance with the License. #\r
+# You may obtain a copy of the License at #\r
+# #\r
+# http://www.apache.org/licenses/LICENSE-2.0 #\r
+# #\r
+# Unless required by applicable law or agreed to in writing, software #\r
+# distributed under the License is distributed on an "AS IS" BASIS, #\r
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #\r
+# See the License for the specific language governing permissions and #\r
+# limitations under the License. #\r
+##############################################################################*/\r
+\r
+\r
+package org.oran.otf.service.impl;\r
+\r
+import org.oran.otf.camunda.configuration.OtfCamundaConfiguration;\r
+import org.oran.otf.common.model.TestDefinition;\r
+import org.oran.otf.common.model.local.BpmnInstance;\r
+import org.oran.otf.common.repository.TestDefinitionRepository;\r
+import org.oran.otf.common.utility.http.ResponseUtility;\r
+import org.oran.otf.service.DeleteTestDefinitionService;\r
+import java.util.List;\r
+import java.util.Optional;\r
+import javax.ws.rs.core.Response;\r
+\r
+import org.camunda.bpm.BpmPlatform;\r
+import org.camunda.bpm.engine.RepositoryService;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.boot.context.event.ApplicationReadyEvent;\r
+import org.springframework.context.event.EventListener;\r
+import org.springframework.stereotype.Service;\r
+\r
+@Service\r
+public class DeleteTestDefinitionServiceImpl implements DeleteTestDefinitionService {\r
+\r
+\r
+ private RepositoryService repositoryService;\r
+\r
+ @Autowired\r
+ private TestDefinitionRepository testDefinitionRepository;\r
+\r
+ @EventListener(ApplicationReadyEvent.class)\r
+ private void initialize(){\r
+ if(this.repositoryService == null){\r
+ this.repositoryService = BpmPlatform.getProcessEngineService().getProcessEngine(OtfCamundaConfiguration.processEngineName).getRepositoryService();\r
+ }\r
+ }\r
+\r
+ // delete a single version by deploymentId\r
+ @Override\r
+ public Response deleteTestStrategyByDeploymentId(String deploymentId) {\r
+ try {\r
+ repositoryService.deleteDeployment(deploymentId, true);\r
+ return ResponseUtility.Build.okRequest();\r
+ } catch (Exception e) {\r
+ return ResponseUtility.Build.badRequestWithMessage(e.getMessage());\r
+ }\r
+ }\r
+\r
+\r
+ // delete all deployment versions given test definition\r
+ @Override\r
+ public Response deleteTestStrategyByTestDefinitionId(String testDefinitionId) {\r
+ Optional<TestDefinition> testDefinitionQuery =\r
+ testDefinitionRepository.findById(testDefinitionId);\r
+ if (!testDefinitionQuery.isPresent()) {\r
+ return Response.status(404).build();\r
+ }\r
+ TestDefinition testDefinition = testDefinitionQuery.get();\r
+\r
+ List<BpmnInstance> bpmnInstances = testDefinition.getBpmnInstances();\r
+ // List<Integer> indices = new ArrayList<Integer>();\r
+ for (int i = 0; i < bpmnInstances.size(); i++) {\r
+ try {\r
+ repositoryService.deleteDeployment(bpmnInstances.get(i).getDeploymentId(), true);\r
+ // indices.add(i);\r
+ } catch (Exception e) {\r
+\r
+ }\r
+ }\r
+\r
+ // for(int i = indices.size()-1; i >=0; i++) {\r
+ // bpmnInstances.remove(i);\r
+ // }\r
+ // testDefinition.setBpmnInstances(new ArrayList<BpmnInstance>());\r
+ // testDefinitionRepository.save(testDefinition);\r
+ return ResponseUtility.Build.okRequest();\r
+\r
+\r
+ }\r
+\r
+\r
+ // delete all deployments\r
+// public Response deleteAllTestStrategies() {\r
+//// create a database to retrieve all process definitions\r
+// List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery()\r
+// .orderByProcessDefinitionVersion().asc().list();\r
+//\r
+// final int sizeBefore = processDefinitions.size();\r
+//\r
+// // delete each deployment\r
+// processDefinitions.forEach(processDefinition -> {\r
+// repositoryService.deleteDeployment(processDefinition.getDeploymentId(), true);\r
+// });\r
+//\r
+// final int sizeAfter = processDefinitions.size();\r
+//\r
+// Map<String, Object> response = new HashMap<String, Object>();\r
+// if (sizeBefore - sizeAfter == 0)\r
+// response.put("numDeletions", sizeBefore);\r
+// else\r
+// response.put("numDeletions", sizeBefore - sizeAfter);\r
+//\r
+// return ResponseUtility.Build.okRequestWithObject(response);\r
+// }\r
+}\r