X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.webapp%2Fsrc%2Fmain%2Fwebapp%2Fargeo-ria-lib%2Fslc%2Fclass%2Forg%2Fargeo%2Fslc%2Fria%2FSlcExecutionMessage.js;h=012ac49928bbc13f0f6e0449b01295a292858859;hb=51d1c842e4e92cc65708b8bb88152d7344d43d04;hp=1ef1b5ae9af87218d202be7bbdb58ffe383c048f;hpb=ad362af53b227d1ed89e9b46f0fee5b23e400488;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecutionMessage.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecutionMessage.js index 1ef1b5ae9..012ac4992 100644 --- a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecutionMessage.js +++ b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecutionMessage.js @@ -3,9 +3,25 @@ */ qx.Class.define("org.argeo.slc.ria.SlcExecutionMessage", { extend : qx.core.Object, + /** + * New instance + * @param uuid {String} The Uuid of the message. If none is passed, one is generated. + */ construct : function(uuid){ this.base(arguments); - this.setUuid(uuid); + if(uuid){ + this.setUuid(uuid); + }else{ + var s = []; + var itoh = '0123456789ABCDEF'; + for (var i = 0; i <36; i++) s[i] = Math.floor(Math.random()*0x10); + s[14] = 4; // Set 4 high bits of time_high field to version + s[19] = (s[19] & 0x3) | 0x8; // Specify 2 high bits of clock sequence + for (var i = 0; i <36; i++) s[i] = itoh[s[i]]; + s[8] = s[13] = s[18] = s[23] = '-'; + this.setUuid(s.join('').toLowerCase()); + } + this.setAttributes({}); }, properties : { /** @@ -42,16 +58,27 @@ qx.Class.define("org.argeo.slc.ria.SlcExecutionMessage", { check : "String", init : "user" }, + /** + * Date of the message. now() by default. + */ + date : { + check : "String", + init : new Date().toString() + }, /** * Additionnal attributes as map of key/values */ attributes : { - check : "Map", - init : {} + check : "Map" } }, members : { + /** + * Add a free attribute to the message + * @param attName {String} Name + * @param attValue {String} Value + */ addAttribute: function(attName, attValue){ var attr = this.getAttributes(); attr[attName] = attValue; @@ -64,21 +91,41 @@ qx.Class.define("org.argeo.slc.ria.SlcExecutionMessage", { */ toXml : function (){ var builder = new qx.util.StringBuilder(); - builder.add(''); - builder.add(''+this.getStatus()+''); - builder.add(''+this.getType()+''); - builder.add(''+this.getHost()+''); - builder.add(''+this.getUser()+''); + builder.add(''); + builder.add(''+this.getStatus()+''); + builder.add(''+this.getType()+''); + builder.add(''+this.getHost()+''); + builder.add(''+this.getUser()+''); var attr = this.getAttributes(); if(qx.lang.Object.getLength(attr)){ - builder.add(''); + builder.add(''); for(var key in attr){ - builder.add(''+attr[key]+''); + builder.add(''+attr[key]+''); } - builder.add(''); + builder.add(''); } - builder.add(''); + builder.add(''); return builder.get(); + }, + + /** + * Parse an XML answer and fill the object with it. + * @param slcExecXml {String} An slcExecMessage mapped in XML. + */ + fromXml : function(slcExecXml){ + var NSMap = {slc:"http://argeo.org/projects/slc/schemas"}; + this.setStatus(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:status", NSMap)); + this.setType(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:type", NSMap)); + this.setHost(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:host", NSMap)); + this.setUser(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:user", NSMap)); + var attributes = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:attribute", NSMap); + for(var i=0;i