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; } }