summaryrefslogtreecommitdiff
path: root/src/main/java/com/c2kernel/process/module/Module.java
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-09-09 12:13:21 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-09-09 12:13:21 +0200
commitda731d2bb81666b9c697d9099da632e7dfcdc0f7 (patch)
tree567693c3c48f3d15ecbb2dac4f9db03bb6e58c72 /src/main/java/com/c2kernel/process/module/Module.java
parentae1e79e33fd30e3d8bcedbef8891a14a048276d7 (diff)
Replaced int sysKey Item identifier with UUID, which is now portable.
ItemPath objects are now used to identify Items throughout the kernel, replacing ints and Integers.
Diffstat (limited to 'src/main/java/com/c2kernel/process/module/Module.java')
-rw-r--r--src/main/java/com/c2kernel/process/module/Module.java135
1 files changed, 92 insertions, 43 deletions
diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java
index 1272026..2f4592f 100644
--- a/src/main/java/com/c2kernel/process/module/Module.java
+++ b/src/main/java/com/c2kernel/process/module/Module.java
@@ -4,34 +4,38 @@ import java.util.ArrayList;
import java.util.Properties;
import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.entity.imports.ImportAgent;
import com.c2kernel.entity.imports.ImportDependency;
import com.c2kernel.entity.imports.ImportDependencyMember;
-import com.c2kernel.entity.imports.ImportAgent;
import com.c2kernel.entity.imports.ImportItem;
-import com.c2kernel.entity.imports.ImportRole;
import com.c2kernel.entity.imports.ImportOutcome;
+import com.c2kernel.entity.imports.ImportRole;
import com.c2kernel.entity.proxy.AgentProxy;
import com.c2kernel.entity.proxy.ItemProxy;
import com.c2kernel.lookup.DomainPath;
import com.c2kernel.lookup.RolePath;
-import com.c2kernel.process.Bootstrap;
import com.c2kernel.process.Gateway;
+import com.c2kernel.property.Property;
import com.c2kernel.scripting.ErrorInfo;
import com.c2kernel.scripting.ScriptingEngineException;
import com.c2kernel.utils.Logger;
-public class Module {
+public class Module extends ImportItem {
- public String ns, name;
- public ModuleInfo info;
- public String resURL;
- public ModuleImports imports = new ModuleImports();
- public ArrayList<ModuleConfig> config = new ArrayList<ModuleConfig>();
- public ArrayList<ModuleScript> scripts = new ArrayList<ModuleScript>();
- public ImportItem moduleItem;
+ private ModuleInfo info;
+ private String resURL;
+ private ModuleImports imports = new ModuleImports();
+ private ArrayList<ModuleConfig> config = new ArrayList<ModuleConfig>();
+ private ArrayList<ModuleScript> scripts = new ArrayList<ModuleScript>();
public Module() {
super();
+ // Module properties
+ properties.add(new com.c2kernel.property.Property("Type", "Module", false));
+ setInitialPath("/desc/modules/");
+ setWorkflow("NoWorkflow");
+ setWorkflowVer(0);
+ imports.list.add(this);
}
public void runScript(String event, AgentProxy user, boolean isServer) throws ScriptingEngineException {
@@ -51,36 +55,41 @@ public class Module {
}
}
- public void addModuleItem(String moduleXML) {
- ImportItem moduleItem = new ImportItem(name, "/desc/modules/", "NoWorkflow", 0);
- // Module properties
- moduleItem.properties.add(new com.c2kernel.property.Property("Namespace", ns, false));
- moduleItem.properties.add(new com.c2kernel.property.Property("Name", name, false));
- moduleItem.properties.add(new com.c2kernel.property.Property("Type", "Module", false));
- moduleItem.properties.add(new com.c2kernel.property.Property("Version", info.version, true));
- // Add dependency for all children
- ImportDependency children = new ImportDependency("Contents");
- for (ModuleImport thisImport : imports.list) {
- DomainPath path = thisImport.path;
- if (path != null)
- children.dependencyMemberList.add(new ImportDependencyMember(path.toString()));
- }
- moduleItem.dependencyList.add(children);
- // Add moduleXML
+ public void setModuleXML(String moduleXML) {
ImportOutcome moduleOutcome = new ImportOutcome("Module", 0, "last", null);
moduleOutcome.data = moduleXML;
- moduleItem.outcomes.add(moduleOutcome);
- imports.list.add(moduleItem);
+ outcomes.add(moduleOutcome);
}
+ @Override
+ public void setNamespace(String ns) {
+ super.setNamespace(ns);
+ replaceProp(new Property("Namespace", ns, false));
+ }
+
+ @Override
+ public void setName(String name) {
+ super.setName(name);
+ replaceProp(new Property("Name", name, false));
+ }
+
+ private void replaceProp(Property newProp) {
+ for (Property prop : properties) {
+ if (prop.getName().equals("Namespace")) {
+ prop.setMutable(newProp.isMutable());
+ prop.setValue(newProp.getValue());
+ return;
+ }
+ }
+ properties.add(newProp);
+ }
public void importAll(ItemProxy serverEntity, AgentProxy systemAgent, String moduleXML, boolean reset) throws Exception {
- int systemAgentId = systemAgent.getSystemKey();
- addModuleItem(moduleXML);
+ setModuleXML(moduleXML);
for (ModuleResource thisRes : imports.getResources()) {
try {
- thisRes.path = Bootstrap.verifyResource(ns, thisRes.name, thisRes.version,
- thisRes.resourceType, thisRes.resourceLocation, reset);
+ thisRes.setNamespace(ns);
+ thisRes.create(systemAgent.getPath(), reset);
} catch (Exception ex) {
Logger.error(ex);
Logger.die("Error importing module resources. Unsafe to continue.");
@@ -91,13 +100,13 @@ public class Module {
RolePath rolePath;
try {
rolePath = Gateway.getLookup().getRolePath(thisRole.name);
- if (rolePath.hasJobList() != thisRole.jobList) {
+ if (rolePath.hasJobList() != thisRole.hasJobList()) {
Logger.msg("Module.importAll() - Role '"+thisRole.name+"' has incorrect joblist settings. Correcting.");
- rolePath.setHasJobList(thisRole.jobList);
+ rolePath.setHasJobList(thisRole.hasJobList());
}
} catch (ObjectNotFoundException ex) {
Logger.msg("Module.importAll() - Role '"+thisRole.name+"' not found. Creating.");
- thisRole.create(systemAgentId);
+ thisRole.create(systemAgent.getPath(), reset);
}
}
@@ -108,12 +117,12 @@ public class Module {
continue;
} catch (ObjectNotFoundException ex) { }
Logger.msg("Module.importAll() - User '"+thisAgent.name+"' not found. Creating.");
- thisAgent.create(systemAgentId);
+ thisAgent.create(systemAgent.getPath(), reset);
}
for (ImportItem thisItem : imports.getItems()) {
thisItem.setNamespace(ns);
- thisItem.create(systemAgentId, reset);
+ thisItem.create(systemAgent.getPath(), reset);
}
}
@@ -126,12 +135,13 @@ public class Module {
}
return props;
}
-
- public String getNs() {
- return ns;
+
+ public ArrayList<ModuleScript> getScripts() {
+ return scripts;
}
- public String getName() {
- return name;
+
+ public void setResURL(String resURL) {
+ this.resURL = resURL;
}
public String getDesc() {
return info.desc;
@@ -148,4 +158,43 @@ public class Module {
public boolean hasDependency(String dep) {
return info.dependency.contains(dep);
}
+
+ public ModuleInfo getInfo() {
+ return info;
+ }
+
+ public void setInfo(ModuleInfo info) {
+ this.info = info;
+ replaceProp(new Property("Version", info.version, true));
+ }
+
+ public ModuleImports getImports() {
+ return imports;
+ }
+
+ public void setImports(ModuleImports imp) {
+ // Add dependency for all children
+ imports = imp;
+ ImportDependency children = new ImportDependency("Contents");
+ for (ModuleImport thisImport : imports.list) {
+ DomainPath path = thisImport.domainPath;
+ if (path != null)
+ children.dependencyMemberList.add(new ImportDependencyMember(path.toString()));
+ }
+ dependencyList.add(children);
+ }
+
+ public void setConfig(ArrayList<ModuleConfig> config) {
+ this.config = config;
+ }
+
+ public void setScripts(ArrayList<ModuleScript> scripts) {
+ this.scripts = scripts;
+ }
+
+ public ArrayList<ModuleConfig> getConfig() {
+ return config;
+ }
+
+
}