--- /dev/null
+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;
+ }
+
+}