]>
git.argeo.org Git - gpl/argeo-slc.git/blob - server/org.argeo.slc.ria/src/argeo-ria-lib/jcr/class/org/argeo/jcr/ria/model/Node.js
1 qx
.Class
.define("org.argeo.jcr.ria.model.Node", {
2 extend
: org
.argeo
.jcr
.ria
.model
.AbstractItem
,
5 "clear" : "qx.event.type.Event",
6 "childNodeAdded" : "qx.event.type.Data",
7 "childNodeRemoved" : "qx.event.type.Data",
8 "childrenChanged" : "qx.event.type.Data",
10 "propertyAdded" : "qx.event.type.Data",
11 "propertyRemoved" : "qx.event.type.Data",
12 "propertiesChanged" : "qx.event.type.Data"
17 init
: "empty", // Can be "empty" => "loading" => "loaded"
18 event
: "changeLoadState"
21 check
: "org.argeo.jcr.ria.provider.INodeProvider",
26 construct : function(nodeName
, nodeProvider
, isRoot
){
29 this._properties
= {};
30 this.setName(nodeName
);
32 this.setNodeProvider(nodeProvider
);
44 load : function(depth
, filter
){
46 if(!filter
) filter
= '';
47 this.getNodeProvider().loadNode(this, depth
, filter
);
51 if(this.itemIsRoot()) return;
52 this.getParent().removeChild(this.getName());
55 fromDomElement : function(domElement
){
56 if(domElement
.nodeType
!= 1) return;
57 for(var i
=0;i
<domElement
.attributes
.length
;i
++){
58 var att
= domElement
.attributes
[i
];
59 if(!this.itemIsRoot() && att
.nodeName
.substring(0,5) == "xmlns"){
62 var property
= new org
.argeo
.jcr
.ria
.model
.Property(att
.nodeName
);
63 this.addProperty(property
);
64 property
.fromDomElement(att
);
66 for(var i
=0;i
<domElement
.childNodes
.length
;i
++){
67 var child
= domElement
.childNodes
[i
];
68 if(child
.nodeType
!= 1) continue;
69 var jcrChild
= new org
.argeo
.jcr
.ria
.model
.Node(child
.nodeName
, this.getNodeProvider());
70 this.addChild(jcrChild
);
71 jcrChild
.fromDomElement(child
);
73 //this.setLoadState("loaded");
76 fromXmlString : function(xmlString
){
77 var domDocument
= qx
.xml
.Document
.fromString(xmlString
);
78 var root
= domDocument
.documentElement
;
79 this.fromDomElement(root
);
82 toXmlString : function(recurse
, childrenWriter
){
83 var string
= "<"+this.getName();
84 var props
= this.getProperties();
85 for(var i
=0;i
<props
.length
;i
++){
86 string
+= " " + props
[i
].toXmlString();
90 var childs
= this.getChildren();
91 var childrenString
= "";
92 for(var j
=0;j
<childs
.length
;j
++){
93 childrenString
+= childs
[j
].toXmlString(recurse
, childrenWriter
);
96 string
+= childrenWriter(childrenString
);
98 string
+= childrenString
;
101 string
+= "</"+this.getName()+">";
105 getChild : function(childName
){
106 return this._children
[childName
];
108 getProperty : function(propertyName
){
109 return this._properties
[propertyName
];
111 addChild : function(childNode
){
112 this._children
[childNode
.getName()] = childNode
;
114 childNode
.setParent(this);
115 childNode
.setRoot(this.getRoot());
116 childNode
.setPath(this.getPath() + "/" + childNode
.getName());
118 this.fireDataEvent("childNodeAdded", childNode
);
119 this.fireDataEvent("childNodeChanged");
121 removeChild : function(childName
){
122 delete(this._children
[childName
]);
123 this.fireDataEvent("childNodeRemoved", childName
);
124 this.fireDataEvent("childNodeChanged");
126 addProperty : function(property
){
127 this._properties
[property
.getName()] = property
;
129 property
.setParent(this);
130 property
.setRoot(this.getRoot());
131 property
.setPath(this.getPath() + "/" + property
.getName());
133 this.fireDataEvent("propertyAdded", property
);
134 this.fireDataEvent("propertiesChanged");
136 removeProperty : function(propertyName
){
137 delete(this._properties
[propertyName
]);
138 this.fireDataEvent("propertyRemoved", propertyName
);
139 this.fireDataEvent("propertiesChanged");
141 getChildren : function(){
142 return qx
.lang
.Object
.getValues(this._children
);
144 getProperties : function(){
145 return qx
.lang
.Object
.getValues(this._properties
);
147 getChildrenCount : function(){
148 return qx
.lang
.Object
.getLength(this._children
);
150 getPropertiesCount : function(){
151 return qx
.lang
.Object
.getLength(this._properties
);