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=b49bed4acb417e42d5b97e880d0dc10d419063d6;hb=5f8a5180f4e0a9532a4549718baf5779f288688e;hp=1ab784e1fdb6ba6477d8b6287d2da23ee700fc8c;hpb=805f03392d3e1a561257614db979f0c2c82c1328;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 1ab784e1f..b49bed4ac 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,32 +1,89 @@ 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.services.test.TestManagerService; +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.TestManagerService; +import org.argeo.slc.web.mvc.AbstractServiceController; +import org.springframework.util.PatternMatchUtils; import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.mvc.ParameterizableViewController; public class RemoveResultFromCollectionController extends - ParameterizableViewController { + AbstractServiceController { + private final TreeTestResultCollectionDao testResultCollectionDao; private final TestManagerService testManagerService; public RemoveResultFromCollectionController( + TreeTestResultCollectionDao testResultCollectionDao, TestManagerService testManagerService) { + this.testResultCollectionDao = testResultCollectionDao; this.testManagerService = testManagerService; } - @Override - protected ModelAndView handleRequestInternal(HttpServletRequest request, - HttpServletResponse response) throws Exception { + protected void handleServiceRequest(HttpServletRequest request, + HttpServletResponse response, ModelAndView modelAndView) + 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); + } + } - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName(getViewName()); - return modelAndView; } }