]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java
Clean up server OSGi
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / result / RemoveResultFromCollectionController.java
1 package org.argeo.slc.web.mvc.result;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8
9 import org.argeo.slc.SlcException;
10 import org.argeo.slc.core.test.tree.TreeTestResult;
11 import org.argeo.slc.core.test.tree.TreeTestResultCollection;
12 import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;
13 import org.argeo.slc.services.TestManagerService;
14 import org.argeo.slc.web.mvc.AbstractServiceController;
15 import org.springframework.util.PatternMatchUtils;
16 import org.springframework.web.servlet.ModelAndView;
17
18 public class RemoveResultFromCollectionController extends
19 AbstractServiceController {
20 private final TreeTestResultCollectionDao testResultCollectionDao;
21 private final TestManagerService testManagerService;
22
23 public RemoveResultFromCollectionController(
24 TreeTestResultCollectionDao testResultCollectionDao,
25 TestManagerService testManagerService) {
26 this.testResultCollectionDao = testResultCollectionDao;
27 this.testManagerService = testManagerService;
28 }
29
30 protected void handleServiceRequest(HttpServletRequest request,
31 HttpServletResponse response, ModelAndView modelAndView)
32 throws Exception {
33
34 String collectionId = request.getParameter("collectionId");
35 String[] resultUuids = request.getParameterValues("resultUuid");
36 String[] attrNames = request.getParameterValues("attrName");
37 String[] attrPatterns = request.getParameterValues("attrPattern");
38
39 // Checks
40 if (collectionId == null)
41 throw new SlcException("A collection id must be specified");
42 if (attrNames != null
43 && (attrPatterns == null || attrNames.length != attrPatterns.length))
44 throw new SlcException(
45 "There must be as many attrName as attrPatterns");
46
47 // Remove specified results
48 if (resultUuids != null)
49 for (String resultUuid : resultUuids)
50 testManagerService.removeResultFromCollection(collectionId,
51 resultUuid);
52
53 if (attrNames != null) {
54 TreeTestResultCollection sourceCollection = testResultCollectionDao
55 .getTestResultCollection(collectionId);
56
57 int index = 0;
58 for (String attrName : attrNames) {
59 String attrPattern = attrPatterns[index];// safe: checked above
60
61 List<TreeTestResult> results = new ArrayList<TreeTestResult>(
62 sourceCollection.getResults());
63 for (TreeTestResult treeTestResult : results) {
64 if (PatternMatchUtils.simpleMatch(attrPattern,
65 treeTestResult.getAttributes().get(attrName))) {
66 testManagerService.removeResultFromCollection(
67 collectionId, treeTestResult.getUuid());
68 }
69 }
70 index++;
71 }
72 } else {
73 if (resultUuids == null) {// no specs
74 // remove all
75 // TODO: optimize
76 TreeTestResultCollection sourceCollection = testResultCollectionDao
77 .getTestResultCollection(collectionId);
78 List<TreeTestResult> results = new ArrayList<TreeTestResult>(
79 sourceCollection.getResults());
80 for (TreeTestResult treeTestResult : results) {
81 testManagerService.removeResultFromCollection(collectionId,
82 treeTestResult.getUuid());
83 }
84
85 }
86 }
87
88 }
89 }