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
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
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
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
\r
statics : {\r
XPATH_NAME : "@name",\r
- XPATH_VALUES : "slc:values"\r
+ XPATH_VALUES : "slc:values/slc:value"\r
},\r
\r
construct : function(){\r
_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
--- /dev/null
+/**\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