package com.c2kernel.utils; import com.c2kernel.common.InvalidDataException; import com.c2kernel.common.ObjectNotFoundException; import com.c2kernel.entity.proxy.ItemProxy; import com.c2kernel.lifecycle.ActivityDef; import com.c2kernel.lookup.DomainPath; import com.c2kernel.persistency.ClusterStorage; import com.c2kernel.persistency.ClusterStorageException; import com.c2kernel.persistency.outcome.Schema; import com.c2kernel.persistency.outcome.Viewpoint; import com.c2kernel.process.Gateway; public class LocalObjectLoader { private static ActDefCache actCache = new ActDefCache(); static public ItemProxy loadLocalObjectDef(String root, String name) throws ObjectNotFoundException { DomainPath defRoot = new DomainPath(root); DomainPath defPath = (DomainPath)defRoot.find(name); return (ItemProxy)Gateway.getProxyManager().getProxy(defPath); } static public String getScript(String scriptName, String scriptVersion) throws ObjectNotFoundException { Logger.msg(5, "Loading script "+scriptName+" v"+scriptVersion); try { ItemProxy script = loadLocalObjectDef("/desc/Script/", scriptName); Viewpoint scriptView = (Viewpoint)script.getObject(ClusterStorage.VIEWPOINT + "/Script/" + scriptVersion); return scriptView.getOutcome().getData(); } catch (ClusterStorageException ex) { Logger.error(ex); throw new ObjectNotFoundException("Error loading script " + scriptName + " version " + scriptVersion, ""); } } static public Schema getSchema(String schemaName, int schemaVersion) throws ObjectNotFoundException { Logger.msg(5, "Loading schema "+schemaName+" v"+schemaVersion); Schema thisSchema = new Schema(); thisSchema.docType = schemaName; thisSchema.docVersion = schemaVersion; // don't bother if this is the Schema schema - for bootstrap esp. if (schemaName.equals("Schema") && schemaVersion == 0) { thisSchema.breakApart = false; thisSchema.schema=""; return thisSchema; } ItemProxy schema = loadLocalObjectDef("/desc/OutcomeDesc/", schemaName); Viewpoint schemaView = (Viewpoint)schema.getObject(ClusterStorage.VIEWPOINT + "/Schema/" + schemaVersion); try { thisSchema.schema = schemaView.getOutcome().getData(); } catch (ClusterStorageException ex) { Logger.error(ex); throw new ObjectNotFoundException("Problem loading schema "+schemaName+" v"+schemaVersion+": "+ex.getMessage(), ""); } String breakApart = schema.getProperty("BreakApart"); thisSchema.breakApart = breakApart.equals("1"); return thisSchema; } /** * Retrieves a named version of activity def from the database * * @param actName - activity name * @param version - named version (String) * @return ActivityDef * @throws ObjectNotFoundException - When activity or version does not exist */ static public ActivityDef getActDef(String actName, String actVersion) throws ObjectNotFoundException, InvalidDataException { Logger.msg(5, "Loading activity def "+actName+" v"+actVersion); return actCache.get(actName, actVersion); } }