summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2013-07-17 12:17:30 +0200
committerAndrew Branson <andrew.branson@cern.ch>2013-09-16 12:39:07 +0200
commitbce2990a1434bf78e85adbfc66cec1a402342f3c (patch)
treebd2fa9fd24650db0431b99f26a6341f8f31dc949
parentbeb0d5c91f228728092063a87827d5ecc4dd318f (diff)
Mapfile started
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/stateMachine/State.java31
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java16
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java72
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionOutcome.java36
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionResource.java9
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionScript.java27
-rw-r--r--src/main/resources/mapFiles/StateMachineMap.xml69
7 files changed, 238 insertions, 22 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/State.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/State.java
index 8c5924b..b4488c0 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/State.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/State.java
@@ -2,7 +2,6 @@ package com.c2kernel.lifecycle.instance.stateMachine;
import java.io.Serializable;
import java.util.ArrayList;
-import java.util.HashMap;
public class State implements Serializable {
@@ -15,6 +14,7 @@ public class State implements Serializable {
public State() {
possibleTransitions = new ArrayList<Transition>();
+ possibleTransitionIds = new ArrayList<Integer>();
}
public String getName() {
@@ -25,21 +25,20 @@ public class State implements Serializable {
this.name = name;
}
- public void setPossibleTransitionNames(ArrayList<Integer> newIds) {
- possibleTransitionIds = newIds;
- possibleTransitions.clear();
+
+ public int getCode() {
+ return code;
}
-
- protected boolean resolveTransitions(HashMap<Integer, Transition> transitions) {
- possibleTransitions.clear();
- boolean allFound = true;
- for (Integer name : possibleTransitionIds) {
- if (transitions.keySet().contains(name))
- possibleTransitions.add(transitions.get(name));
- else {
- allFound = false;
- }
- }
- return allFound;
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public boolean isProceeds() {
+ return proceeds;
+ }
+
+ public void setProceeds(boolean proceeds) {
+ this.proceeds = proceeds;
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java
index fe3e74b..29ad7da 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java
@@ -17,6 +17,7 @@ public class StateMachine implements Serializable
private final HashMap<Integer, Transition> transitionCodes;
State initialState;
+ int initialStateCode;
boolean isCoherent = false;
public StateMachine() {
@@ -61,4 +62,19 @@ public class StateMachine implements Serializable
public State getInitialState() {
return initialState;
}
+
+ public void setInitialState(State initialState) {
+ this.initialState = initialState;
+ initialStateCode = initialState.getCode();
+ }
+
+ public int getInitialStateCode() {
+ return initialStateCode;
+ }
+
+ public void setInitialStateCode(int initialStateCode) {
+ this.initialStateCode = initialStateCode;
+ initialState = stateCodes.get(initialStateCode);
+ if (initialState == null) isCoherent = false;
+ }
} \ No newline at end of file
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java
index 85383f7..36a3d50 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/Transition.java
@@ -23,13 +23,73 @@ public class Transition implements Serializable {
// permissions
String roleOverride;
- // schema properties
- String outcomeSchemaName, outcomeSchemaVersion; // Name & version of the schema of the data required for this transition.
- boolean outcomeRequired = true; // If true, then the data must be supplied to perform the transition, otherwise it is optional
-
- // script properties
- String scriptName, scriptVersion; // Name & version of the script to be run by the agent during this transition
+ TransitionOutcome outcome;
+ TransitionScript script;
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public State getOriginState() {
+ return originState;
+ }
+
+ public void setOriginState(State originState) {
+ this.originState = originState;
+ }
+
+ public State getTerminalState() {
+ return terminalState;
+ }
+
+ public void setTerminalState(State terminalState) {
+ this.terminalState = terminalState;
+ }
+
+ public String getEnabledProp() {
+ return enabledProp;
+ }
+
+ public void setEnabledProp(String enabledProp) {
+ this.enabledProp = enabledProp;
+ }
+
+ public boolean isRequiresActive() {
+ return requiresActive;
+ }
+
+ public void setRequiresActive(boolean requiresActive) {
+ this.requiresActive = requiresActive;
+ }
+
+ public String getRoleOverride() {
+ return roleOverride;
+ }
+
+ public void setRoleOverride(String roleOverride) {
+ this.roleOverride = roleOverride;
+ }
+
+ public TransitionOutcome getOutcome() {
+ return outcome;
+ }
+
+ public void setOutcome(TransitionOutcome outcome) {
+ this.outcome = outcome;
+ }
+
+ public TransitionScript getScript() {
+ return script;
+ }
+
+ public void setScript(TransitionScript script) {
+ this.script = script;
+ }
+
public Transition() {
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionOutcome.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionOutcome.java
new file mode 100644
index 0000000..9646bc3
--- /dev/null
+++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionOutcome.java
@@ -0,0 +1,36 @@
+package com.c2kernel.lifecycle.instance.stateMachine;
+
+public class TransitionOutcome extends TransitionResource {
+
+ // schema properties
+ String outcomeSchemaName, outcomeSchemaVersion; // Name & version of the schema of the data required for this transition.
+ boolean outcomeRequired = true; // If true, then the data must be supplied to perform the transition, otherwise it is optional
+
+ public TransitionOutcome() {
+ }
+
+ public String getOutcomeSchemaName() {
+ return outcomeSchemaName;
+ }
+
+ public void setOutcomeSchemaName(String outcomeSchemaName) {
+ this.outcomeSchemaName = outcomeSchemaName;
+ }
+
+ public String getOutcomeSchemaVersion() {
+ return outcomeSchemaVersion;
+ }
+
+ public void setOutcomeSchemaVersion(String outcomeSchemaVersion) {
+ this.outcomeSchemaVersion = outcomeSchemaVersion;
+ }
+
+ public boolean isOutcomeRequired() {
+ return outcomeRequired;
+ }
+
+ public void setOutcomeRequired(boolean outcomeRequired) {
+ this.outcomeRequired = outcomeRequired;
+ }
+
+}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionResource.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionResource.java
new file mode 100644
index 0000000..f644a4c
--- /dev/null
+++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionResource.java
@@ -0,0 +1,9 @@
+package com.c2kernel.lifecycle.instance.stateMachine;
+
+public class TransitionResource {
+
+ public TransitionResource() {
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionScript.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionScript.java
new file mode 100644
index 0000000..80a122a
--- /dev/null
+++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/TransitionScript.java
@@ -0,0 +1,27 @@
+package com.c2kernel.lifecycle.instance.stateMachine;
+
+public class TransitionScript extends TransitionResource {
+
+ // script properties
+ String scriptName, scriptVersion; // Name & version of the script to be run by the agent during this transition
+
+ public String getScriptName() {
+ return scriptName;
+ }
+
+ public void setScriptName(String scriptName) {
+ this.scriptName = scriptName;
+ }
+
+ public String getScriptVersion() {
+ return scriptVersion;
+ }
+
+ public void setScriptVersion(String scriptVersion) {
+ this.scriptVersion = scriptVersion;
+ }
+
+ public TransitionScript() {
+ }
+
+}
diff --git a/src/main/resources/mapFiles/StateMachineMap.xml b/src/main/resources/mapFiles/StateMachineMap.xml
new file mode 100644
index 0000000..cab2c89
--- /dev/null
+++ b/src/main/resources/mapFiles/StateMachineMap.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<mapping>
+ <class name="com.c2kernel.lifecycle.instance.stateMachine.StateMachine">
+ <map-to xml="StateMachine"/>
+ <field name="states"
+ type="com.c2kernel.lifecycle.instance.stateMachine.State"
+ collection="arraylist"
+ container="true"
+ direct="false">
+ <bind-xml name="States" node="element"/>
+ </field>
+ <field name="transitions"
+ type="com.c2kernel.lifecycle.instance.stateMachine.Transition"
+ collection="arraylist"
+ container="true"
+ direct="false">
+ <bind-xml name="Transitions" node="element"/>
+ </field>
+ <field name="initialStateCode" type="integer">
+ <bind-xml name="initialState" node="attribute"/>
+ </field>
+ </class>
+ <class name="com.c2kernel.lifecycle.instance.stateMachine.State">
+ <map-to xml="State"/>
+ <field name="id" type="integer" direct="false">
+ <bind-xml name="id" node="attribute"/>
+ </field>
+ <field name="name" type="string" direct="false">
+ <bind-xml name="name" node="attribute"/>
+ </field>
+ <field name="proceeds" type="boolean" direct="false">
+ <bind-xml name="proceeds" node="attribute"/>
+ </field>
+ </class>
+ <class name="com.c2kernel.lifecycle.instance.stateMachine.Transition">
+ <map-to xml="Transition"/>
+ <field name="id" type="integer" direct="false">
+ <bind-xml name="id" node="attribute"/>
+ </field>
+ <field name="name" type="string" direct="false">
+ <bind-xml name="name" node="attribute"/>
+ </field>
+ int originStateCode;
+ int terminalStateCode;
+ String enabledProp;
+ String roleOverride;
+ outcome;
+ script;
+ <field name="originStateCode" type="integer" direct="false">
+ <bind-xml name="origin" node="attribute"/>
+ </field>
+ <field name="terminalStateCode" type="integer" direct="false">
+ <bind-xml name="terminus" node="attribute"/>
+ </field>
+ <field name="enabledProp" type="string" direct="false">
+ <bind-xml name="enablingProperty" node="attribute"/>
+ </field>
+ <field name="roleOverride" type="string" direct="false">
+ <bind-xml name="roleOverride" node="attribute"/>
+ </field>
+ <field name="outcome" type="TransitionOutcome" direct="false">
+ <bind-xml name="Outcome" node="element"/>
+ </field>
+ <field name="script" type="TransitionScript" direct="false">
+ <bind-xml name="Script" node="element"/>
+ </field>
+ </class>
+
+</mapping>