1
1
package org .baderlab .csplugins .enrichmentmap .commands ;
2
2
3
3
import java .io .File ;
4
+ import java .util .Arrays ;
4
5
import java .util .List ;
5
6
6
7
import org .baderlab .csplugins .enrichmentmap .commands .tunables .FilterTunables ;
7
8
import org .baderlab .csplugins .enrichmentmap .model .DataSetParameters ;
8
9
import org .baderlab .csplugins .enrichmentmap .model .EMCreationParameters ;
9
10
import org .baderlab .csplugins .enrichmentmap .resolver .ResolverTask ;
11
+ import org .baderlab .csplugins .enrichmentmap .task .CreateEMNetworkTask ;
10
12
import org .baderlab .csplugins .enrichmentmap .task .CreateEnrichmentMapTaskFactory ;
11
13
import org .baderlab .csplugins .enrichmentmap .util .NullTaskMonitor ;
12
14
import org .cytoscape .work .AbstractTask ;
13
15
import org .cytoscape .work .ContainsTunables ;
16
+ import org .cytoscape .work .FinishStatus ;
17
+ import org .cytoscape .work .ObservableTask ;
14
18
import org .cytoscape .work .SynchronousTaskManager ;
15
19
import org .cytoscape .work .TaskIterator ;
16
20
import org .cytoscape .work .TaskMonitor ;
21
+ import org .cytoscape .work .TaskObserver ;
17
22
import org .cytoscape .work .Tunable ;
18
23
19
24
import com .google .inject .Inject ;
20
25
21
- public class ResolverCommandTask extends AbstractTask {
26
+ public class ResolverCommandTask extends AbstractTask implements ObservableTask {
22
27
23
28
@ Tunable (required =true )
24
29
public File rootFolder ;
@@ -38,6 +43,8 @@ public class ResolverCommandTask extends AbstractTask {
38
43
@ Inject private CreateEnrichmentMapTaskFactory .Factory taskFactoryFactory ;
39
44
40
45
46
+ private Long [] result = { null };
47
+
41
48
42
49
@ Override
43
50
public void run (TaskMonitor tm ) throws Exception {
@@ -90,10 +97,36 @@ public void run(TaskMonitor tm) throws Exception {
90
97
91
98
CreateEnrichmentMapTaskFactory taskFactory = taskFactoryFactory .create (params , dataSets );
92
99
TaskIterator tasks = taskFactory .createTaskIterator ();
93
- taskManager .execute (tasks );
100
+
101
+ taskManager .execute (tasks , new TaskObserver () {
102
+ @ Override
103
+ public void taskFinished (ObservableTask task ) {
104
+ if (task instanceof CreateEMNetworkTask ) {
105
+ CreateEMNetworkTask networkTask = (CreateEMNetworkTask ) task ;
106
+ result [0 ] = networkTask .getResults (Long .class );
107
+ }
108
+ }
109
+ @ Override
110
+ public void allFinished (FinishStatus finishStatus ) { }
111
+ });
94
112
95
113
tm .setStatusMessage ("Done." );
96
114
}
97
115
116
+ @ Override
117
+ public List <Class <?>> getResultClasses () {
118
+ return Arrays .asList (String .class , Long .class );
119
+ }
120
+
121
+ @ Override
122
+ public <R > R getResults (Class <? extends R > type ) {
123
+ if (String .class .equals (type )) {
124
+ return type .cast (String .valueOf (result [0 ]));
125
+ }
126
+ if (Long .class .equals (type )) {
127
+ return type .cast (result [0 ]);
128
+ }
129
+ return null ;
130
+ }
98
131
99
132
}
0 commit comments