]> 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/SlcExecutionMessage.js
Adapt to IView interface changes / Update basic applets for testing new feature ...
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / argeo-ria-lib / slc / class / org / argeo / slc / ria / SlcExecutionMessage.js
index 1ef1b5ae9af87218d202be7bbdb58ffe383c048f..c9194f7f3eedce9d70747d5c1c02d2d87e4d6d3a 100644 (file)
@@ -5,7 +5,19 @@ qx.Class.define("org.argeo.slc.ria.SlcExecutionMessage", {
        extend : qx.core.Object,\r
        construct : function(uuid){\r
                this.base(arguments);\r
-               this.setUuid(uuid);\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.setAttributes({});\r
        },\r
        properties : {\r
                /**\r
@@ -42,12 +54,15 @@ qx.Class.define("org.argeo.slc.ria.SlcExecutionMessage", {
                        check : "String",\r
                        init : "user"\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
-                       init : {}\r
+                       check : "Map"\r
                }\r
        },\r
        members : {\r
@@ -64,21 +79,37 @@ qx.Class.define("org.argeo.slc.ria.SlcExecutionMessage", {
                 */\r
                toXml : function (){\r
                        var builder = new qx.util.StringBuilder();\r
-                       builder.add('<slc-execution 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
+                       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 attr = this.getAttributes();\r
                        if(qx.lang.Object.getLength(attr)){\r
-                               builder.add('<slc-attributes>');\r
+                               builder.add('<slc:attributes>');\r
                                for(var key in attr){\r
-                                       builder.add('<slc-attribute name="'+key+'">'+attr[key]+'</slc-attribute>');\r
+                                       builder.add('<slc:attribute name="'+key+'">'+attr[key]+'</slc:attribute>');\r
                                }\r
-                               builder.add('</slc-attributes>');\r
+                               builder.add('</slc:attributes>');\r
                        }\r
-                       builder.add('</slc-execution>');\r
+                       builder.add('</slc:slc-execution>');\r
                        return builder.get();\r
+               },\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