]> 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/BatchEntrySpec.js
git-svn-id: https://svn.argeo.org/slc/trunk@2380 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / argeo-ria-lib / slc / class / org / argeo / slc / ria / execution / BatchEntrySpec.js
index 3bb37fcdcba615df1902d94f8fdbc1505e98ecb4..6269b49c064d5ac1411ec8071e8b7ef9dd79288d 100644 (file)
@@ -5,15 +5,83 @@ qx.Class.define("org.argeo.slc.ria.execution.BatchEntrySpec", {
        extend : org.argeo.slc.ria.execution.Spec,\r
        \r
        properties : {\r
+               /**\r
+                * Reference module\r
+                */\r
                module :{},\r
+               /**\r
+                * Reference flow\r
+                */\r
                flow : {},\r
+               /**\r
+                * Original Spec (values shall stay untouched).\r
+                */\r
                originalSpec : {}               \r
        },\r
        \r
+       /**\r
+        * Instance of BatchEntrySpec\r
+        * @param module {org.argeo.slc.ria.execution.Module} Reference module\r
+        * @param flow {org.argeo.slc.ria.execution.Flow} Reference flow\r
+        */\r
        construct : function(module, flow){\r
                this.base(arguments);\r
                this.setModule(module);\r
                this.setFlow(flow);\r
                this.setOriginalSpec(flow.getExecutionSpec());\r
+               this.setName(flow.getExecutionSpec().getName());\r
+               this.fetchInstanceValues();\r
+       },\r
+       \r
+       members :  {\r
+               /**\r
+                * Create a label to display in the batch list.\r
+                * @return {String} The label\r
+                */\r
+               getLabel : function(){\r
+                       var label = this.getModule().getName();\r
+                       label += "/" + this.getModule().getVersion();\r
+                       label += "/" + this.getFlow().getName();\r
+                       return label;\r
+               },\r
+                               \r
+               toXml : function(){                     \r
+                       var valuesXml = '';\r
+                       var values = this.getValues();\r
+                       for(var key in values){\r
+                               valuesXml += values[key].toValueXml();\r
+                       }\r
+                       var execFlowDescXML = '<slc:execution-flow-descriptor name="'+this.getFlow().getName()+'" executionSpec="'+this.getName()+'"><slc:values>'+valuesXml+'</slc:values></slc:execution-flow-descriptor>';\r
+                       \r
+                       var execSpecDescXML = this.getOriginalSpec().toXml();\r
+                       \r
+                       var moduleData = '<slc:module-name>'+this.getModule().getName()+'</slc:module-name><slc:module-version>'+this.getModule().getVersion()+'</slc:module-version>';\r
+                       \r
+                       return '<slc:realized-flow>'+moduleData + execFlowDescXML + execSpecDescXML +'</slc:realized-flow>';\r
+                       \r
+               },\r
+               \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