From 57f3f674573109ece71b4424e92a71acc12dff92 Mon Sep 17 00:00:00 2001 From: Charles du Jeu Date: Sat, 28 Feb 2009 12:49:34 +0000 Subject: [PATCH] Fetch Spec & Flow values git-svn-id: https://svn.argeo.org/slc/trunk@2207 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../argeo/slc/ria/execution/BatchEntrySpec.js | 26 ++++++ .../class/org/argeo/slc/ria/execution/Flow.js | 16 +++- .../org/argeo/slc/ria/execution/Module.js | 2 +- .../class/org/argeo/slc/ria/execution/Spec.js | 11 ++- .../org/argeo/slc/ria/execution/Value.js | 91 +++++++++++++++++++ 5 files changed, 143 insertions(+), 3 deletions(-) create mode 100644 org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Value.js diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/BatchEntrySpec.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/BatchEntrySpec.js index 3bb37fcdc..5eae2b3b1 100644 --- a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/BatchEntrySpec.js +++ b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/BatchEntrySpec.js @@ -15,5 +15,31 @@ qx.Class.define("org.argeo.slc.ria.execution.BatchEntrySpec", { this.setModule(module); this.setFlow(flow); this.setOriginalSpec(flow.getExecutionSpec()); + this.fetchInstanceValues(); + }, + + members : { + /** + * Fetch the Spec Values with the Flow Values to make the current instance value + */ + fetchInstanceValues : function(){ + var specValues = this.getOriginalSpec().getValues(); + var flow = this.getFlow(); + var instanceValues = {}; + for(var key in specValues){ + var flowValue = flow.getValue( + key, + specValues[key].getSpecType(), + specValues[key].getSpecSubType() + ); + var instValue = specValues[key].clone(); + if(flowValue){ + instValue.setValue(flowValue); + } + instanceValues[key] = instValue; + } + this.setValues(instanceValues); + this.debug(instanceValues); + } } }); \ No newline at end of file diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Flow.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Flow.js index 75da046ca..124e14e8a 100644 --- a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Flow.js +++ b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Flow.js @@ -25,6 +25,9 @@ qx.Class.define("org.argeo.slc.ria.execution.Flow", { executionSpec : { check : "org.argeo.slc.ria.execution.Spec" }, + values : { + check : "Node" + }, /** * Castor representation of the object */ @@ -53,7 +56,18 @@ qx.Class.define("org.argeo.slc.ria.execution.Flow", { name : org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_NAME), executionSpecName : org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_EXEC_SPEC_NAME) }); - } + var values = org.argeo.ria.util.Element.selectNodes(xmlNode, this.self(arguments).XPATH_VALUES); + this.setValues(values[0]); + }, + getValue: function(key, specType, specSubType){ + var xpath; + if(specType == "primitive"){ + xpath = 'slc:value[@key="'+key+'"]/slc:primitive-value[@type="'+specSubType+'"]/slc:value'; + }else if(specType == "ref"){ + xpath = 'slc:value[@key="'+key+'"]/slc:ref-value/slc:label'; + } + return org.argeo.ria.util.Element.getSingleNodeText(this.getValues(), xpath); + } } }); \ No newline at end of file diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Module.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Module.js index b3e303496..c95b9915b 100644 --- a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Module.js +++ b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Module.js @@ -46,7 +46,7 @@ qx.Class.define("org.argeo.slc.ria.execution.Module", { XPATH_NAME : "slc:execution-module-descriptor/slc:name", XPATH_VERSION : "slc:execution-module-descriptor/slc:version", XPATH_EXECUTION_FLOWS : "slc:execution-module-descriptor/slc:executionFlows/slc:execution-flow-descriptor", - XPATH_EXECUTION_SPECS : "slc:execution-module-descriptor/slc:executionSpecs/slc:simple-execution-spec" + XPATH_EXECUTION_SPECS : "slc:execution-module-descriptor/slc:executionSpecs/slc:default-execution-spec" }, construct : function(){ diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Spec.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Spec.js index 85a8d4a51..7b2caf8a0 100644 --- a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Spec.js +++ b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Spec.js @@ -30,7 +30,7 @@ qx.Class.define("org.argeo.slc.ria.execution.Spec", { statics : { XPATH_NAME : "@name", - XPATH_VALUES : "slc:values" + XPATH_VALUES : "slc:values/slc:value" }, construct : function(){ @@ -45,6 +45,15 @@ qx.Class.define("org.argeo.slc.ria.execution.Spec", { _applyXmlNode : function(xmlNode){ // Parse now this.setName(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_NAME)); + var values = org.argeo.ria.util.Element.selectNodes(xmlNode, this.self(arguments).XPATH_VALUES); + var parsedValues = {}; + for(var i=0;i