1 package org
.argeo
.slc
.client
.ui
.commands
;
3 import java
.util
.HashMap
;
6 import org
.argeo
.slc
.SlcException
;
7 import org
.argeo
.slc
.execution
.ExecutionFlowDescriptor
;
8 import org
.argeo
.slc
.execution
.ExecutionModulesManager
;
9 import org
.argeo
.slc
.execution
.RealizedFlow
;
10 import org
.eclipse
.core
.commands
.AbstractHandler
;
11 import org
.eclipse
.core
.commands
.Command
;
12 import org
.eclipse
.core
.commands
.ExecutionEvent
;
13 import org
.eclipse
.core
.commands
.ExecutionException
;
14 import org
.eclipse
.core
.commands
.IParameter
;
17 public class RunSlcFlow
extends AbstractHandler
{
18 private ExecutionModulesManager modulesManager
;
20 public Object
execute(ExecutionEvent event
) throws ExecutionException
{
22 Command command
= event
.getCommand();
23 String name
= command
.getName();
24 String module
= name
.substring(0, name
.indexOf(':'));
25 String flowName
= name
.substring(name
.indexOf(':') + 1);
27 final RealizedFlow realizedFlow
= new RealizedFlow();
28 realizedFlow
.setModuleName(module
);
29 // FIXME deal with version
30 String version
= "0.0.0";
31 realizedFlow
.setModuleVersion(version
);
32 ExecutionFlowDescriptor efd
= new ExecutionFlowDescriptor();
33 efd
.setName(flowName
);
35 Map
<String
, Object
> values
= new HashMap
<String
, Object
>();
36 if (command
.getParameters() != null) {
37 for (IParameter param
: command
.getParameters()) {
38 String argName
= param
.getId();
39 // FIXME make it safer
40 Object value
= param
.getValues().getParameterValues()
41 .values().iterator().next();
42 values
.put(argName
, value
);
44 efd
.setValues(values
);
46 realizedFlow
.setFlowDescriptor(efd
);
47 // new Thread("SLC Flow " + name + " from Eclipse command "
48 // + command.getId()) {
49 // public void run() {
50 modulesManager
.start(realizedFlow
.getModuleNameVersion());
51 modulesManager
.execute(realizedFlow
);
55 } catch (Exception e
) {
56 throw new SlcException("Could not execute command "
57 + event
.getCommand() + " as SLC flow", e
);
61 public void setModulesManager(
62 ExecutionModulesManager executionModulesManager
) {
63 this.modulesManager
= executionModulesManager
;