From 602488edc547279a5137e4db1dd0f6daeaa7e20c Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 2 Aug 2013 15:01:39 +0200 Subject: Module resources can specify version number, which overrides the default version viewpoint of '0'. --- src/main/java/com/c2kernel/process/Bootstrap.java | 20 +++++++++++--------- .../java/com/c2kernel/process/module/Module.java | 2 +- .../com/c2kernel/process/module/ModuleResource.java | 1 + src/main/resources/boot/OD/Module.xsd | 9 +++++---- src/main/resources/mapFiles/ModuleMap.xml | 3 +++ 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/c2kernel/process/Bootstrap.java b/src/main/java/com/c2kernel/process/Bootstrap.java index a4fc6a9..08cf2e7 100644 --- a/src/main/java/com/c2kernel/process/Bootstrap.java +++ b/src/main/java/com/c2kernel/process/Bootstrap.java @@ -103,7 +103,7 @@ public class Bootstrap String data = Resource.getTextResource(ns, "boot/"+thisItem+(itemType.equals("OD")?".xsd":".xml")); if (data == null) Logger.die("No data found for "+getDataType(itemType)+" "+itemName); - verifyResource(ns, itemName, itemType, data, reset); + verifyResource(ns, itemName, 0, itemType, data, reset); } catch (Exception e) { Logger.error(e); Logger.die("Error importing bootstrap items. Unsafe to continue."); @@ -112,8 +112,10 @@ public class Bootstrap } - public static void verifyResource(String ns, String itemName, String itemType, String data, boolean reset) throws Exception { - Logger.msg(1, "Bootstrap.verifyResource() - Verifying data of "+getDataType(itemType)+" "+itemName); + public static void verifyResource(String ns, String itemName, Integer version, String itemType, String data, boolean reset) throws Exception { + if (version == null) version = 0; + Logger.msg(1, "Bootstrap.verifyResource() - Verifying version "+version+" of "+getDataType(itemType)+" "+itemName); + Enumeration en = Gateway.getLDAPLookup().search(getTypeRoot(itemType), itemName); ItemProxy thisProxy; Outcome newOutcome = new Outcome(0, data, getDataType(itemType), 0); @@ -126,7 +128,7 @@ public class Bootstrap DomainPath path = (DomainPath)en.nextElement(); thisProxy = (ItemProxy)Gateway.getProxyManager().getProxy(path); try { - Viewpoint currentData = (Viewpoint)thisProxy.getObject(ClusterStorage.VIEWPOINT+"/"+getDataType(itemType)+"/last"); + Viewpoint currentData = (Viewpoint)thisProxy.getObject(ClusterStorage.VIEWPOINT+"/"+getDataType(itemType)+"/"+version); Outcome oldData = currentData.getOutcome(); XMLUnit.setIgnoreWhitespace(true); XMLUnit.setIgnoreComments(true); @@ -138,22 +140,22 @@ public class Bootstrap else { Logger.msg("Difference found in "+itemName+": "+xmlDiff.toString()); if (!reset && !currentData.getEvent().getStepPath().equals("Bootstrap")) { - Logger.msg("Last import was not done by Bootstrap, and reset not requested. Not overwriting."); + Logger.msg("Version "+version+" was not set by Bootstrap, and reset not requested. Not overwriting."); return; } } } catch (ObjectNotFoundException ex) { - Logger.error("Bootstrap.verifyResource() - Item exists but no data found! Attempting to insert new."); + Logger.error("Bootstrap.verifyResource() - Item "+itemName+" exists but version "+version+" not found! Attempting to insert new."); } } // data was missing or doesn't match - Logger.msg("Bootstrap.verifyResource() - Writing new data to "+getDataType(itemType)+" "+itemName); + Logger.msg("Bootstrap.verifyResource() - Writing new version "+version+" to "+getDataType(itemType)+" "+itemName); History hist = new History(thisProxy.getSystemKey(), thisProxy); - Event newEvent = hist.addEvent("system", "Admin", Transitions.DONE, "Bootstrap", "Bootstrap", "Bootstrap", getDataType(itemType), 0, "0", States.FINISHED); + Event newEvent = hist.addEvent("system", "Admin", Transitions.DONE, "Bootstrap", "Bootstrap", "Bootstrap", getDataType(itemType), 0, String.valueOf(version), States.FINISHED); newOutcome.setID(newEvent.getID()); Viewpoint newLastView = new Viewpoint(thisProxy.getSystemKey(), getDataType(itemType), "last", 0, newEvent.getID()); - Viewpoint newZeroView = new Viewpoint(thisProxy.getSystemKey(), getDataType(itemType), "0", 0, newEvent.getID()); + Viewpoint newZeroView = new Viewpoint(thisProxy.getSystemKey(), getDataType(itemType), String.valueOf(version), 0, newEvent.getID()); Gateway.getStorage().put(thisProxy.getSystemKey(), newOutcome, thisProxy); Gateway.getStorage().put(thisProxy.getSystemKey(), newLastView, thisProxy); Gateway.getStorage().put(thisProxy.getSystemKey(), newZeroView, thisProxy); diff --git a/src/main/java/com/c2kernel/process/module/Module.java b/src/main/java/com/c2kernel/process/module/Module.java index c93a695..a932361 100644 --- a/src/main/java/com/c2kernel/process/module/Module.java +++ b/src/main/java/com/c2kernel/process/module/Module.java @@ -79,7 +79,7 @@ public class Module { for (ModuleResource thisRes : imports.getResources()) { try { - Bootstrap.verifyResource(ns, thisRes.name, thisRes.resourceType, Resource.getTextResource(ns, thisRes.resourceLocation), reset); + Bootstrap.verifyResource(ns, thisRes.name, thisRes.version, thisRes.resourceType, Resource.getTextResource(ns, thisRes.resourceLocation), reset); } catch (Exception ex) { Logger.error(ex); } diff --git a/src/main/java/com/c2kernel/process/module/ModuleResource.java b/src/main/java/com/c2kernel/process/module/ModuleResource.java index 274e522..2f7b638 100644 --- a/src/main/java/com/c2kernel/process/module/ModuleResource.java +++ b/src/main/java/com/c2kernel/process/module/ModuleResource.java @@ -2,6 +2,7 @@ package com.c2kernel.process.module; public class ModuleResource extends ModuleImport { + public Integer version; public String resourceType; public String resourceLocation; diff --git a/src/main/resources/boot/OD/Module.xsd b/src/main/resources/boot/OD/Module.xsd index 1b54ac5..98220fd 100644 --- a/src/main/resources/boot/OD/Module.xsd +++ b/src/main/resources/boot/OD/Module.xsd @@ -55,6 +55,7 @@ + @@ -116,10 +117,7 @@ - - A new collection - with layout - + A new collection with layout @@ -129,6 +127,9 @@ + + X,Y specify centre point + diff --git a/src/main/resources/mapFiles/ModuleMap.xml b/src/main/resources/mapFiles/ModuleMap.xml index d858123..541b393 100644 --- a/src/main/resources/mapFiles/ModuleMap.xml +++ b/src/main/resources/mapFiles/ModuleMap.xml @@ -48,6 +48,9 @@ + + + -- cgit v1.2.3