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 }