]> git.argeo.org Git - gpl/argeo-slc.git/blob - server/org.argeo.slc.ria/src/argeo-ria-lib/jcr/class/org/argeo/jcr/ria/provider/XmlNodeProvider.js
Refresh/remove a query
[gpl/argeo-slc.git] / server / org.argeo.slc.ria / src / argeo-ria-lib / jcr / class / org / argeo / jcr / ria / provider / XmlNodeProvider.js
1 qx.Class.define("org.argeo.jcr.ria.provider.XmlNodeProvider", {
2 extend : qx.core.Object,
3 implement : [org.argeo.jcr.ria.provider.INodeProvider],
4
5 properties : {
6 settings :{
7 check : "Object"
8 },
9 xmlDoc : {
10
11 },
12 xmlDocLoaded : {
13 check : "Boolean",
14 init : false,
15 event : "changeXmlDocLoaded"
16 }
17 },
18
19 members : {
20 _xmlDoc : null,
21 initProvider : function(properties){
22 this.setSettings(properties);
23 },
24 /**
25 *
26 * @param node org.argeo.jcr.ria.model.Node
27 * @param nodeCallback Function
28 * @param childCallback Function
29 */
30 loadNode : function(node, depth, filter){
31 if(node.getLoadState() == "loaded") return;
32
33 if(this.getXmlDocLoaded()){
34 // Parse document and load
35 node.setName(this._xmlDoc.documentElement.nodeName);
36 var properties = this.getSettings();
37 node.fromDomElement(this._xmlDoc.documentElement);
38 node.setLoadState("loaded");
39 if(properties.dynamic){
40 this.setXmlDocLoaded(false);
41 }
42 }else{
43 this.addListenerOnce("changeXmlDocLoaded", function(){
44 this.loadNode(node, depth, filter);
45 }, this);
46 node.setLoadState("loading");
47 this.loadXmlDoc(node, depth, filter);
48 }
49 },
50
51 loadXmlDoc : function(node, depth, filter){
52 var properties = this.getSettings();
53 if(!properties.xmlSrc && !properties.xmlString) return;
54 if(properties.xmlSrc){
55 var request = new org.argeo.ria.remote.Request(properties.xmlSrc, 'GET', 'application/xml');
56 if(properties.dynamic && properties.pathParameter){
57 request.setParameter(properties.pathParameter, (node.getPath()|| "/"));
58 if(depth && depth != -1){
59 request.setParameter("depth", depth);
60 }
61 }
62 request.addListener("completed", function(response){
63 this._xmlDoc = response.getContent();
64 this.setXmlDocLoaded(true);
65 }, this);
66 request.send();
67 }else{
68 this._xmlDoc = qx.xml.Document.fromString(properties.xmlString);
69 this.setXmlDocLoaded(true);
70 }
71 }
72 }
73 });