diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2014-09-09 12:13:21 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2014-09-09 12:13:21 +0200 |
| commit | da731d2bb81666b9c697d9099da632e7dfcdc0f7 (patch) | |
| tree | 567693c3c48f3d15ecbb2dac4f9db03bb6e58c72 /src/main/java/com/c2kernel/process/module/Module.java | |
| parent | ae1e79e33fd30e3d8bcedbef8891a14a048276d7 (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.java | 135 |
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;
+ }
+
+
} |
