+++ /dev/null
-/**\r
- * A generic JMS slcExecution message encapsulator.\r
- */\r
-qx.Class.define("org.argeo.slc.ria.execution.Message", {\r
- extend : qx.core.Object,\r
- /**\r
- * New instance\r
- * @param uuid {String} The Uuid of the message. If none is passed, one is generated.\r
- */\r
- construct : function(uuid){\r
- this.base(arguments);\r
- if(uuid){\r
- this.setUuid(uuid);\r
- }else{\r
- var s = [];\r
- var itoh = '0123456789ABCDEF';\r
- for (var i = 0; i <36; i++) s[i] = Math.floor(Math.random()*0x10);\r
- s[14] = 4; // Set 4 high bits of time_high field to version\r
- s[19] = (s[19] & 0x3) | 0x8; // Specify 2 high bits of clock sequence\r
- for (var i = 0; i <36; i++) s[i] = itoh[s[i]];\r
- s[8] = s[13] = s[18] = s[23] = '-';\r
- this.setUuid(s.join('').toLowerCase()); \r
- }\r
- this.setBatchEntrySpecs([]);\r
- this.setAttributes({});\r
- },\r
- properties : {\r
- /**\r
- * The unique id identifying the message\r
- */\r
- uuid : {\r
- check : "String"\r
- },\r
- /**\r
- * Execution status\r
- */\r
- status : {\r
- check : "String",\r
- init : "STARTED"\r
- },\r
- /**\r
- * Execution type\r
- */\r
- type : {\r
- check : "String",\r
- init : "slcAnt"\r
- },\r
- /**\r
- * Execution Host\r
- */\r
- host : {\r
- check : "String",\r
- init : "localhost"\r
- },\r
- /**\r
- * Execution User\r
- */\r
- user : {\r
- check : "String",\r
- init : "user"\r
- },\r
- /**\r
- * Date of the message. now() by default.\r
- */\r
- date : {\r
- check : "String", \r
- init : new Date().toString()\r
- },\r
- /**\r
- * Additionnal attributes as map of key/values\r
- */\r
- attributes : {\r
- check : "Map"\r
- },\r
- batchEntrySpecs : {\r
- check : "Array"\r
- }\r
- },\r
- members : {\r
- \r
- /**\r
- * Add a free attribute to the message\r
- * @param attName {String} Name\r
- * @param attValue {String} Value\r
- */\r
- addAttribute: function(attName, attValue){\r
- var attr = this.getAttributes();\r
- attr[attName] = attValue;\r
- this.setAttributes(attr);\r
- },\r
- \r
- addBatchEntrySpec : function(entrySpec){\r
- this.getBatchEntrySpecs().push(entrySpec);\r
- },\r
- \r
- /**\r
- * Build the xml formatted message body to send\r
- * \r
- * @return {String} The message content as Xml\r
- */\r
- toXml : function (){\r
- var builder = new qx.util.StringBuilder();\r
- builder.add('<slc:slc-execution xmlns:slc="http://argeo.org/projects/slc/schemas" uuid="'+this.getUuid()+'">');\r
- builder.add('<slc:status>'+this.getStatus()+'</slc:status>');\r
- builder.add('<slc:type>'+this.getType()+'</slc:type>');\r
- builder.add('<slc:host>'+this.getHost()+'</slc:host>');\r
- builder.add('<slc:user>'+this.getUser()+'</slc:user>');\r
- var flows = this.getBatchEntrySpecs();\r
- if(flows.length){\r
- builder.add('<slc:realized-flows>');\r
- for(var i=0;i<flows.length;i++){\r
- builder.add(flows[i].toXml()); \r
- }\r
- builder.add('</slc:realized-flows>');\r
- } \r
- var attr = this.getAttributes();\r
- if(qx.lang.Object.getLength(attr)){\r
- builder.add('<slc:attributes>');\r
- for(var key in attr){\r
- builder.add('<slc:attribute name="'+key+'">'+attr[key]+'</slc:attribute>');\r
- }\r
- builder.add('</slc:attributes>');\r
- }\r
- builder.add('</slc:slc-execution>');\r
- return builder.get();\r
- },\r
- \r
- /**\r
- * Parse an XML answer and fill the object with it.\r
- * @param slcExecXml {String} An slcExecMessage mapped in XML.\r
- */\r
- fromXml : function(slcExecXml){\r
- var NSMap = {slc:"http://argeo.org/projects/slc/schemas"}; \r
- this.setStatus(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:status", NSMap));\r
- this.setType(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:type", NSMap));\r
- this.setHost(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:host", NSMap));\r
- this.setUser(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:user", NSMap));\r
- var attributes = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:attribute", NSMap);\r
- for(var i=0;i<attributes.length;i++){\r
- this.addAttribute(attribute.getAttribute("name"), attribute.firstChild);\r
- }\r
- var stepsDates = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:steps/slc:slc-execution-step/slc:begin", NSMap);\r
- if(stepsDates.length){\r
- this.setDate(org.argeo.ria.util.Element.getSingleNodeText(stepsDates[stepsDates.length-1], ".", NSMap));\r
- }\r
- }\r
- } \r
-});
\ No newline at end of file