X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.server%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fweb%2Fmvc%2Fresult%2FRemoveResultFromCollectionController.java;h=a9709dc234bf2e0e0734c47c8aa45835ac8e9fc2;hb=85d836630c9258e4f4c02abe30f6d67fd1af8fca;hp=8b655bd1baff62fdf756a371be2e1d322885a856;hpb=e5a2f1f7c7487dcf10262d830c0876982ca49b22;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java index 8b655bd1b..a9709dc23 100644 --- a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java @@ -1,18 +1,29 @@ package org.argeo.slc.web.mvc.result; +import java.util.ArrayList; +import java.util.List; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.argeo.slc.SlcException; +import org.argeo.slc.core.test.tree.TreeTestResult; +import org.argeo.slc.core.test.tree.TreeTestResultCollection; +import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao; import org.argeo.slc.services.test.TestManagerService; import org.argeo.slc.web.mvc.AbstractServiceController; +import org.springframework.util.PatternMatchUtils; import org.springframework.web.servlet.ModelAndView; public class RemoveResultFromCollectionController extends AbstractServiceController { + private final TreeTestResultCollectionDao testResultCollectionDao; private final TestManagerService testManagerService; public RemoveResultFromCollectionController( + TreeTestResultCollectionDao testResultCollectionDao, TestManagerService testManagerService) { + this.testResultCollectionDao = testResultCollectionDao; this.testManagerService = testManagerService; } @@ -21,8 +32,58 @@ public class RemoveResultFromCollectionController extends throws Exception { String collectionId = request.getParameter("collectionId"); - String resultUuid = request.getParameter("resultUuid"); + String[] resultUuids = request.getParameterValues("resultUuid"); + String[] attrNames = request.getParameterValues("attrName"); + String[] attrPatterns = request.getParameterValues("attrPattern"); + + // Checks + if (collectionId == null) + throw new SlcException("A collection id must be specified"); + if (attrNames != null + && (attrPatterns == null || attrNames.length != attrPatterns.length)) + throw new SlcException( + "There must be as many attrName as attrPatterns"); + + // Remove specified results + if (resultUuids != null) + for (String resultUuid : resultUuids) + testManagerService.removeResultFromCollection(collectionId, + resultUuid); + + if (attrNames != null) { + TreeTestResultCollection sourceCollection = testResultCollectionDao + .getTestResultCollection(collectionId); + + int index = 0; + for (String attrName : attrNames) { + String attrPattern = attrPatterns[index];// safe: checked above + + List results = new ArrayList( + sourceCollection.getResults()); + for (TreeTestResult treeTestResult : results) { + if (PatternMatchUtils.simpleMatch(attrPattern, + treeTestResult.getAttributes().get(attrName))) { + testManagerService.removeResultFromCollection( + collectionId, treeTestResult.getUuid()); + } + } + index++; + } + } else { + if (resultUuids == null) {// no specs + // remove all + // TODO: optimize + TreeTestResultCollection sourceCollection = testResultCollectionDao + .getTestResultCollection(collectionId); + List results = new ArrayList( + sourceCollection.getResults()); + for (TreeTestResult treeTestResult : results) { + testManagerService.removeResultFromCollection(collectionId, + treeTestResult.getUuid()); + } + + } + } - testManagerService.removeResultFromCollection(collectionId, resultUuid); } }