]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Fetch Spec & Flow values
authorCharles du Jeu <charles.dujeu@gmail.com>
Sat, 28 Feb 2009 12:49:34 +0000 (12:49 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Sat, 28 Feb 2009 12:49:34 +0000 (12:49 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@2207 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/BatchEntrySpec.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Flow.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Module.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Spec.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Value.js [new file with mode: 0644]

index 3bb37fcdcba615df1902d94f8fdbc1505e98ecb4..5eae2b3b1f2709e56d13dcd5c359180b70ff225c 100644 (file)
@@ -15,5 +15,31 @@ qx.Class.define("org.argeo.slc.ria.execution.BatchEntrySpec", {
                this.setModule(module);\r
                this.setFlow(flow);\r
                this.setOriginalSpec(flow.getExecutionSpec());\r
+               this.fetchInstanceValues();\r
+       },\r
+       \r
+       members :  {\r
+               /**\r
+                * Fetch the Spec Values with the Flow Values to make the current instance value\r
+                */\r
+               fetchInstanceValues : function(){\r
+                       var specValues = this.getOriginalSpec().getValues();\r
+                       var flow = this.getFlow();\r
+                       var instanceValues = {};\r
+                       for(var key in specValues){\r
+                               var flowValue = flow.getValue(\r
+                                                                       key, \r
+                                                                       specValues[key].getSpecType(), \r
+                                                                       specValues[key].getSpecSubType()\r
+                                                               );\r
+                               var instValue = specValues[key].clone();\r
+                               if(flowValue){\r
+                                       instValue.setValue(flowValue);\r
+                               }\r
+                               instanceValues[key] = instValue;\r
+                       }\r
+                       this.setValues(instanceValues);\r
+                       this.debug(instanceValues);\r
+               }\r
        }\r
 });
\ No newline at end of file
index 75da046ca4fa4f14d6baea06a1034e26130375c8..124e14e8ab9f5ebe68c57f85c0c40e3755608d18 100644 (file)
@@ -25,6 +25,9 @@ qx.Class.define("org.argeo.slc.ria.execution.Flow", {
                executionSpec : {\r
                        check : "org.argeo.slc.ria.execution.Spec"\r
                },\r
+               values : {\r
+                       check : "Node"\r
+               },\r
                /**\r
                 * Castor representation of the object \r
                 */\r
@@ -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),\r
                                executionSpecName : org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_EXEC_SPEC_NAME)\r
                        });\r
-               }               \r
+                       var values = org.argeo.ria.util.Element.selectNodes(xmlNode, this.self(arguments).XPATH_VALUES);\r
+                       this.setValues(values[0]);\r
+               },\r
+               getValue: function(key, specType, specSubType){\r
+                       var xpath;\r
+                       if(specType == "primitive"){\r
+                               xpath = 'slc:value[@key="'+key+'"]/slc:primitive-value[@type="'+specSubType+'"]/slc:value';\r
+                       }else if(specType == "ref"){\r
+                               xpath = 'slc:value[@key="'+key+'"]/slc:ref-value/slc:label';\r
+                       }\r
+                       return org.argeo.ria.util.Element.getSingleNodeText(this.getValues(), xpath);\r
+               }\r
        }       \r
        \r
 });
\ No newline at end of file
index b3e30349636dff62386a2a21e741ee7917c90668..c95b9915b6016cc157ab0571e7ec8418271b793e 100644 (file)
@@ -46,7 +46,7 @@ qx.Class.define("org.argeo.slc.ria.execution.Module", {
                XPATH_NAME : "slc:execution-module-descriptor/slc:name",\r
                XPATH_VERSION : "slc:execution-module-descriptor/slc:version",\r
                XPATH_EXECUTION_FLOWS : "slc:execution-module-descriptor/slc:executionFlows/slc:execution-flow-descriptor",\r
-               XPATH_EXECUTION_SPECS : "slc:execution-module-descriptor/slc:executionSpecs/slc:simple-execution-spec"\r
+               XPATH_EXECUTION_SPECS : "slc:execution-module-descriptor/slc:executionSpecs/slc:default-execution-spec"\r
        },\r
        \r
        construct : function(){\r
index 85a8d4a514127998b4e5f37040bca7e4cb65ec58..7b2caf8a0504c234e9acc62209f9b6f6fd5b2f88 100644 (file)
@@ -30,7 +30,7 @@ qx.Class.define("org.argeo.slc.ria.execution.Spec", {
        \r
        statics : {\r
                XPATH_NAME : "@name",\r
-               XPATH_VALUES : "slc:values"\r
+               XPATH_VALUES : "slc:values/slc:value"\r
        },\r
        \r
        construct : function(){\r
@@ -45,6 +45,15 @@ qx.Class.define("org.argeo.slc.ria.execution.Spec", {
                _applyXmlNode : function(xmlNode){\r
                        // Parse now\r
                        this.setName(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_NAME));\r
+                       var values = org.argeo.ria.util.Element.selectNodes(xmlNode, this.self(arguments).XPATH_VALUES);\r
+                       var parsedValues = {};\r
+                       for(var i=0;i<values.length;i++){\r
+                               //var valueNode = values[i];\r
+                               var value = new org.argeo.slc.ria.execution.Value();\r
+                               value.setXmlSpecNode(values[i]);\r
+                               parsedValues[value.getKey()] = value;\r
+                       }\r
+                       this.setValues(parsedValues);\r
                }               \r
        }       \r
        \r
diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Value.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Value.js
new file mode 100644 (file)
index 0000000..9981f46
--- /dev/null
@@ -0,0 +1,91 @@
+/**\r
+ * Wrapper for SlcValue object\r
+ */\r
+qx.Class.define("org.argeo.slc.ria.execution.Value", {\r
+       \r
+       extend : qx.core.Object,\r
+       \r
+       properties : {\r
+               /**\r
+                * Name of this Execution Flow \r
+                */\r
+               key : {\r
+                       check : "String",\r
+                       init : ""\r
+               },\r
+               specType : {\r
+                       check : "String",\r
+                       init : ""                       \r
+               },\r
+               specSubType : {\r
+                       check : "String"\r
+               },\r
+               parameter : {\r
+                       check : "Boolean"\r
+               },\r
+               frozen : {\r
+                       check : "Boolean"\r
+               },\r
+               hidden : {\r
+                       check : "Boolean"\r
+               },\r
+               value : {\r
+                       \r
+               },\r
+               /**\r
+                * Castor representation of the object \r
+                */\r
+               xmlSpecNode : {\r
+                       apply : "_applyXmlSpecNode"\r
+               }\r
+       },\r
+       \r
+       statics : {\r
+               XPATH_KEY : "@key"\r
+       },\r
+       \r
+       construct : function(){\r
+               this.base(arguments);\r
+       },\r
+       \r
+       members : {             \r
+               /**\r
+                * Init the object from an XML representation\r
+                * @param xmlNode {Node} Castor representation of this object\r
+                */\r
+               _applyXmlSpecNode : function(xmlNode){\r
+                       this.setKey(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, "@key"));\r
+                       var childs = xmlNode.childNodes;\r
+                       for(var i=0;i<childs.length;i++){\r
+                               var child = childs[i];\r
+                               if(child.nodeType != Node.ELEMENT_NODE) continue;\r
+                               if(child.nodeName == "slc:primitive-spec-attribute"){\r
+                                       this.setSpecType("primitive");\r
+                                       this.setSpecSubType(org.argeo.ria.util.Element.getSingleNodeText(child, "@type"));\r
+                                       if(org.argeo.ria.util.Element.getSingleNodeText(child, "slc:value")){\r
+                                               this.setValue(org.argeo.ria.util.Element.getSingleNodeText(child, "slc:value"));\r
+                                       }\r
+                               }else if(child.nodeName == "slc:ref-spec-attribute"){\r
+                                       this.setSpecType("ref");\r
+                                       this.setSpecSubType(org.argeo.ria.util.Element.getSingleNodeText(child, "@targetClassName"));\r
+                               }\r
+                               this.set({\r
+                                       parameter : (org.argeo.ria.util.Element.getSingleNodeText(child, "@isParameter")=="true"?true:false),\r
+                                       frozen : (org.argeo.ria.util.Element.getSingleNodeText(child, "@isFrozen")=="true"?true:false),\r
+                                       hidden : (org.argeo.ria.util.Element.getSingleNodeText(child, "@isHidden")=="true"?true:false)\r
+                               });                             \r
+                       }\r
+               },\r
+               \r
+               _applyXmlValue : function(xmlNode){\r
+                       var xpath;\r
+                       if(this.getSpecType() == "primitive"){\r
+                               xpath = "slc:primitive-value/slc:value";\r
+                       }else if(this.getSpecType() == "ref"){\r
+                               xpath = "slc:ref-value/slc:label";\r
+                       }\r
+                       this.setValue(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, xpath));\r
+               }\r
+       }       \r
+       \r
+});
\ No newline at end of file