]> git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecutionMessage.js
4 columns instead of 3
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / argeo-ria-lib / slc / class / org / argeo / slc / ria / SlcExecutionMessage.js
1 /**
2 * A generic JMS slcExecution message encapsulator.
3 */
4 qx.Class.define("org.argeo.slc.ria.SlcExecutionMessage", {
5 extend : qx.core.Object,
6 construct : function(uuid){
7 this.base(arguments);
8 if(uuid){
9 this.setUuid(uuid);
10 }else{
11 var s = [];
12 var itoh = '0123456789ABCDEF';
13 for (var i = 0; i <36; i++) s[i] = Math.floor(Math.random()*0x10);
14 s[14] = 4; // Set 4 high bits of time_high field to version
15 s[19] = (s[19] & 0x3) | 0x8; // Specify 2 high bits of clock sequence
16 for (var i = 0; i <36; i++) s[i] = itoh[s[i]];
17 s[8] = s[13] = s[18] = s[23] = '-';
18 this.setUuid(s.join('').toLowerCase());
19 }
20 this.setAttributes({});
21 },
22 properties : {
23 /**
24 * The unique id identifying the message
25 */
26 uuid : {
27 check : "String"
28 },
29 /**
30 * Execution status
31 */
32 status : {
33 check : "String",
34 init : "STARTED"
35 },
36 /**
37 * Execution type
38 */
39 type : {
40 check : "String",
41 init : "slcAnt"
42 },
43 /**
44 * Execution Host
45 */
46 host : {
47 check : "String",
48 init : "localhost"
49 },
50 /**
51 * Execution User
52 */
53 user : {
54 check : "String",
55 init : "user"
56 },
57 date : {
58 check : "String",
59 init : new Date().toString()
60 },
61 /**
62 * Additionnal attributes as map of key/values
63 */
64 attributes : {
65 check : "Map"
66 }
67 },
68 members : {
69
70 addAttribute: function(attName, attValue){
71 var attr = this.getAttributes();
72 attr[attName] = attValue;
73 this.setAttributes(attr);
74 },
75 /**
76 * Build the xml formatted message body to send
77 *
78 * @return {String} The message content as Xml
79 */
80 toXml : function (){
81 var builder = new qx.util.StringBuilder();
82 builder.add('<slc:slc-execution xmlns:slc="http://argeo.org/projects/slc/schemas" uuid="'+this.getUuid()+'">');
83 builder.add('<slc:status>'+this.getStatus()+'</slc:status>');
84 builder.add('<slc:type>'+this.getType()+'</slc:type>');
85 builder.add('<slc:host>'+this.getHost()+'</slc:host>');
86 builder.add('<slc:user>'+this.getUser()+'</slc:user>');
87 var attr = this.getAttributes();
88 if(qx.lang.Object.getLength(attr)){
89 builder.add('<slc:attributes>');
90 for(var key in attr){
91 builder.add('<slc:attribute name="'+key+'">'+attr[key]+'</slc:attribute>');
92 }
93 builder.add('</slc:attributes>');
94 }
95 builder.add('</slc:slc-execution>');
96 return builder.get();
97 },
98
99 fromXml : function(slcExecXml){
100 var NSMap = {slc:"http://argeo.org/projects/slc/schemas"};
101 this.setStatus(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:status", NSMap));
102 this.setType(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:type", NSMap));
103 this.setHost(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:host", NSMap));
104 this.setUser(org.argeo.ria.util.Element.getSingleNodeText(slcExecXml, "slc:user", NSMap));
105 var attributes = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:attribute", NSMap);
106 for(var i=0;i<attributes.length;i++){
107 this.addAttribute(attribute.getAttribute("name"), attribute.firstChild);
108 }
109 var stepsDates = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:steps/slc:slc-execution-step/slc:begin", NSMap);
110 if(stepsDates.length){
111 this.setDate(org.argeo.ria.util.Element.getSingleNodeText(stepsDates[stepsDates.length-1], ".", NSMap));
112 }
113 }
114 }
115 });