]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - eclipse/plugins/org.argeo.slc.client.ui/src/org/argeo/slc/client/ui/listeners/TestManagerServiceAdapter.java
Remove dependency of client.rcp on client.ui
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.client.ui / src / org / argeo / slc / client / ui / listeners / TestManagerServiceAdapter.java
diff --git a/eclipse/plugins/org.argeo.slc.client.ui/src/org/argeo/slc/client/ui/listeners/TestManagerServiceAdapter.java b/eclipse/plugins/org.argeo.slc.client.ui/src/org/argeo/slc/client/ui/listeners/TestManagerServiceAdapter.java
new file mode 100644 (file)
index 0000000..6189591
--- /dev/null
@@ -0,0 +1,100 @@
+package org.argeo.slc.client.ui.listeners;
+
+import org.argeo.slc.SlcException;
+import org.argeo.slc.client.ui.ClientUiPlugin;
+import org.argeo.slc.core.attachment.Attachment;
+import org.argeo.slc.core.attachment.SimpleAttachment;
+import org.argeo.slc.core.test.tree.TreeTestResult;
+import org.argeo.slc.core.test.tree.TreeTestResultListener;
+import org.argeo.slc.msg.test.tree.AddTreeTestResultAttachmentRequest;
+import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
+import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
+import org.argeo.slc.msg.test.tree.ResultPartRequest;
+import org.argeo.slc.services.TestManagerService;
+import org.argeo.slc.test.TestResultPart;
+import org.eclipse.ui.handlers.IHandlerService;
+
+/** In memory access to a test manager service */
+public class TestManagerServiceAdapter implements TreeTestResultListener {
+       // private static final Log log = LogFactory
+       // .getLog(TestManagerServiceAdapter.class);
+
+       private Boolean onlyOnClose = false;
+
+       private TestManagerService testManagerService;
+
+       public void resultPartAdded(TreeTestResult testResult,
+                       TestResultPart testResultPart) {
+               if (onlyOnClose)
+                       return;
+
+               if (testResult.getResultParts().size() == 1
+                               && testResult.getResultParts().values().iterator().next()
+                                               .getParts().size() == 1) {
+                       CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
+                                       testResult);
+                       testManagerService.createTreeTestResult(req);
+               } else {
+                       ResultPartRequest req = new ResultPartRequest(testResult);
+                       testManagerService.addResultPart(req);
+               }
+       }
+
+       public void close(TreeTestResult testResult) {
+
+               if (onlyOnClose) {
+                       CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
+                                       testResult);
+                       testManagerService.createTreeTestResult(req);
+               } else {
+                       CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(
+                                       testResult);
+                       testManagerService.closeTreeTestResult(req);
+               }
+
+               // TODO : clean this -> pb of thread && commandID hardCoded.
+               // We force the refresh of the list view.
+               ClientUiPlugin.getDefault().getWorkbench().getDisplay().syncExec(
+                               new Runnable() {
+                                       public void run() {
+                                               IHandlerService handlerService = (IHandlerService) ClientUiPlugin
+                                                               .getDefault().getWorkbench().getService(
+                                                                               IHandlerService.class);
+                                               try {
+                                                       handlerService
+                                                                       .executeCommand(
+                                                                                       "org.argeo.slc.client.ui.RefreshResultList",
+                                                                                       null);
+                                               } catch (Exception e) {
+                                                       e.printStackTrace();
+                                                       throw new SlcException(
+                                                                       "Problem while rendering result. "
+                                                                                       + e.getMessage());
+                                               }
+                                       }
+                               }
+
+               );
+
+       }
+
+       public void addAttachment(TreeTestResult testResult, Attachment attachment) {
+               if (onlyOnClose)
+                       return;
+               AddTreeTestResultAttachmentRequest req = new AddTreeTestResultAttachmentRequest();
+               req.setResultUuid(testResult.getUuid());
+               req.setAttachment((SimpleAttachment) attachment);
+               testManagerService.addAttachment(req);
+
+       }
+
+       /** Publishes the test result only when it gets closed. */
+       public void setOnlyOnClose(Boolean onlyOnClose) {
+               this.onlyOnClose = onlyOnClose;
+       }
+
+       public void setTestManagerService(TestManagerService testManagerService) {
+               this.testManagerService = testManagerService;
+       }
+
+}