From b9f779525f00905e9de9a733757a5670e8ae1cf5 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 5 May 2008 11:42:32 +0000 Subject: [PATCH] Introduce collection management git-svn-id: https://svn.argeo.org/slc/trunk@1123 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../slc/services/test/TestManagerService.java | 11 +++ .../test/impl/TestManagerServiceImpl.java | 77 +++++++++++++++++++ .../AddResultToCollectionController.java | 41 ++++++++++ .../RemoveResultFromCollectionController.java | 40 ++++++++++ .../ResultCollectionListController.java | 34 ++++++++ .../ResultCollectionViewController.java | 40 ++++++++++ .../slc/web/mvc/result/ResultInterceptor.java | 27 +++++++ .../web/mvc/result/ResultListController.java | 20 +---- .../slc/ws/test/tree/ResultPartRequestEp.java | 48 +++++++++--- 9 files changed, 308 insertions(+), 30 deletions(-) create mode 100644 org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/TestManagerService.java create mode 100644 org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java create mode 100644 org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/AddResultToCollectionController.java create mode 100644 org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java create mode 100644 org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionListController.java create mode 100644 org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionViewController.java create mode 100644 org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultInterceptor.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 index 000000000..bfc00edf8 --- /dev/null +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/TestManagerService.java @@ -0,0 +1,11 @@ +package org.argeo.slc.services.test; + +import org.argeo.slc.core.test.TestRunDescriptor; + +public interface TestManagerService { + public void registerTestRunDescriptor(TestRunDescriptor testRunDescriptor); + + public void addResultToCollection(String collectionId, String resultUuid); + + public void removeResultFromCollection(String collectionId, String resultUuid); +} 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 index 000000000..1a7e110bf --- /dev/null +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java @@ -0,0 +1,77 @@ +package org.argeo.slc.services.test.impl; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.core.test.TestRunDescriptor; +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.services.test.TestManagerService; + +public class TestManagerServiceImpl implements TestManagerService { + private Log log = LogFactory.getLog(getClass()); + + private final TreeTestResultDao treeTestResultDao; + private final TestRunDescriptorDao testRunDescriptorDao; + private final SlcExecutionDao slcExecutionDao; + private final TreeTestResultCollectionDao treeTestResultCollectionDao; + + public TestManagerServiceImpl(TreeTestResultDao treeTestResultDao, + TestRunDescriptorDao testRunDescriptorDao, + SlcExecutionDao slcExecutionDao, + TreeTestResultCollectionDao treeTestResultCollectionDao) { + this.treeTestResultDao = treeTestResultDao; + this.testRunDescriptorDao = testRunDescriptorDao; + this.slcExecutionDao = slcExecutionDao; + this.treeTestResultCollectionDao = treeTestResultCollectionDao; + } + + public void registerTestRunDescriptor(TestRunDescriptor testRunDescriptor) { + 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: optimize + SlcExecution slcExecution = slcExecutionDao + .getSlcExecution(testRunDescriptor.getSlcExecutionUuid()); + if (slcExecution != null) { + addResultToCollection(slcExecution.getUser(), testRunDescriptor + .getTestResultUuid()); + } + } + } + + public void addResultToCollection(String collectionId, String resultUuid) { + TreeTestResultCollection ttrc = treeTestResultCollectionDao + .getTestResultCollection(collectionId); + if (ttrc == null) { + ttrc = new TreeTestResultCollection(collectionId); + treeTestResultCollectionDao.create(ttrc); + } + TreeTestResult ttr = treeTestResultDao.getTestResult(resultUuid); + ttrc.getResults().add(ttr); + treeTestResultCollectionDao.update(ttrc); + } + + public void removeResultFromCollection(String collectionId, + String resultUuid) { + TreeTestResultCollection ttrc = treeTestResultCollectionDao + .getTestResultCollection(collectionId); + if (ttrc != null) { + TreeTestResult ttr = treeTestResultDao.getTestResult(resultUuid); + if (ttrc.getResults().remove(ttr)) { + treeTestResultCollectionDao.update(ttrc); + } + } + } + +} 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 index 000000000..60db5f982 --- /dev/null +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/AddResultToCollectionController.java @@ -0,0 +1,41 @@ +package org.argeo.slc.web.mvc.result; + +import java.util.SortedSet; +import java.util.TreeSet; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +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.dao.test.tree.TreeTestResultDao; +import org.argeo.slc.services.test.TestManagerService; + +public class AddResultToCollectionController extends + ParameterizableViewController { + private final TestManagerService testManagerService; + + + public AddResultToCollectionController(TestManagerService testManagerService) { + this.testManagerService = testManagerService; + } + + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + + String collectionId = request.getParameter("collectionId"); + String resultUuid = request.getParameter("resultUuid"); + + testManagerService.addResultToCollection(collectionId, resultUuid); + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName(getViewName()); + return modelAndView; + } +} 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 index 000000000..1ed3ca3e0 --- /dev/null +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java @@ -0,0 +1,40 @@ +package org.argeo.slc.web.mvc.result; + +import java.util.SortedSet; +import java.util.TreeSet; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +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.dao.test.tree.TreeTestResultDao; +import org.argeo.slc.services.test.TestManagerService; + +public class RemoveResultFromCollectionController extends + ParameterizableViewController { + private final TestManagerService testManagerService; + + public RemoveResultFromCollectionController( + TestManagerService testManagerService) { + this.testManagerService = testManagerService; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + + String collectionId = request.getParameter("collectionId"); + String resultUuid = request.getParameter("resultUuid"); + + testManagerService.removeResultFromCollection(collectionId, resultUuid); + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName(getViewName()); + return modelAndView; + } +} 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 index 000000000..33d048617 --- /dev/null +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionListController.java @@ -0,0 +1,34 @@ +package org.argeo.slc.web.mvc.result; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao; + +public class ResultCollectionListController extends + ParameterizableViewController { + private final TreeTestResultCollectionDao testResultCollectionDao; + + public ResultCollectionListController( + TreeTestResultCollectionDao testResultCollectionDao) { + this.testResultCollectionDao = testResultCollectionDao; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + + // no need to retrieve since collection list is always in session + +// SortedSet results = testResultCollectionDao +// .listCollections(); +// modelAndView.addObject("resultCollections", results); + + modelAndView.setViewName(getViewName()); + return modelAndView; + } +} 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 index 000000000..7d1b038ff --- /dev/null +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionViewController.java @@ -0,0 +1,40 @@ +package org.argeo.slc.web.mvc.result; + +import java.util.SortedSet; +import java.util.TreeSet; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +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.dao.test.tree.TreeTestResultDao; + +public class ResultCollectionViewController extends + ParameterizableViewController { + private final TreeTestResultCollectionDao testResultCollectionDao; + + public ResultCollectionViewController( + TreeTestResultCollectionDao testResultCollectionDao) { + this.testResultCollectionDao = testResultCollectionDao; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + + String id = request.getParameter("id"); + + TreeTestResultCollection resultCollection = testResultCollectionDao + .getTestResultCollection(id); + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("resultCollection", resultCollection); + modelAndView.setViewName(getViewName()); + return modelAndView; + } +} 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 index 000000000..51484133f --- /dev/null +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultInterceptor.java @@ -0,0 +1,27 @@ +package org.argeo.slc.web.mvc.result; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao; + +public class ResultInterceptor extends HandlerInterceptorAdapter { + private final TreeTestResultCollectionDao testResultCollectionDao; + + public ResultInterceptor(TreeTestResultCollectionDao testResultCollectionDao) { + this.testResultCollectionDao = testResultCollectionDao; + } + + @Override + public void postHandle(HttpServletRequest request, + HttpServletResponse response, Object handler, + ModelAndView modelAndView) throws Exception { + request.setAttribute("resultCollections", testResultCollectionDao + .listCollections()); + super.postHandle(request, response, handler, modelAndView); + } + +} diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultListController.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultListController.java index a83653105..c522642e5 100644 --- a/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultListController.java +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultListController.java @@ -1,6 +1,5 @@ package org.argeo.slc.web.mvc.result; -import java.util.Comparator; import java.util.SortedSet; import java.util.TreeSet; @@ -26,24 +25,7 @@ public class ResultListController extends ParameterizableViewController { ModelAndView modelAndView = new ModelAndView(); - Comparator comparator = new Comparator() { - - public int compare(TreeTestResult arg0, TreeTestResult arg1) { - if (arg0.getCloseDate() != null && arg1.getCloseDate() != null) { - return -arg0.getCloseDate().compareTo(arg1.getCloseDate()); - } else if (arg0.getCloseDate() != null - && arg1.getCloseDate() == null) { - return 1; - } else if (arg0.getCloseDate() == null - && arg1.getCloseDate() != null) { - return -1; - } else { - return arg0.getUuid().compareTo(arg1.getUuid()); - } - } - }; - SortedSet results = new TreeSet( - comparator); + SortedSet results = new TreeSet(); results.addAll(testResultDao.listTestResults()); modelAndView.addObject("results", results); modelAndView.setViewName(getViewName()); diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/ResultPartRequestEp.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/ResultPartRequestEp.java index 7e73ff831..5ef459866 100644 --- a/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/ResultPartRequestEp.java +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/ResultPartRequestEp.java @@ -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()); -- 2.39.2