]> git.argeo.org Git - lgpl/argeo-commons.git/blob - commands/AddRole.java
Prepare next development cycle
[lgpl/argeo-commons.git] / commands / AddRole.java
1 package org.argeo.security.ui.commands;
2
3 import org.argeo.ArgeoException;
4 import org.argeo.security.ArgeoSecurityService;
5 import org.argeo.security.ui.views.RolesView;
6 import org.eclipse.core.commands.AbstractHandler;
7 import org.eclipse.core.commands.ExecutionEvent;
8 import org.eclipse.core.commands.ExecutionException;
9 import org.eclipse.ui.handlers.HandlerUtil;
10
11 /** Add a new role. */
12 public class AddRole extends AbstractHandler {
13 public final static String COMMAND_ID = "org.argeo.security.ui.addRole";
14 private ArgeoSecurityService securityService;
15 private String rolePrefix = "ROLE_";
16
17 public Object execute(ExecutionEvent event) throws ExecutionException {
18 RolesView rolesView = (RolesView) HandlerUtil
19 .getActiveWorkbenchWindow(event).getActivePage()
20 .findView(RolesView.ID);
21 String role = rolesView.getNewRole();
22 if (role.trim().equals(""))
23 return null;
24 if (role.equals(rolesView.getAddNewRoleText()))
25 return null;
26 role = role.trim().toUpperCase();
27 if (!role.startsWith(rolePrefix))
28 role = rolePrefix + role;
29 if (securityService.listEditableRoles().contains(role))
30 throw new ArgeoException("Role " + role + " already exists");
31 securityService.newRole(role);
32 rolesView.refresh();
33 return null;
34 }
35
36 public void setSecurityService(ArgeoSecurityService securityService) {
37 this.securityService = securityService;
38 }
39
40 }