Introduce collection management
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 5 May 2008 11:42:32 +0000 (11:42 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 5 May 2008 11:42:32 +0000 (11:42 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1123 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/TestManagerService.java [new file with mode: 0644]
org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java [new file with mode: 0644]
org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/AddResultToCollectionController.java [new file with mode: 0644]
org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java [new file with mode: 0644]
org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionListController.java [new file with mode: 0644]
org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionViewController.java [new file with mode: 0644]
org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultInterceptor.java [new file with mode: 0644]
org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultListController.java
org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/ResultPartRequestEp.java

diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/TestManagerService.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/TestManagerService.java
new file mode 100644 (file)
index 0000000..bfc00ed
--- /dev/null
@@ -0,0 +1,11 @@
+package org.argeo.slc.services.test;\r
+\r
+import org.argeo.slc.core.test.TestRunDescriptor;\r
+\r
+public interface TestManagerService {\r
+       public void registerTestRunDescriptor(TestRunDescriptor testRunDescriptor);\r
+\r
+       public void addResultToCollection(String collectionId, String resultUuid);\r
+\r
+       public void removeResultFromCollection(String collectionId, String resultUuid);\r
+}\r
diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java
new file mode 100644 (file)
index 0000000..1a7e110
--- /dev/null
@@ -0,0 +1,77 @@
+package org.argeo.slc.services.test.impl;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.process.SlcExecution;\r
+import org.argeo.slc.core.test.TestRunDescriptor;\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
+import org.argeo.slc.dao.process.SlcExecutionDao;\r
+import org.argeo.slc.dao.test.TestRunDescriptorDao;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.argeo.slc.services.test.TestManagerService;\r
+\r
+public class TestManagerServiceImpl implements TestManagerService {\r
+       private Log log = LogFactory.getLog(getClass());\r
+\r
+       private final TreeTestResultDao treeTestResultDao;\r
+       private final TestRunDescriptorDao testRunDescriptorDao;\r
+       private final SlcExecutionDao slcExecutionDao;\r
+       private final TreeTestResultCollectionDao treeTestResultCollectionDao;\r
+\r
+       public TestManagerServiceImpl(TreeTestResultDao treeTestResultDao,\r
+                       TestRunDescriptorDao testRunDescriptorDao,\r
+                       SlcExecutionDao slcExecutionDao,\r
+                       TreeTestResultCollectionDao treeTestResultCollectionDao) {\r
+               this.treeTestResultDao = treeTestResultDao;\r
+               this.testRunDescriptorDao = testRunDescriptorDao;\r
+               this.slcExecutionDao = slcExecutionDao;\r
+               this.treeTestResultCollectionDao = treeTestResultCollectionDao;\r
+       }\r
+\r
+       public void registerTestRunDescriptor(TestRunDescriptor testRunDescriptor) {\r
+               if (testRunDescriptor != null) {\r
+                       if (log.isDebugEnabled())\r
+                               log.debug("Updating test run descriptor with id "\r
+                                               + testRunDescriptor.getTestRunUuid());\r
+\r
+                       testRunDescriptorDao.saveOrUpdate(testRunDescriptor);\r
+\r
+                       // Update tree test result collection\r
+                       // TODO: optimize\r
+                       SlcExecution slcExecution = slcExecutionDao\r
+                                       .getSlcExecution(testRunDescriptor.getSlcExecutionUuid());\r
+                       if (slcExecution != null) {\r
+                               addResultToCollection(slcExecution.getUser(), testRunDescriptor\r
+                                               .getTestResultUuid());\r
+                       }\r
+               }\r
+       }\r
+\r
+       public void addResultToCollection(String collectionId, String resultUuid) {\r
+               TreeTestResultCollection ttrc = treeTestResultCollectionDao\r
+                               .getTestResultCollection(collectionId);\r
+               if (ttrc == null) {\r
+                       ttrc = new TreeTestResultCollection(collectionId);\r
+                       treeTestResultCollectionDao.create(ttrc);\r
+               }\r
+               TreeTestResult ttr = treeTestResultDao.getTestResult(resultUuid);\r
+               ttrc.getResults().add(ttr);\r
+               treeTestResultCollectionDao.update(ttrc);\r
+       }\r
+\r
+       public void removeResultFromCollection(String collectionId,\r
+                       String resultUuid) {\r
+               TreeTestResultCollection ttrc = treeTestResultCollectionDao\r
+                               .getTestResultCollection(collectionId);\r
+               if (ttrc != null) {\r
+                       TreeTestResult ttr = treeTestResultDao.getTestResult(resultUuid);\r
+                       if (ttrc.getResults().remove(ttr)) {\r
+                               treeTestResultCollectionDao.update(ttrc);\r
+                       }\r
+               }\r
+       }\r
+\r
+}\r
diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/AddResultToCollectionController.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/AddResultToCollectionController.java
new file mode 100644 (file)
index 0000000..60db5f9
--- /dev/null
@@ -0,0 +1,41 @@
+package org.argeo.slc.web.mvc.result;\r
+\r
+import java.util.SortedSet;\r
+import java.util.TreeSet;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import org.springframework.web.servlet.ModelAndView;\r
+import org.springframework.web.servlet.mvc.ParameterizableViewController;\r
+\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.argeo.slc.services.test.TestManagerService;\r
+\r
+public class AddResultToCollectionController extends\r
+               ParameterizableViewController {\r
+       private final TestManagerService testManagerService;\r
+\r
+\r
+       public AddResultToCollectionController(TestManagerService testManagerService) {\r
+               this.testManagerService = testManagerService;\r
+       }\r
+\r
+\r
+       @Override\r
+       protected ModelAndView handleRequestInternal(HttpServletRequest request,\r
+                       HttpServletResponse response) throws Exception {\r
+\r
+               String collectionId = request.getParameter("collectionId");\r
+               String resultUuid = request.getParameter("resultUuid");\r
+\r
+               testManagerService.addResultToCollection(collectionId, resultUuid);\r
+\r
+               ModelAndView modelAndView = new ModelAndView();\r
+               modelAndView.setViewName(getViewName());\r
+               return modelAndView;\r
+       }\r
+}\r
diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java
new file mode 100644 (file)
index 0000000..1ed3ca3
--- /dev/null
@@ -0,0 +1,40 @@
+package org.argeo.slc.web.mvc.result;\r
+\r
+import java.util.SortedSet;\r
+import java.util.TreeSet;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import org.springframework.web.servlet.ModelAndView;\r
+import org.springframework.web.servlet.mvc.ParameterizableViewController;\r
+\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.argeo.slc.services.test.TestManagerService;\r
+\r
+public class RemoveResultFromCollectionController extends\r
+               ParameterizableViewController {\r
+       private final TestManagerService testManagerService;\r
+\r
+       public RemoveResultFromCollectionController(\r
+                       TestManagerService testManagerService) {\r
+               this.testManagerService = testManagerService;\r
+       }\r
+\r
+       @Override\r
+       protected ModelAndView handleRequestInternal(HttpServletRequest request,\r
+                       HttpServletResponse response) throws Exception {\r
+\r
+               String collectionId = request.getParameter("collectionId");\r
+               String resultUuid = request.getParameter("resultUuid");\r
+\r
+               testManagerService.removeResultFromCollection(collectionId, resultUuid);\r
+\r
+               ModelAndView modelAndView = new ModelAndView();\r
+               modelAndView.setViewName(getViewName());\r
+               return modelAndView;\r
+       }\r
+}\r
diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionListController.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionListController.java
new file mode 100644 (file)
index 0000000..33d0486
--- /dev/null
@@ -0,0 +1,34 @@
+package org.argeo.slc.web.mvc.result;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import org.springframework.web.servlet.ModelAndView;\r
+import org.springframework.web.servlet.mvc.ParameterizableViewController;\r
+\r
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+\r
+public class ResultCollectionListController extends\r
+               ParameterizableViewController {\r
+       private final TreeTestResultCollectionDao testResultCollectionDao;\r
+\r
+       public ResultCollectionListController(\r
+                       TreeTestResultCollectionDao testResultCollectionDao) {\r
+               this.testResultCollectionDao = testResultCollectionDao;\r
+       }\r
+\r
+       @Override\r
+       protected ModelAndView handleRequestInternal(HttpServletRequest request,\r
+                       HttpServletResponse response) throws Exception {\r
+               ModelAndView modelAndView = new ModelAndView();\r
+\r
+               // no need to retrieve since collection list is always in session\r
+               \r
+//             SortedSet<TreeTestResultCollection> results = testResultCollectionDao\r
+//                             .listCollections();\r
+//             modelAndView.addObject("resultCollections", results);\r
+               \r
+               modelAndView.setViewName(getViewName());\r
+               return modelAndView;\r
+       }\r
+}\r
diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionViewController.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionViewController.java
new file mode 100644 (file)
index 0000000..7d1b038
--- /dev/null
@@ -0,0 +1,40 @@
+package org.argeo.slc.web.mvc.result;\r
+\r
+import java.util.SortedSet;\r
+import java.util.TreeSet;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import org.springframework.web.servlet.ModelAndView;\r
+import org.springframework.web.servlet.mvc.ParameterizableViewController;\r
+\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+\r
+public class ResultCollectionViewController extends\r
+               ParameterizableViewController {\r
+       private final TreeTestResultCollectionDao testResultCollectionDao;\r
+\r
+       public ResultCollectionViewController(\r
+                       TreeTestResultCollectionDao testResultCollectionDao) {\r
+               this.testResultCollectionDao = testResultCollectionDao;\r
+       }\r
+\r
+       @Override\r
+       protected ModelAndView handleRequestInternal(HttpServletRequest request,\r
+                       HttpServletResponse response) throws Exception {\r
+\r
+               String id = request.getParameter("id");\r
+\r
+               TreeTestResultCollection resultCollection = testResultCollectionDao\r
+                               .getTestResultCollection(id);\r
+\r
+               ModelAndView modelAndView = new ModelAndView();\r
+               modelAndView.addObject("resultCollection", resultCollection);\r
+               modelAndView.setViewName(getViewName());\r
+               return modelAndView;\r
+       }\r
+}\r
diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultInterceptor.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultInterceptor.java
new file mode 100644 (file)
index 0000000..5148413
--- /dev/null
@@ -0,0 +1,27 @@
+package org.argeo.slc.web.mvc.result;\r
+\r
+import javax.servlet.http.HttpServletRequest;\r
+import javax.servlet.http.HttpServletResponse;\r
+\r
+import org.springframework.web.servlet.ModelAndView;\r
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;\r
+\r
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;\r
+\r
+public class ResultInterceptor extends HandlerInterceptorAdapter {\r
+       private final TreeTestResultCollectionDao testResultCollectionDao;\r
+\r
+       public ResultInterceptor(TreeTestResultCollectionDao testResultCollectionDao) {\r
+               this.testResultCollectionDao = testResultCollectionDao;\r
+       }\r
+\r
+       @Override\r
+       public void postHandle(HttpServletRequest request,\r
+                       HttpServletResponse response, Object handler,\r
+                       ModelAndView modelAndView) throws Exception {\r
+               request.setAttribute("resultCollections", testResultCollectionDao\r
+                               .listCollections());\r
+               super.postHandle(request, response, handler, modelAndView);\r
+       }\r
+\r
+}\r
index a83653105cccb686cbafa1ee7bb1ebcf691ab3d3..c522642e515b45df65d05ab6bc42844babff89ec 100644 (file)
@@ -1,6 +1,5 @@
 package org.argeo.slc.web.mvc.result;\r
 \r
-import java.util.Comparator;\r
 import java.util.SortedSet;\r
 import java.util.TreeSet;\r
 \r
@@ -26,24 +25,7 @@ public class ResultListController extends ParameterizableViewController {
 \r
                ModelAndView modelAndView = new ModelAndView();\r
 \r
-               Comparator<TreeTestResult> comparator = new Comparator<TreeTestResult>() {\r
-\r
-                       public int compare(TreeTestResult arg0, TreeTestResult arg1) {\r
-                               if (arg0.getCloseDate() != null && arg1.getCloseDate() != null) {\r
-                                       return -arg0.getCloseDate().compareTo(arg1.getCloseDate());\r
-                               } else if (arg0.getCloseDate() != null\r
-                                               && arg1.getCloseDate() == null) {\r
-                                       return 1;\r
-                               } else if (arg0.getCloseDate() == null\r
-                                               && arg1.getCloseDate() != null) {\r
-                                       return -1;\r
-                               } else {\r
-                                       return arg0.getUuid().compareTo(arg1.getUuid());\r
-                               }\r
-                       }\r
-               };\r
-               SortedSet<TreeTestResult> results = new TreeSet<TreeTestResult>(\r
-                               comparator);\r
+               SortedSet<TreeTestResult> results = new TreeSet<TreeTestResult>();\r
                results.addAll(testResultDao.listTestResults());\r
                modelAndView.addObject("results", results);\r
                modelAndView.setViewName(getViewName());\r
index 7e73ff8315016aa79eb02e3d263ea09b18a6c2fc..5ef459866aff2a022dce122bef6ee7118e41417e 100644 (file)
@@ -1,43 +1,69 @@
 package org.argeo.slc.ws.test.tree;
 
+import javax.swing.plaf.basic.BasicTreeUI.TreeTraverseAction;
+
 import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 import org.argeo.slc.core.SlcException;
+import org.argeo.slc.core.process.SlcExecution;
 import org.argeo.slc.core.test.TestRunDescriptor;
 import org.argeo.slc.core.test.tree.PartSubList;
 import org.argeo.slc.core.test.tree.TreeTestResult;
+import org.argeo.slc.core.test.tree.TreeTestResultCollection;
+import org.argeo.slc.dao.process.SlcExecutionDao;
 import org.argeo.slc.dao.test.TestRunDescriptorDao;
+import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;
 import org.argeo.slc.dao.test.tree.TreeTestResultDao;
 import org.argeo.slc.msg.test.tree.ResultPartRequest;
+import org.argeo.slc.services.test.TestManagerService;
+import org.argeo.slc.services.test.impl.TestManagerServiceImpl;
 
 public class ResultPartRequestEp extends AbstractMarshallingPayloadEndpoint {
 
        private Log log = LogFactory.getLog(getClass());
 
        private final TreeTestResultDao treeTestResultDao;
-       private final TestRunDescriptorDao testRunDescriptorDao;
+       private final TestManagerService testManagerService;
 
        public ResultPartRequestEp(TreeTestResultDao treeTestResultDao,
-                       TestRunDescriptorDao testRunDescriptorDao) {
+                       TestManagerService testManagerService) {
                this.treeTestResultDao = treeTestResultDao;
-               this.testRunDescriptorDao = testRunDescriptorDao;
+               this.testManagerService = testManagerService;
        }
 
        @Override
        protected Object invokeInternal(Object requestObject) throws Exception {
                ResultPartRequest msg = (ResultPartRequest) requestObject;
 
-               TestRunDescriptor testRunDescriptor = msg.getTestRunDescriptor();
-               if (testRunDescriptor != null) {
-                       if (log.isDebugEnabled())
-                               log.debug("Updating test run descriptor with id "
-                                               + testRunDescriptor.getTestRunUuid());
-
-                       testRunDescriptorDao.saveOrUpdate(testRunDescriptor);
-               }
+               testManagerService
+                               .registerTestRunDescriptor(msg.getTestRunDescriptor());
+               // if (testRunDescriptor != null) {
+               // if (log.isDebugEnabled())
+               // log.debug("Updating test run descriptor with id "
+               // + testRunDescriptor.getTestRunUuid());
+               //
+               // testRunDescriptorDao.saveOrUpdate(testRunDescriptor);
+               //
+               // // Update tree test result collection
+               // // TODO: put it in dedicated service and optimize
+               // SlcExecution slcExecution = slcExecutionDao
+               // .getSlcExecution(testRunDescriptor.getSlcExecutionUuid());
+               // if (slcExecution != null) {
+               // TreeTestResultCollection ttrc = treeTestResultCollectionDao
+               // .getTestResultCollection(slcExecution.getUser());
+               // if (ttrc == null) {
+               // ttrc = new TreeTestResultCollection(slcExecution.getUser());
+               // treeTestResultCollectionDao.create(ttrc);
+               // }
+               // TreeTestResult ttr = treeTestResultDao
+               // .getTestResult(testRunDescriptor.getTestResultUuid());
+               // ttrc.getResults().add(ttr);
+               // treeTestResultCollectionDao.update(ttrc);
+               // }
+               // }
 
                TreeTestResult treeTestResult = treeTestResultDao.getTestResult(msg
                                .getResultUuid());