X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=eclipse%2Fplugins%2Fruntime%2Forg.argeo.slc.client.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Flisteners%2FTestManagerServiceAdapter.java;fp=eclipse%2Fplugins%2Fruntime%2Forg.argeo.slc.client.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Flisteners%2FTestManagerServiceAdapter.java;h=499559833f24eda809b65db637821a9f3bc5b2bd;hb=5e5b06fe0c831e66bc048d8bf8da40b32f79a5c9;hp=0000000000000000000000000000000000000000;hpb=09787bd2df473bd311af94f1af22c7f802257751;p=gpl%2Fargeo-slc.git diff --git a/eclipse/plugins/runtime/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/listeners/TestManagerServiceAdapter.java b/eclipse/plugins/runtime/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/listeners/TestManagerServiceAdapter.java new file mode 100644 index 000000000..499559833 --- /dev/null +++ b/eclipse/plugins/runtime/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/listeners/TestManagerServiceAdapter.java @@ -0,0 +1,105 @@ +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); + handlerService + .executeCommand( + "org.argeo.slc.client.ui.refreshProcessList", + 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; + } + +}