From 2827a4b2d5aea32dc3c26a80f47309a6b68ac34b Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 19 Jun 2012 21:00:29 +0200 Subject: Refactor modules Support workflows on module resources --- src/main/java/com/c2kernel/process/Module.java | 315 ------------------------- 1 file changed, 315 deletions(-) delete mode 100644 src/main/java/com/c2kernel/process/Module.java (limited to 'src/main/java/com/c2kernel/process/Module.java') diff --git a/src/main/java/com/c2kernel/process/Module.java b/src/main/java/com/c2kernel/process/Module.java deleted file mode 100644 index 6e5f8d1..0000000 --- a/src/main/java/com/c2kernel/process/Module.java +++ /dev/null @@ -1,315 +0,0 @@ -package com.c2kernel.process; - -import java.io.StringReader; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Properties; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; -import org.xml.sax.InputSource; - -import com.c2kernel.common.ObjectNotFoundException; -import com.c2kernel.entity.proxy.ItemProxy; -import com.c2kernel.events.Event; -import com.c2kernel.events.History; -import com.c2kernel.lifecycle.instance.predefined.entitycreation.Dependency; -import com.c2kernel.lifecycle.instance.predefined.entitycreation.DependencyMember; -import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewAgent; -import com.c2kernel.lifecycle.instance.predefined.entitycreation.NewItem; -import com.c2kernel.lifecycle.instance.predefined.entitycreation.Property; -import com.c2kernel.lifecycle.instance.stateMachine.States; -import com.c2kernel.lifecycle.instance.stateMachine.Transitions; -import com.c2kernel.lookup.DomainPath; -import com.c2kernel.persistency.outcome.Outcome; -import com.c2kernel.persistency.outcome.Viewpoint; -import com.c2kernel.scripting.ErrorInfo; -import com.c2kernel.scripting.Script; -import com.c2kernel.scripting.ScriptingEngineException; -import com.c2kernel.utils.CastorXMLUtility; -import com.c2kernel.utils.Logger; -import com.c2kernel.utils.Resource; - -public class Module { - - private final String ns, name, desc, version; - private String resURL; - private final ArrayList dependency = new ArrayList(); - private final Properties clientProps = new Properties(); - private final Properties serverProps = new Properties(); - private final HashMap clientScripts = new HashMap(); - private final HashMap serverScripts = new HashMap(); - private final ArrayList imports = new ArrayList(); - private static DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - private final DocumentBuilder parser; - private Document moduleDOM; - - static { - dbf.setValidating(false); - dbf.setNamespaceAware(false); - } - - public Module(String moduleXML) throws ModuleException { - try { - parser = dbf.newDocumentBuilder(); - moduleDOM = parser.parse(new InputSource(new StringReader(moduleXML))); - } catch (Exception e) { - Logger.error(e); - throw new ModuleException("Could not process modules. XML Parser exception"); - } - - Element root = (Element)moduleDOM.getElementsByTagName("CristalModule").item(0); - - // Get module metadata - ns = root.getAttribute("ns"); - name = root.getAttribute("name"); - - Element info = (Element)moduleDOM.getElementsByTagName("Info").item(0); - desc = ((Text)info.getElementsByTagName("Description").item(0).getFirstChild()).getData(); - version = ((Text)info.getElementsByTagName("Version").item(0).getFirstChild()).getData(); - NodeList nl = info.getElementsByTagName("Dependency"); - for (int i=0; i0) { - resURL = ((Text)nl.item(0).getFirstChild()).getData(); - Resource.addModuleBaseURL(ns, resURL); - } - - // Get config properties - nl = root.getElementsByTagName("Config"); - for (int i=0; i0) { - Element impElem = (Element)nl.item(0); - nl = impElem.getChildNodes(); - for (int i=0; i scripts = isServer?serverScripts:clientScripts; - Script thisScript = scripts.get(event); - if (thisScript == null) return null; - try { - Object result = thisScript.execute(); - if (result instanceof ErrorInfo) - return (ErrorInfo)result; - else - return new ErrorInfo(result.toString()); - } catch (ScriptingEngineException ex) { - Logger.error(ex); - return new ErrorInfo("Error running "+event+" script in module "+ns); - } - } - - public void importAll(ItemProxy serverEntity) { - for (ModuleImport thisImp : imports) { - if (thisImp instanceof ModuleResource) { - ModuleResource thisRes = (ModuleResource)thisImp; - try { - Bootstrap.verifyResource(ns, thisRes.importName, thisRes.resourceType, Resource.getTextResource(ns, thisRes.resourceLocation)); - } catch (Exception ex) { - Logger.error(ex); - } - } - else if (thisImp instanceof ModuleItem) { - ModuleItem thisItem = (ModuleItem)thisImp; - try { - NewItem item = new NewItem(thisItem.importName, "/desc/"+ns, thisItem.workflow); - item.propertyList = thisItem.props; - DomainPath itemPath = new DomainPath(new DomainPath(item.initialPath), item.name); - if (itemPath.exists()) continue; - serverEntity.requestAction( - Gateway.getLDAPLookup().getRoleManager().getAgentPath("system").getSysKey(), - "workflow/predefined/CreateNewItem", - Transitions.DONE, - CastorXMLUtility.marshall(item)); - Logger.msg("Module.importAll() - Created item: "+thisItem.importName); - ItemProxy newProxy = (ItemProxy)Gateway.getProxyManager().getProxy(itemPath); - History hist = new History(newProxy.getSystemKey(), newProxy); - for (String thisView : thisItem.outcomes.keySet()) { - String[] info = thisView.split(":"); - int version = Integer.parseInt(info[1]); - String data = Resource.getTextResource(ns, thisItem.outcomes.get(thisView)); - Event newEvent = hist.addEvent("system", "Admin", Transitions.DONE, "Import", "Import", "Import", States.FINISHED); - Outcome newOutcome = new Outcome(newEvent.getID(), data, info[0], version); - Viewpoint newLastView = new Viewpoint(newProxy.getSystemKey(), info[0], info[2], version, newEvent.getID()); - Gateway.getStorage().put(newProxy.getSystemKey(), newOutcome, newProxy); - Gateway.getStorage().put(newProxy.getSystemKey(), newLastView, newProxy); - } - for (Dependency thisDep : thisItem.deps) { - Gateway.getStorage().put(newProxy.getSystemKey(), thisDep.create(), newProxy); - } - Gateway.getStorage().commit(newProxy); - } catch (Exception ex) { - Logger.error("Error importing item "+thisItem.importName+" from module "+name); - Logger.error(ex); - } - } - else if (thisImp instanceof ModuleAgent) { - ModuleAgent thisAgent = (ModuleAgent)thisImp; - try { - Gateway.getLDAPLookup().getRoleManager().getAgentPath(thisAgent.importName); - Logger.msg(3, "Module.importAll() - User '"+thisAgent.importName+"' found."); - return; - } catch (ObjectNotFoundException ex) { } - Logger.msg("Module.importAll() - User '"+thisAgent.importName+"' not found. Creating."); - - NewAgent agent = new NewAgent(thisAgent.importName, thisAgent.password); - agent.roles = thisAgent.roles; - try { - serverEntity.requestAction( - Gateway.getLDAPLookup().getRoleManager().getAgentPath("system").getSysKey(), - "workflow/predefined/CreateNewAgent", - Transitions.DONE, - CastorXMLUtility.marshall(agent)); - } catch (Exception ex) { - Logger.error("Error importing agent "+thisAgent.importName+" from module "+name); - Logger.error(ex); - } - } - } - } - - public Properties getClientProperties() { - return clientProps; - } - - public Properties getServerProperties() { - return serverProps; - } - - public String getNs() { - return ns; - } - public String getName() { - return name; - } - public String getDesc() { - return desc; - } - public String getVersion() { - return version; - } - public String getResURL() { - return resURL; - } - public ArrayList getDependencies() { - return dependency; - } - public boolean hasDependency(String dep) { - return dependency.contains(dep); - } - - public abstract class ModuleImport { - String importName; - } - - public class ModuleResource extends ModuleImport { - String resourceType; - String resourceLocation; - } - - public class ModuleItem extends ModuleImport { - ArrayList props = new ArrayList(); - HashMap outcomes = new HashMap(); - ArrayList deps = new ArrayList(); - String workflow; - } - - public class ModuleAgent extends ModuleImport { - String password; - ArrayList roles = new ArrayList(); - } -} \ No newline at end of file -- cgit v1.2.3