+ String[] resultUuids = request.getParameterValues("resultUuid");\r
+ String[] attrNames = request.getParameterValues("attrName");\r
+ String[] attrPatterns = request.getParameterValues("attrPattern");\r
+\r
+ // Checks\r
+ if (collectionId == null)\r
+ throw new SlcException("A collection id must be specified");\r
+ if (attrNames != null\r
+ && (attrPatterns == null || attrNames.length != attrPatterns.length))\r
+ throw new SlcException(\r
+ "There must be as many attrName as attrPatterns");\r
+\r
+ // Remove specified results\r
+ if (resultUuids != null)\r
+ for (String resultUuid : resultUuids)\r
+ testManagerService.removeResultFromCollection(collectionId,\r
+ resultUuid);\r
+\r
+ if (attrNames != null) {\r
+ TreeTestResultCollection sourceCollection = testResultCollectionDao\r
+ .getTestResultCollection(collectionId);\r
+\r
+ int index = 0;\r
+ for (String attrName : attrNames) {\r
+ String attrPattern = attrPatterns[index];// safe: checked above\r
+\r
+ List<TreeTestResult> results = new ArrayList<TreeTestResult>(\r
+ sourceCollection.getResults());\r
+ for (TreeTestResult treeTestResult : results) {\r
+ if (PatternMatchUtils.simpleMatch(attrPattern,\r
+ treeTestResult.getAttributes().get(attrName))) {\r
+ testManagerService.removeResultFromCollection(\r
+ collectionId, treeTestResult.getUuid());\r
+ }\r
+ }\r
+ index++;\r
+ }\r
+ } else {\r
+ if (resultUuids == null) {// no specs\r
+ // remove all\r
+ // TODO: optimize\r
+ TreeTestResultCollection sourceCollection = testResultCollectionDao\r
+ .getTestResultCollection(collectionId);\r
+ List<TreeTestResult> results = new ArrayList<TreeTestResult>(\r
+ sourceCollection.getResults());\r
+ for (TreeTestResult treeTestResult : results) {\r
+ testManagerService.removeResultFromCollection(collectionId,\r
+ treeTestResult.getUuid());\r
+ }\r