]> git.argeo.org Git - gpl/argeo-slc.git/blob - server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/Spec.js
Add log4j for server JCR
[gpl/argeo-slc.git] / server / org.argeo.slc.ria / src / argeo-ria-lib / slc / class / org / argeo / slc / ria / execution / Spec.js
1 /**
2 * Wrapper for ExecutionSpec server object
3 */
4 qx.Class.define("org.argeo.slc.ria.execution.Spec", {
5
6 extend : qx.core.Object,
7
8 properties : {
9 /**
10 * Unique name of this spec
11 */
12 name : {
13 check : "String",
14 init : ""
15 },
16 /**
17 * Defined parameters
18 */
19 values : {
20 check : "Map"
21 },
22 /**
23 * Castor representation of this object
24 */
25 xmlNode : {
26 apply : "_applyXmlNode"
27 }
28 },
29
30 statics : {
31 XPATH_NAME : "@name",
32 XPATH_VALUES : "slc:values/slc:value"
33 },
34
35 construct : function(){
36 this.base(arguments);
37 this.setValues({});
38 },
39
40 members : {
41 hasEditableValues : function(){
42 var values = this.getValues();
43 if(!values) return false;
44 var editables = 0;
45 for(var key in values){
46 var valueObj = values[key];
47 if(!valueObj.getHidden() && !valueObj.getFrozen()){
48 editables ++;
49 }
50 }
51 return (editables > 0);
52 },
53
54 /**
55 * Init the object from an XML representation
56 * @param xmlNode {Node} Castor representation of this object
57 */
58 _applyXmlNode : function(xmlNode){
59 // Parse now
60 this.setName(org.argeo.ria.util.Element.getSingleNodeText(xmlNode, this.self(arguments).XPATH_NAME));
61 var values = org.argeo.ria.util.Element.selectNodes(xmlNode, this.self(arguments).XPATH_VALUES);
62 var parsedValues = {};
63 for(var i=0;i<values.length;i++){
64 //var valueNode = values[i];
65 var value = new org.argeo.slc.ria.execution.Value();
66 value.setXmlSpecNode(values[i]);
67 parsedValues[value.getKey()] = value;
68 }
69 this.setValues(parsedValues);
70 },
71 /**
72 * XML Representation of this object.
73 * @return {String} An XML String
74 */
75 toXml : function(){
76 return org.argeo.ria.util.Element.getXMLString(this.getXmlNode());
77 }
78 }
79
80 });