From da731d2bb81666b9c697d9099da632e7dfcdc0f7 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 9 Sep 2014 12:13:21 +0200 Subject: 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. --- .../java/com/c2kernel/process/module/Module.java | 135 ++++++++++++++------- 1 file changed, 92 insertions(+), 43 deletions(-) (limited to 'src/main/java/com/c2kernel/process/module/Module.java') 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 config = new ArrayList(); - public ArrayList scripts = new ArrayList(); - public ImportItem moduleItem; + private ModuleInfo info; + private String resURL; + private ModuleImports imports = new ModuleImports(); + private ArrayList config = new ArrayList(); + private ArrayList scripts = new ArrayList(); 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 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 config) { + this.config = config; + } + + public void setScripts(ArrayList scripts) { + this.scripts = scripts; + } + + public ArrayList getConfig() { + return config; + } + + } -- cgit v1.2.3