1   package org.argeo.people.e4.handlers;
2   
3   import javax.inject.Inject;
4   import javax.inject.Named;
5   import javax.jcr.Node;
6   import javax.jcr.Repository;
7   import javax.jcr.RepositoryException;
8   import javax.jcr.Session;
9   
10  import org.argeo.connect.e4.parts.AbstractConnectEditor;
11  import org.argeo.connect.resources.ResourcesService;
12  import org.argeo.connect.ui.SystemWorkbenchService;
13  import org.argeo.jcr.JcrUtils;
14  import org.argeo.people.PeopleException;
15  import org.argeo.people.PeopleService;
16  import org.argeo.people.PeopleTypes;
17  import org.argeo.people.ui.dialogs.EditJobDialog;
18  import org.eclipse.e4.core.di.annotations.Execute;
19  import org.eclipse.e4.ui.model.application.ui.basic.MPart;
20  import org.eclipse.jface.dialogs.Dialog;
21  import org.eclipse.jface.window.Window;
22  import org.eclipse.swt.widgets.Display;
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  public class EditJob {
36  	
37  	public final static String ID = "org.argeo.suite.e4.command.editJob";
38  	
39  	
40  	public final static String PARAM_RELEVANT_NODE_JCR_ID = "relevantNodeJcrId";
41  	public final static String PARAM_IS_BACKWARD = "isBackward";
42  
43  	
44  	@Inject
45  	private Repository repository;
46  	@Inject
47  	private ResourcesService resourcesService;
48  	@Inject
49  	private PeopleService peopleService;
50  	@Inject
51  	private SystemWorkbenchService systemWorkbenchService;
52  
53  	@Execute
54  	public void execute(MPart mPart, @Named(PARAM_RELEVANT_NODE_JCR_ID) String relevantNodeJcrId) {
55  		execute(mPart, relevantNodeJcrId, null);
56  	}
57  
58  	@Execute
59  	public void execute(MPart mPart, @Named(PARAM_RELEVANT_NODE_JCR_ID) String relevantNodeJcrId,
60  			@Named(PARAM_IS_BACKWARD) String isBackwardStr) {
61  		Session session = null;
62  		try {
63  			session = repository.login();
64  
65  			Node relevantNode = session.getNodeByIdentifier(relevantNodeJcrId);
66  
67  			Dialog diag;
68  			
69  			if (relevantNode.isNodeType(PeopleTypes.PEOPLE_JOB)) {
70  				
71  				
72  				boolean isBackward = isBackwardStr == null ? false : new Boolean(isBackwardStr);
73  				diag = new EditJobDialog(Display.getCurrent().getActiveShell(), "Edit employee information",
74  						resourcesService, peopleService, systemWorkbenchService, relevantNode, null, isBackward);
75  			} else {
76  				
77  				boolean isBackward = relevantNode.isNodeType(PeopleTypes.PEOPLE_ORG);
78  				diag = new EditJobDialog(Display.getCurrent().getActiveShell(), "Edit position", resourcesService,
79  						peopleService, systemWorkbenchService, null, relevantNode, isBackward);
80  			}
81  
82  			int result = diag.open();
83  			if (result == Window.OK) {
84  				
85  				
86  				
87  				
88  				((AbstractConnectEditor) mPart.getObject()).forceRefresh();
89  			}
90  		} catch (RepositoryException e) {
91  			throw new PeopleException("unexpected JCR error while opening " + "editor for newly created programm", e);
92  		} finally {
93  			JcrUtils.logoutQuietly(session);
94  		}
95  	}
96  
97  	
98  	
99  	
100 	
101 	
102 	
103 	
104 	
105 	
106 	
107 	
108 	
109 	
110 	
111 	
112 	
113 	
114 }