]> git.argeo.org Git - lgpl/argeo-commons.git/blob - InitUserHome.java
6bc5dff9f3db95507c1644d93da05b0693aa1598
[lgpl/argeo-commons.git] / InitUserHome.java
1 package org.argeo.eclipse.ui.jcr.commands;
2
3 import javax.jcr.Node;
4 import javax.jcr.Session;
5
6 import org.argeo.eclipse.ui.dialogs.Error;
7 import org.argeo.jcr.ArgeoNames;
8 import org.argeo.jcr.ArgeoTypes;
9 import org.eclipse.core.commands.AbstractHandler;
10 import org.eclipse.core.commands.ExecutionEvent;
11 import org.eclipse.core.commands.ExecutionException;
12
13 /** Init the user home directory within the node */
14 public class InitUserHome extends AbstractHandler {
15 private Session session;
16
17 private String defaultHome = "home";
18
19 public Object execute(ExecutionEvent event) throws ExecutionException {
20 String userID = "<not yet logged in>";
21 try {
22 userID = session.getUserID();
23 Node rootNode = session.getRootNode();
24 Node homeNode;
25 if (!rootNode.hasNode(defaultHome)) {
26 homeNode = rootNode.addNode(defaultHome, ArgeoTypes.ARGEO_HOME);
27 } else {
28 homeNode = rootNode.getNode(defaultHome);
29 }
30
31 if (!homeNode.hasNode(userID)) {
32 Node userHome = homeNode.addNode(userID);
33 userHome.addMixin(ArgeoTypes.ARGEO_USER_HOME);
34 userHome.setProperty(ArgeoNames.ARGEO_USER_ID, userID);
35 }
36 session.save();
37 } catch (Exception e) {
38 Error.show("Cannot initialize home for user '" + userID + "'", e);
39 }
40 return null;
41 }
42
43 public void setSession(Session session) {
44 this.session = session;
45 }
46
47 }