]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Value.js
Fetch Spec & Flow values
[gpl/argeo-slc.git] / 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/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