1 package org
.argeo
.slc
.client
.ui
.commands
;
3 import java
.util
.HashMap
;
4 import java
.util
.Iterator
;
9 import org
.apache
.commons
.logging
.Log
;
10 import org
.apache
.commons
.logging
.LogFactory
;
11 import org
.argeo
.slc
.BasicNameVersion
;
12 import org
.argeo
.slc
.NameVersion
;
13 import org
.argeo
.slc
.SlcException
;
14 import org
.argeo
.slc
.deploy
.ModulesManager
;
15 import org
.argeo
.slc
.jcr
.SlcNames
;
16 import org
.argeo
.slc
.jcr
.SlcTypes
;
17 import org
.eclipse
.core
.commands
.AbstractHandler
;
18 import org
.eclipse
.core
.commands
.ExecutionEvent
;
19 import org
.eclipse
.core
.commands
.ExecutionException
;
20 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
21 import org
.eclipse
.core
.runtime
.IStatus
;
22 import org
.eclipse
.core
.runtime
.Status
;
23 import org
.eclipse
.core
.runtime
.jobs
.Job
;
24 import org
.eclipse
.jface
.viewers
.ISelection
;
25 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
26 import org
.eclipse
.ui
.handlers
.HandlerUtil
;
28 /** Deletes one or many results */
29 public class UpdateModule
extends AbstractHandler
{
30 private final static Log log
= LogFactory
.getLog(UpdateModule
.class);
32 private ModulesManager modulesManager
;
34 public Object
execute(ExecutionEvent event
) throws ExecutionException
{
35 final ISelection selection
= HandlerUtil
36 .getActiveWorkbenchWindow(event
).getActivePage().getSelection();
37 if (selection
!= null && selection
instanceof IStructuredSelection
) {
39 Job job
= new Job("Update modules") {
42 protected IStatus
run(IProgressMonitor monitor
) {
43 Iterator
<?
> it
= ((IStructuredSelection
) selection
)
47 Map
<String
, Node
> nodes
= new HashMap
<String
, Node
>();
48 nodes
: while (it
.hasNext()) {
50 if (obj
instanceof Node
) {
51 Node node
= (Node
) obj
;
52 Node executionModuleNode
= null;
53 while (executionModuleNode
== null) {
54 if (node
.isNodeType(SlcTypes
.SLC_EXECUTION_MODULE
)) {
55 executionModuleNode
= node
;
57 node
= node
.getParent();
58 if (node
.getPath().equals("/"))// root
62 if (!nodes
.containsKey(executionModuleNode
64 nodes
.put(executionModuleNode
.getPath(),
69 monitor
.beginTask("Update modules", nodes
.size());
70 for (Node executionModuleNode
: nodes
.values()) {
71 monitor
.subTask("Update "
72 + executionModuleNode
.getName());
73 NameVersion nameVersion
= new BasicNameVersion(
74 executionModuleNode
.getProperty(
75 SlcNames
.SLC_NAME
).getString(),
76 executionModuleNode
.getProperty(
77 SlcNames
.SLC_VERSION
).getString());
78 modulesManager
.upgrade(nameVersion
);
80 log
.info("Module " + nameVersion
+ " updated");
82 return Status
.OK_STATUS
;
83 } catch (Exception e
) {
84 throw new SlcException("Cannot update module " + obj
, e
);
85 // return Status.CANCEL_STATUS;
95 public void setModulesManager(ModulesManager modulesManager
) {
96 this.modulesManager
= modulesManager
;