]> 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/BatchEntrySpec.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 / BatchEntrySpec.js
1 /**
2 * Data model for an entry of the Batch list : original Spec, flow and module, and currently computed value.
3 */
4 qx.Class.define("org.argeo.slc.ria.execution.BatchEntrySpec", {
5 extend : org.argeo.slc.ria.execution.Spec,
6
7 properties : {
8 /**
9 * Reference module
10 */
11 module :{},
12 /**
13 * Reference flow
14 */
15 flow : {},
16 /**
17 * Original Spec (values shall stay untouched).
18 */
19 originalSpec : {}
20 },
21
22 /**
23 * Instance of BatchEntrySpec
24 * @param module {org.argeo.slc.ria.execution.Module} Reference module
25 * @param flow {org.argeo.slc.ria.execution.Flow} Reference flow
26 */
27 construct : function(module, flow, xmlElement){
28 this.base(arguments);
29 if(xmlElement){
30 this.fromXml(xmlElement);
31 }else{
32 this.setModule(module);
33 this.setFlow(flow);
34 this.setOriginalSpec(flow.getExecutionSpec());
35 this.setName(flow.getExecutionSpec().getName());
36 }
37 this.fetchInstanceValues();
38 },
39
40 members : {
41 /**
42 * Create a label to display in the batch list.
43 * @return {String} The label
44 */
45 getLabel : function(){
46 var label = this.getModule().getName();
47 label += "/" + this.getModule().getVersion();
48 label += "/" + this.getFlow().getName();
49 return label;
50 },
51
52 toXml : function(){
53 var valuesXml = '';
54 var values = this.getValues();
55 for(var key in values){
56 if(values[key].getValue() == null && !values[key].isFrozen() && !values[key].isHidden()){
57 throw new Error("Cannot send empty values! (Parameter "+key+")");
58 }
59 valuesXml += values[key].toValueXml();
60 }
61 var execFlowDescXML = '<slc:execution-flow-descriptor name="'+this.getFlow().getName()+'" executionSpec="'+this.getName()+'">';
62 if(this.getFlow().getDescription()!=""){
63 execFlowDescXML += '<slc:description>'+this.getFlow().getDescription()+'</slc:description>';
64 }
65 execFlowDescXML += '<slc:values>'+valuesXml+'</slc:values></slc:execution-flow-descriptor>';
66
67 var execSpecDescXML = this.getOriginalSpec().toXml();
68
69 var moduleData = this.getModule().moduleDataToXml();
70
71 return '<slc:realized-flow>'+moduleData + execFlowDescXML + execSpecDescXML +'</slc:realized-flow>';
72
73 },
74
75 fromXml : function(xmlElement){
76 var parser = org.argeo.ria.util.Element;
77 var simpleModule = new org.argeo.slc.ria.execution.Module();
78 simpleModule.setName(parser.getSingleNodeText(xmlElement, "slc:module-name"));
79 simpleModule.setVersion(parser.getSingleNodeText(xmlElement, "slc:module-version"));
80 this.setModule(simpleModule);
81
82 var spec = new org.argeo.slc.ria.execution.Spec();
83 var flow = new org.argeo.slc.ria.execution.Flow();
84 spec.setXmlNode(parser.selectSingleNode(xmlElement, "slc:default-execution-spec"));
85 flow.setXmlNode(parser.selectSingleNode(xmlElement, "slc:execution-flow-descriptor"));
86 flow.setExecutionSpec(spec);
87 this.setOriginalSpec(spec);
88 this.setFlow(flow);
89 this.setName(spec.getName());
90
91 },
92
93 /**
94 * Fetch the Spec Values with the Flow Values to make the current instance value
95 */
96 fetchInstanceValues : function(){
97 var specValues = this.getOriginalSpec().getValues();
98 var flow = this.getFlow();
99 var instanceValues = {};
100 for(var key in specValues){
101 var flowValue = flow.getValue(
102 key,
103 specValues[key].getSpecType(),
104 specValues[key].getSpecSubType()
105 );
106 var instValue = specValues[key].clone();
107 if(flowValue){
108 instValue.setValue(flowValue);
109 }
110 instanceValues[key] = instValue;
111 }
112 this.setValues(instanceValues);
113 }
114 }
115 });