summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/entity/imports/ImportRole.java
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-09-18 10:39:05 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-09-18 10:39:05 +0200
commit3743d182d99dbed9d2be84dc357f6839ffe4d2ec (patch)
tree7fe88768469f34601c494f5b027bd9c3a6d622e7 /src/main/java/com/c2kernel/entity/imports/ImportRole.java
parent1537f39761e11669335f6499474f23b11cf2cf38 (diff)
Hierarchical Roles. Fixes #199
Diffstat (limited to 'src/main/java/com/c2kernel/entity/imports/ImportRole.java')
-rw-r--r--src/main/java/com/c2kernel/entity/imports/ImportRole.java28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/main/java/com/c2kernel/entity/imports/ImportRole.java b/src/main/java/com/c2kernel/entity/imports/ImportRole.java
index dc8f351..975c18b 100644
--- a/src/main/java/com/c2kernel/entity/imports/ImportRole.java
+++ b/src/main/java/com/c2kernel/entity/imports/ImportRole.java
@@ -1,9 +1,14 @@
package com.c2kernel.entity.imports;
+import java.util.Iterator;
+
import com.c2kernel.common.CannotManageException;
import com.c2kernel.common.ObjectAlreadyExistsException;
import com.c2kernel.common.ObjectCannotBeUpdated;
+import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.lookup.AgentPath;
+import com.c2kernel.lookup.Path;
+import com.c2kernel.lookup.RolePath;
import com.c2kernel.process.Gateway;
import com.c2kernel.process.module.ModuleImport;
@@ -15,8 +20,27 @@ public class ImportRole extends ModuleImport {
}
@Override
- public void create(AgentPath agentPath, boolean reset) throws ObjectAlreadyExistsException, ObjectCannotBeUpdated, CannotManageException {
- Gateway.getLookupManager().createRole(name, jobList);
+ public void create(AgentPath agentPath, boolean reset) throws ObjectAlreadyExistsException, ObjectCannotBeUpdated, CannotManageException, ObjectNotFoundException {
+ RolePath parent = new RolePath();
+ if (name.indexOf('/') > -1) {
+ String[] roleComp = name.split("/");
+ for (int i=0; i<roleComp.length-1; i++) {
+ Iterator<Path> childIter = parent.getChildren();
+ boolean found = false;
+ while (childIter.hasNext()) {
+ RolePath childRole = (RolePath)childIter.next();
+ if (childRole.getName().equals(roleComp[i])) {
+ parent = childRole;
+ found = true;
+ break;
+ }
+ }
+ if (!found) throw new ObjectNotFoundException("Parent role "+roleComp[i]+" was not found", "");
+ }
+ name = roleComp[roleComp.length-1];
+ }
+ RolePath newRole = new RolePath(parent, name, jobList);
+ if (!newRole.exists()) Gateway.getLookupManager().createRole(newRole);
}
public boolean hasJobList() {