]> git.argeo.org Git - gpl/argeo-slc.git/blob - eclipse/plugins/org.argeo.slc.client.ui/src/org/argeo/slc/client/ui/listeners/TestManagerServiceAdapter.java
solving the hibernate transaction problem
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.client.ui / src / org / argeo / slc / client / ui / listeners / TestManagerServiceAdapter.java
1 package org.argeo.slc.client.ui.listeners;
2
3 import org.argeo.slc.SlcException;
4 import org.argeo.slc.client.ui.ClientUiPlugin;
5 import org.argeo.slc.core.attachment.Attachment;
6 import org.argeo.slc.core.attachment.SimpleAttachment;
7 import org.argeo.slc.core.test.tree.TreeTestResult;
8 import org.argeo.slc.core.test.tree.TreeTestResultListener;
9 import org.argeo.slc.msg.test.tree.AddTreeTestResultAttachmentRequest;
10 import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
11 import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
12 import org.argeo.slc.msg.test.tree.ResultPartRequest;
13 import org.argeo.slc.services.TestManagerService;
14 import org.argeo.slc.test.TestResultPart;
15 import org.eclipse.ui.handlers.IHandlerService;
16
17 /** In memory access to a test manager service */
18 public class TestManagerServiceAdapter implements TreeTestResultListener {
19 // private static final Log log = LogFactory
20 // .getLog(TestManagerServiceAdapter.class);
21
22 private Boolean onlyOnClose = false;
23
24 private TestManagerService testManagerService;
25
26 public void resultPartAdded(TreeTestResult testResult,
27 TestResultPart testResultPart) {
28 if (onlyOnClose)
29 return;
30
31 if (testResult.getResultParts().size() == 1
32 && testResult.getResultParts().values().iterator().next()
33 .getParts().size() == 1) {
34 CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
35 testResult);
36 testManagerService.createTreeTestResult(req);
37 } else {
38 ResultPartRequest req = new ResultPartRequest(testResult);
39 testManagerService.addResultPart(req);
40 }
41 }
42
43 public void close(TreeTestResult testResult) {
44
45 if (onlyOnClose) {
46 CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
47 testResult);
48 testManagerService.createTreeTestResult(req);
49 } else {
50 CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(
51 testResult);
52 testManagerService.closeTreeTestResult(req);
53 }
54
55 // TODO : clean this -> pb of thread && commandID hardCoded.
56 // We force the refresh of the list view.
57 ClientUiPlugin.getDefault().getWorkbench().getDisplay()
58 .syncExec(new Runnable() {
59 public void run() {
60 IHandlerService handlerService = (IHandlerService) ClientUiPlugin
61 .getDefault().getWorkbench()
62 .getService(IHandlerService.class);
63 try {
64 handlerService
65 .executeCommand(
66 "org.argeo.slc.client.ui.RefreshResultList",
67 null);
68 handlerService
69 .executeCommand(
70 "org.argeo.slc.client.ui.RefreshProcessList",
71 null);
72
73 } catch (Exception e) {
74 e.printStackTrace();
75 throw new SlcException(
76 "Problem while rendering result. "
77 + e.getMessage());
78 }
79 }
80 }
81
82 );
83
84 }
85
86 public void addAttachment(TreeTestResult testResult, Attachment attachment) {
87 if (onlyOnClose)
88 return;
89 AddTreeTestResultAttachmentRequest req = new AddTreeTestResultAttachmentRequest();
90 req.setResultUuid(testResult.getUuid());
91 req.setAttachment((SimpleAttachment) attachment);
92 testManagerService.addAttachment(req);
93
94 }
95
96 /** Publishes the test result only when it gets closed. */
97 public void setOnlyOnClose(Boolean onlyOnClose) {
98 this.onlyOnClose = onlyOnClose;
99 }
100
101 public void setTestManagerService(TestManagerService testManagerService) {
102 this.testManagerService = testManagerService;
103 }
104
105 }