summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2013-08-02 15:01:39 +0200
committerAndrew Branson <andrew.branson@cern.ch>2013-08-02 15:01:39 +0200
commit602488edc547279a5137e4db1dd0f6daeaa7e20c (patch)
treeb18ab66a2efb15d301b23aadcae7e588c566f055
parenta7e90e86fa912ccb438d74f7def87e1bded9b7c4 (diff)
Module resources can specify version number, which overrides the default
version viewpoint of '0'.
-rw-r--r--src/main/java/com/c2kernel/process/Bootstrap.java20
-rw-r--r--src/main/java/com/c2kernel/process/module/Module.java2
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleResource.java1
-rw-r--r--src/main/resources/boot/OD/Module.xsd9
-rw-r--r--src/main/resources/mapFiles/ModuleMap.xml3
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<Path> 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 @@
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="version" type="xs:integer" use="optional" />
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
@@ -116,10 +117,7 @@
<xs:element name="Aggregation" minOccurs="0"
maxOccurs="unbounded">
<xs:annotation>
- <xs:documentation>
- A new collection
- with layout
- </xs:documentation>
+ <xs:documentation> A new collection with layout</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
@@ -129,6 +127,9 @@
<xs:sequence>
<xs:element name="Geometry" minOccurs="1"
maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation>X,Y specify centre point</xs:documentation>
+ </xs:annotation>
<xs:complexType>
<xs:attribute name="x" type="xs:int" use="required" />
<xs:attribute name="y" type="xs:int" use="required" />
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 @@
<field name="name" direct="true" type="string">
<bind-xml name="name" node="attribute" />
</field>
+ <field name="version" direct="true" type="integer">
+ <bind-xml name="version" node="attribute" />
+ </field>
<field name="resourceType" direct="true" type="string">
<bind-xml name="type" node="attribute" />
</field>