| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojox.data.XmlStore"]){ |
| dojo._hasResource["dojox.data.XmlStore"]=true; |
| dojo.provide("dojox.data.XmlStore"); |
| dojo.provide("dojox.data.XmlItem"); |
| dojo.require("dojo.data.util.simpleFetch"); |
| dojo.require("dojo.data.util.filter"); |
| dojo.require("dojox.xml.parser"); |
| dojo.declare("dojox.data.XmlStore",null,{constructor:function(_1){ |
| if(_1){ |
| this.url=_1.url; |
| this.rootItem=(_1.rootItem||_1.rootitem||this.rootItem); |
| this.keyAttribute=(_1.keyAttribute||_1.keyattribute||this.keyAttribute); |
| this._attributeMap=(_1.attributeMap||_1.attributemap); |
| this.label=_1.label||this.label; |
| this.sendQuery=(_1.sendQuery||_1.sendquery||this.sendQuery); |
| if("urlPreventCache" in _1){ |
| this.urlPreventCache=_1.urlPreventCache?true:false; |
| } |
| } |
| this._newItems=[]; |
| this._deletedItems=[]; |
| this._modifiedItems=[]; |
| },url:"",rootItem:"",keyAttribute:"",label:"",sendQuery:false,attributeMap:null,urlPreventCache:true,getValue:function(_2,_3,_4){ |
| var _5=_2.element; |
| var i; |
| var _6; |
| if(_3==="tagName"){ |
| return _5.nodeName; |
| }else{ |
| if(_3==="childNodes"){ |
| for(i=0;i<_5.childNodes.length;i++){ |
| _6=_5.childNodes[i]; |
| if(_6.nodeType===1){ |
| return this._getItem(_6); |
| } |
| } |
| return _4; |
| }else{ |
| if(_3==="text()"){ |
| for(i=0;i<_5.childNodes.length;i++){ |
| _6=_5.childNodes[i]; |
| if(_6.nodeType===3||_6.nodeType===4){ |
| return _6.nodeValue; |
| } |
| } |
| return _4; |
| }else{ |
| _3=this._getAttribute(_5.nodeName,_3); |
| if(_3.charAt(0)==="@"){ |
| var _7=_3.substring(1); |
| var _8=_5.getAttribute(_7); |
| return (_8)?_8:_4; |
| }else{ |
| for(i=0;i<_5.childNodes.length;i++){ |
| _6=_5.childNodes[i]; |
| if(_6.nodeType===1&&_6.nodeName===_3){ |
| return this._getItem(_6); |
| } |
| } |
| return _4; |
| } |
| } |
| } |
| } |
| },getValues:function(_9,_a){ |
| var _b=_9.element; |
| var _c=[]; |
| var i; |
| var _d; |
| if(_a==="tagName"){ |
| return [_b.nodeName]; |
| }else{ |
| if(_a==="childNodes"){ |
| for(i=0;i<_b.childNodes.length;i++){ |
| _d=_b.childNodes[i]; |
| if(_d.nodeType===1){ |
| _c.push(this._getItem(_d)); |
| } |
| } |
| return _c; |
| }else{ |
| if(_a==="text()"){ |
| var ec=_b.childNodes; |
| for(i=0;i<ec.length;i++){ |
| _d=ec[i]; |
| if(_d.nodeType===3||_d.nodeType===4){ |
| _c.push(_d.nodeValue); |
| } |
| } |
| return _c; |
| }else{ |
| _a=this._getAttribute(_b.nodeName,_a); |
| if(_a.charAt(0)==="@"){ |
| var _e=_a.substring(1); |
| var _f=_b.getAttribute(_e); |
| return (_f!==undefined)?[_f]:[]; |
| }else{ |
| for(i=0;i<_b.childNodes.length;i++){ |
| _d=_b.childNodes[i]; |
| if(_d.nodeType===1&&_d.nodeName===_a){ |
| _c.push(this._getItem(_d)); |
| } |
| } |
| return _c; |
| } |
| } |
| } |
| } |
| },getAttributes:function(_10){ |
| var _11=_10.element; |
| var _12=[]; |
| var i; |
| _12.push("tagName"); |
| if(_11.childNodes.length>0){ |
| var _13={}; |
| var _14=true; |
| var _15=false; |
| for(i=0;i<_11.childNodes.length;i++){ |
| var _16=_11.childNodes[i]; |
| if(_16.nodeType===1){ |
| var _17=_16.nodeName; |
| if(!_13[_17]){ |
| _12.push(_17); |
| _13[_17]=_17; |
| } |
| _14=true; |
| }else{ |
| if(_16.nodeType===3){ |
| _15=true; |
| } |
| } |
| } |
| if(_14){ |
| _12.push("childNodes"); |
| } |
| if(_15){ |
| _12.push("text()"); |
| } |
| } |
| for(i=0;i<_11.attributes.length;i++){ |
| _12.push("@"+_11.attributes[i].nodeName); |
| } |
| if(this._attributeMap){ |
| for(var key in this._attributeMap){ |
| i=key.indexOf("."); |
| if(i>0){ |
| var _18=key.substring(0,i); |
| if(_18===_11.nodeName){ |
| _12.push(key.substring(i+1)); |
| } |
| }else{ |
| _12.push(key); |
| } |
| } |
| } |
| return _12; |
| },hasAttribute:function(_19,_1a){ |
| return (this.getValue(_19,_1a)!==undefined); |
| },containsValue:function(_1b,_1c,_1d){ |
| var _1e=this.getValues(_1b,_1c); |
| for(var i=0;i<_1e.length;i++){ |
| if((typeof _1d==="string")){ |
| if(_1e[i].toString&&_1e[i].toString()===_1d){ |
| return true; |
| } |
| }else{ |
| if(_1e[i]===_1d){ |
| return true; |
| } |
| } |
| } |
| return false; |
| },isItem:function(_1f){ |
| if(_1f&&_1f.element&&_1f.store&&_1f.store===this){ |
| return true; |
| } |
| return false; |
| },isItemLoaded:function(_20){ |
| return this.isItem(_20); |
| },loadItem:function(_21){ |
| },getFeatures:function(){ |
| var _22={"dojo.data.api.Read":true,"dojo.data.api.Write":true}; |
| if(!this.sendQuery||this.keyAttribute!==""){ |
| _22["dojo.data.api.Identity"]=true; |
| } |
| return _22; |
| },getLabel:function(_23){ |
| if((this.label!=="")&&this.isItem(_23)){ |
| var _24=this.getValue(_23,this.label); |
| if(_24){ |
| return _24.toString(); |
| } |
| } |
| return undefined; |
| },getLabelAttributes:function(_25){ |
| if(this.label!==""){ |
| return [this.label]; |
| } |
| return null; |
| },_fetchItems:function(_26,_27,_28){ |
| var url=this._getFetchUrl(_26); |
| if(!url){ |
| _28(new Error("No URL specified.")); |
| return; |
| } |
| var _29=(!this.sendQuery?_26:{}); |
| var _2a=this; |
| var _2b={url:url,handleAs:"xml",preventCache:_2a.urlPreventCache}; |
| var _2c=dojo.xhrGet(_2b); |
| _2c.addCallback(function(_2d){ |
| var _2e=_2a._getItems(_2d,_29); |
| if(_2e&&_2e.length>0){ |
| _27(_2e,_26); |
| }else{ |
| _27([],_26); |
| } |
| }); |
| _2c.addErrback(function(_2f){ |
| _28(_2f,_26); |
| }); |
| },_getFetchUrl:function(_30){ |
| if(!this.sendQuery){ |
| return this.url; |
| } |
| var _31=_30.query; |
| if(!_31){ |
| return this.url; |
| } |
| if(dojo.isString(_31)){ |
| return this.url+_31; |
| } |
| var _32=""; |
| for(var _33 in _31){ |
| var _34=_31[_33]; |
| if(_34){ |
| if(_32){ |
| _32+="&"; |
| } |
| _32+=(_33+"="+_34); |
| } |
| } |
| if(!_32){ |
| return this.url; |
| } |
| var _35=this.url; |
| if(_35.indexOf("?")<0){ |
| _35+="?"; |
| }else{ |
| _35+="&"; |
| } |
| return _35+_32; |
| },_getItems:function(_36,_37){ |
| var _38=null; |
| if(_37){ |
| _38=_37.query; |
| } |
| var _39=[]; |
| var _3a=null; |
| if(this.rootItem!==""){ |
| _3a=dojo.query(this.rootItem,_36); |
| }else{ |
| _3a=_36.documentElement.childNodes; |
| } |
| var _3b=_37.queryOptions?_37.queryOptions.deep:false; |
| if(_3b){ |
| _3a=this._flattenNodes(_3a); |
| } |
| for(var i=0;i<_3a.length;i++){ |
| var _3c=_3a[i]; |
| if(_3c.nodeType!=1){ |
| continue; |
| } |
| var _3d=this._getItem(_3c); |
| if(_38){ |
| var _3e=_37.queryOptions?_37.queryOptions.ignoreCase:false; |
| var _3f; |
| var _40=false; |
| var j; |
| var _41=true; |
| var _42={}; |
| for(var key in _38){ |
| _3f=_38[key]; |
| if(typeof _3f==="string"){ |
| _42[key]=dojo.data.util.filter.patternToRegExp(_3f,_3e); |
| } |
| } |
| for(var _43 in _38){ |
| _41=false; |
| var _44=this.getValues(_3d,_43); |
| for(j=0;j<_44.length;j++){ |
| _3f=_44[j]; |
| if(_3f){ |
| var _45=_38[_43]; |
| if((typeof _3f)==="string"&&(_42[_43])){ |
| if((_3f.match(_42[_43]))!==null){ |
| _40=true; |
| }else{ |
| _40=false; |
| } |
| }else{ |
| if((typeof _3f)==="object"){ |
| if(_3f.toString&&(_42[_43])){ |
| var _46=_3f.toString(); |
| if((_46.match(_42[_43]))!==null){ |
| _40=true; |
| }else{ |
| _40=false; |
| } |
| }else{ |
| if(_45==="*"||_45===_3f){ |
| _40=true; |
| }else{ |
| _40=false; |
| } |
| } |
| } |
| } |
| } |
| if(_40){ |
| break; |
| } |
| } |
| if(!_40){ |
| break; |
| } |
| } |
| if(_41||_40){ |
| _39.push(_3d); |
| } |
| }else{ |
| _39.push(_3d); |
| } |
| } |
| dojo.forEach(_39,function(_47){ |
| if(_47.element.parentNode){ |
| _47.element.parentNode.removeChild(_47.element); |
| } |
| },this); |
| return _39; |
| },_flattenNodes:function(_48){ |
| var _49=[]; |
| if(_48){ |
| var i; |
| for(i=0;i<_48.length;i++){ |
| var _4a=_48[i]; |
| _49.push(_4a); |
| if(_4a.childNodes&&_4a.childNodes.length>0){ |
| _49=_49.concat(this._flattenNodes(_4a.childNodes)); |
| } |
| } |
| } |
| return _49; |
| },close:function(_4b){ |
| },newItem:function(_4c,_4d){ |
| _4c=(_4c||{}); |
| var _4e=_4c.tagName; |
| if(!_4e){ |
| _4e=this.rootItem; |
| if(_4e===""){ |
| return null; |
| } |
| } |
| var _4f=this._getDocument(); |
| var _50=_4f.createElement(_4e); |
| for(var _51 in _4c){ |
| var _52; |
| if(_51==="tagName"){ |
| continue; |
| }else{ |
| if(_51==="text()"){ |
| _52=_4f.createTextNode(_4c[_51]); |
| _50.appendChild(_52); |
| }else{ |
| _51=this._getAttribute(_4e,_51); |
| if(_51.charAt(0)==="@"){ |
| var _53=_51.substring(1); |
| _50.setAttribute(_53,_4c[_51]); |
| }else{ |
| var _54=_4f.createElement(_51); |
| _52=_4f.createTextNode(_4c[_51]); |
| _54.appendChild(_52); |
| _50.appendChild(_54); |
| } |
| } |
| } |
| } |
| var _55=this._getItem(_50); |
| this._newItems.push(_55); |
| var _56=null; |
| if(_4d&&_4d.parent&&_4d.attribute){ |
| _56={item:_4d.parent,attribute:_4d.attribute,oldValue:undefined}; |
| var _57=this.getValues(_4d.parent,_4d.attribute); |
| if(_57&&_57.length>0){ |
| var _58=_57.slice(0,_57.length); |
| if(_57.length===1){ |
| _56.oldValue=_57[0]; |
| }else{ |
| _56.oldValue=_57.slice(0,_57.length); |
| } |
| _58.push(_55); |
| this.setValues(_4d.parent,_4d.attribute,_58); |
| _56.newValue=this.getValues(_4d.parent,_4d.attribute); |
| }else{ |
| this.setValues(_4d.parent,_4d.attribute,_55); |
| _56.newValue=_55; |
| } |
| } |
| return _55; |
| },deleteItem:function(_59){ |
| var _5a=_59.element; |
| if(_5a.parentNode){ |
| this._backupItem(_59); |
| _5a.parentNode.removeChild(_5a); |
| return true; |
| } |
| this._forgetItem(_59); |
| this._deletedItems.push(_59); |
| return true; |
| },setValue:function(_5b,_5c,_5d){ |
| if(_5c==="tagName"){ |
| return false; |
| } |
| this._backupItem(_5b); |
| var _5e=_5b.element; |
| var _5f; |
| var _60; |
| if(_5c==="childNodes"){ |
| _5f=_5d.element; |
| _5e.appendChild(_5f); |
| }else{ |
| if(_5c==="text()"){ |
| while(_5e.firstChild){ |
| _5e.removeChild(_5e.firstChild); |
| } |
| _60=this._getDocument(_5e).createTextNode(_5d); |
| _5e.appendChild(_60); |
| }else{ |
| _5c=this._getAttribute(_5e.nodeName,_5c); |
| if(_5c.charAt(0)==="@"){ |
| var _61=_5c.substring(1); |
| _5e.setAttribute(_61,_5d); |
| }else{ |
| for(var i=0;i<_5e.childNodes.length;i++){ |
| var _62=_5e.childNodes[i]; |
| if(_62.nodeType===1&&_62.nodeName===_5c){ |
| _5f=_62; |
| break; |
| } |
| } |
| var _63=this._getDocument(_5e); |
| if(_5f){ |
| while(_5f.firstChild){ |
| _5f.removeChild(_5f.firstChild); |
| } |
| }else{ |
| _5f=_63.createElement(_5c); |
| _5e.appendChild(_5f); |
| } |
| _60=_63.createTextNode(_5d); |
| _5f.appendChild(_60); |
| } |
| } |
| } |
| return true; |
| },setValues:function(_64,_65,_66){ |
| if(_65==="tagName"){ |
| return false; |
| } |
| this._backupItem(_64); |
| var _67=_64.element; |
| var i; |
| var _68; |
| var _69; |
| if(_65==="childNodes"){ |
| while(_67.firstChild){ |
| _67.removeChild(_67.firstChild); |
| } |
| for(i=0;i<_66.length;i++){ |
| _68=_66[i].element; |
| _67.appendChild(_68); |
| } |
| }else{ |
| if(_65==="text()"){ |
| while(_67.firstChild){ |
| _67.removeChild(_67.firstChild); |
| } |
| var _6a=""; |
| for(i=0;i<_66.length;i++){ |
| _6a+=_66[i]; |
| } |
| _69=this._getDocument(_67).createTextNode(_6a); |
| _67.appendChild(_69); |
| }else{ |
| _65=this._getAttribute(_67.nodeName,_65); |
| if(_65.charAt(0)==="@"){ |
| var _6b=_65.substring(1); |
| _67.setAttribute(_6b,_66[0]); |
| }else{ |
| for(i=_67.childNodes.length-1;i>=0;i--){ |
| var _6c=_67.childNodes[i]; |
| if(_6c.nodeType===1&&_6c.nodeName===_65){ |
| _67.removeChild(_6c); |
| } |
| } |
| var _6d=this._getDocument(_67); |
| for(i=0;i<_66.length;i++){ |
| _68=_6d.createElement(_65); |
| _69=_6d.createTextNode(_66[i]); |
| _68.appendChild(_69); |
| _67.appendChild(_68); |
| } |
| } |
| } |
| } |
| return true; |
| },unsetAttribute:function(_6e,_6f){ |
| if(_6f==="tagName"){ |
| return false; |
| } |
| this._backupItem(_6e); |
| var _70=_6e.element; |
| if(_6f==="childNodes"||_6f==="text()"){ |
| while(_70.firstChild){ |
| _70.removeChild(_70.firstChild); |
| } |
| }else{ |
| _6f=this._getAttribute(_70.nodeName,_6f); |
| if(_6f.charAt(0)==="@"){ |
| var _71=_6f.substring(1); |
| _70.removeAttribute(_71); |
| }else{ |
| for(var i=_70.childNodes.length-1;i>=0;i--){ |
| var _72=_70.childNodes[i]; |
| if(_72.nodeType===1&&_72.nodeName===_6f){ |
| _70.removeChild(_72); |
| } |
| } |
| } |
| } |
| return true; |
| },save:function(_73){ |
| if(!_73){ |
| _73={}; |
| } |
| var i; |
| for(i=0;i<this._modifiedItems.length;i++){ |
| this._saveItem(this._modifiedItems[i],_73,"PUT"); |
| } |
| for(i=0;i<this._newItems.length;i++){ |
| var _74=this._newItems[i]; |
| if(_74.element.parentNode){ |
| this._newItems.splice(i,1); |
| i--; |
| continue; |
| } |
| this._saveItem(this._newItems[i],_73,"POST"); |
| } |
| for(i=0;i<this._deletedItems.length;i++){ |
| this._saveItem(this._deletedItems[i],_73,"DELETE"); |
| } |
| },revert:function(){ |
| this._newItems=[]; |
| this._restoreItems(this._deletedItems); |
| this._deletedItems=[]; |
| this._restoreItems(this._modifiedItems); |
| this._modifiedItems=[]; |
| return true; |
| },isDirty:function(_75){ |
| if(_75){ |
| var _76=this._getRootElement(_75.element); |
| return (this._getItemIndex(this._newItems,_76)>=0||this._getItemIndex(this._deletedItems,_76)>=0||this._getItemIndex(this._modifiedItems,_76)>=0); |
| }else{ |
| return (this._newItems.length>0||this._deletedItems.length>0||this._modifiedItems.length>0); |
| } |
| },_saveItem:function(_77,_78,_79){ |
| var url; |
| var _7a; |
| if(_79==="PUT"){ |
| url=this._getPutUrl(_77); |
| }else{ |
| if(_79==="DELETE"){ |
| url=this._getDeleteUrl(_77); |
| }else{ |
| url=this._getPostUrl(_77); |
| } |
| } |
| if(!url){ |
| if(_78.onError){ |
| _7a=_78.scope||dojo.global; |
| _78.onError.call(_7a,new Error("No URL for saving content: "+this._getPostContent(_77))); |
| } |
| return; |
| } |
| var _7b={url:url,method:(_79||"POST"),contentType:"text/xml",handleAs:"xml"}; |
| var _7c; |
| if(_79==="PUT"){ |
| _7b.putData=this._getPutContent(_77); |
| _7c=dojo.rawXhrPut(_7b); |
| }else{ |
| if(_79==="DELETE"){ |
| _7c=dojo.xhrDelete(_7b); |
| }else{ |
| _7b.postData=this._getPostContent(_77); |
| _7c=dojo.rawXhrPost(_7b); |
| } |
| } |
| _7a=(_78.scope||dojo.global); |
| var _7d=this; |
| _7c.addCallback(function(_7e){ |
| _7d._forgetItem(_77); |
| if(_78.onComplete){ |
| _78.onComplete.call(_7a); |
| } |
| }); |
| _7c.addErrback(function(_7f){ |
| if(_78.onError){ |
| _78.onError.call(_7a,_7f); |
| } |
| }); |
| },_getPostUrl:function(_80){ |
| return this.url; |
| },_getPutUrl:function(_81){ |
| return this.url; |
| },_getDeleteUrl:function(_82){ |
| var url=this.url; |
| if(_82&&this.keyAttribute!==""){ |
| var _83=this.getValue(_82,this.keyAttribute); |
| if(_83){ |
| var key=this.keyAttribute.charAt(0)==="@"?this.keyAttribute.substring(1):this.keyAttribute; |
| url+=url.indexOf("?")<0?"?":"&"; |
| url+=key+"="+_83; |
| } |
| } |
| return url; |
| },_getPostContent:function(_84){ |
| var _85=_84.element; |
| var _86="<?xml version=\"1.0\"?>"; |
| return _86+dojox.xml.parser.innerXML(_85); |
| },_getPutContent:function(_87){ |
| var _88=_87.element; |
| var _89="<?xml version=\"1.0\"?>"; |
| return _89+dojox.xml.parser.innerXML(_88); |
| },_getAttribute:function(_8a,_8b){ |
| if(this._attributeMap){ |
| var key=_8a+"."+_8b; |
| var _8c=this._attributeMap[key]; |
| if(_8c){ |
| _8b=_8c; |
| }else{ |
| _8c=this._attributeMap[_8b]; |
| if(_8c){ |
| _8b=_8c; |
| } |
| } |
| } |
| return _8b; |
| },_getItem:function(_8d){ |
| try{ |
| var q=null; |
| if(this.keyAttribute===""){ |
| q=this._getXPath(_8d); |
| } |
| return new dojox.data.XmlItem(_8d,this,q); |
| } |
| catch(e){ |
| } |
| return null; |
| },_getItemIndex:function(_8e,_8f){ |
| for(var i=0;i<_8e.length;i++){ |
| if(_8e[i].element===_8f){ |
| return i; |
| } |
| } |
| return -1; |
| },_backupItem:function(_90){ |
| var _91=this._getRootElement(_90.element); |
| if(this._getItemIndex(this._newItems,_91)>=0||this._getItemIndex(this._modifiedItems,_91)>=0){ |
| return; |
| } |
| if(_91!=_90.element){ |
| _90=this._getItem(_91); |
| } |
| _90._backup=_91.cloneNode(true); |
| this._modifiedItems.push(_90); |
| },_restoreItems:function(_92){ |
| dojo.forEach(_92,function(_93){ |
| if(_93._backup){ |
| _93.element=_93._backup; |
| _93._backup=null; |
| } |
| },this); |
| },_forgetItem:function(_94){ |
| var _95=_94.element; |
| var _96=this._getItemIndex(this._newItems,_95); |
| if(_96>=0){ |
| this._newItems.splice(_96,1); |
| } |
| _96=this._getItemIndex(this._deletedItems,_95); |
| if(_96>=0){ |
| this._deletedItems.splice(_96,1); |
| } |
| _96=this._getItemIndex(this._modifiedItems,_95); |
| if(_96>=0){ |
| this._modifiedItems.splice(_96,1); |
| } |
| },_getDocument:function(_97){ |
| if(_97){ |
| return _97.ownerDocument; |
| }else{ |
| if(!this._document){ |
| return dojox.xml.parser.parse(); |
| } |
| } |
| return null; |
| },_getRootElement:function(_98){ |
| while(_98.parentNode){ |
| _98=_98.parentNode; |
| } |
| return _98; |
| },_getXPath:function(_99){ |
| var _9a=null; |
| if(!this.sendQuery){ |
| var _9b=_99; |
| _9a=""; |
| while(_9b&&_9b!=_99.ownerDocument){ |
| var pos=0; |
| var _9c=_9b; |
| var _9d=_9b.nodeName; |
| while(_9c){ |
| _9c=_9c.previousSibling; |
| if(_9c&&_9c.nodeName===_9d){ |
| pos++; |
| } |
| } |
| var _9e="/"+_9d+"["+pos+"]"; |
| if(_9a){ |
| _9a=_9e+_9a; |
| }else{ |
| _9a=_9e; |
| } |
| _9b=_9b.parentNode; |
| } |
| } |
| return _9a; |
| },getIdentity:function(_9f){ |
| if(!this.isItem(_9f)){ |
| throw new Error("dojox.data.XmlStore: Object supplied to getIdentity is not an item"); |
| }else{ |
| var id=null; |
| if(this.sendQuery&&this.keyAttribute!==""){ |
| id=this.getValue(_9f,this.keyAttribute).toString(); |
| }else{ |
| if(!this.serverQuery){ |
| if(this.keyAttribute!==""){ |
| id=this.getValue(_9f,this.keyAttribute).toString(); |
| }else{ |
| id=_9f.q; |
| } |
| } |
| } |
| return id; |
| } |
| },getIdentityAttributes:function(_a0){ |
| if(!this.isItem(_a0)){ |
| throw new Error("dojox.data.XmlStore: Object supplied to getIdentity is not an item"); |
| }else{ |
| if(this.keyAttribute!==""){ |
| return [this.keyAttribute]; |
| }else{ |
| return null; |
| } |
| } |
| },fetchItemByIdentity:function(_a1){ |
| var _a2=null; |
| var _a3=null; |
| var _a4=this; |
| var url=null; |
| var _a5=null; |
| var _a6=null; |
| if(!_a4.sendQuery){ |
| _a2=function(_a7){ |
| if(_a7){ |
| if(_a4.keyAttribute!==""){ |
| var _a8={}; |
| _a8.query={}; |
| _a8.query[_a4.keyAttribute]=_a1.identity; |
| _a8.queryOptions={deep:true}; |
| var _a9=_a4._getItems(_a7,_a8); |
| _a3=_a1.scope||dojo.global; |
| if(_a9.length===1){ |
| if(_a1.onItem){ |
| _a1.onItem.call(_a3,_a9[0]); |
| } |
| }else{ |
| if(_a9.length===0){ |
| if(_a1.onItem){ |
| _a1.onItem.call(_a3,null); |
| } |
| }else{ |
| if(_a1.onError){ |
| _a1.onError.call(_a3,new Error("Items array size for identity lookup greater than 1, invalid keyAttribute.")); |
| } |
| } |
| } |
| }else{ |
| var _aa=_a1.identity.split("/"); |
| var i; |
| var _ab=_a7; |
| for(i=0;i<_aa.length;i++){ |
| if(_aa[i]&&_aa[i]!==""){ |
| var _ac=_aa[i]; |
| _ac=_ac.substring(0,_ac.length-1); |
| var _ad=_ac.split("["); |
| var tag=_ad[0]; |
| var _ae=parseInt(_ad[1],10); |
| var pos=0; |
| if(_ab){ |
| var _af=_ab.childNodes; |
| if(_af){ |
| var j; |
| var _b0=null; |
| for(j=0;j<_af.length;j++){ |
| var _b1=_af[j]; |
| if(_b1.nodeName===tag){ |
| if(pos<_ae){ |
| pos++; |
| }else{ |
| _b0=_b1; |
| break; |
| } |
| } |
| } |
| if(_b0){ |
| _ab=_b0; |
| }else{ |
| _ab=null; |
| } |
| }else{ |
| _ab=null; |
| } |
| }else{ |
| break; |
| } |
| } |
| } |
| var _b2=null; |
| if(_ab){ |
| _b2=_a4._getItem(_ab); |
| if(_b2.element.parentNode){ |
| _b2.element.parentNode.removeChild(_b2.element); |
| } |
| } |
| if(_a1.onItem){ |
| _a3=_a1.scope||dojo.global; |
| _a1.onItem.call(_a3,_b2); |
| } |
| } |
| } |
| }; |
| url=this._getFetchUrl(null); |
| _a5={url:url,handleAs:"xml",preventCache:_a4.urlPreventCache}; |
| _a6=dojo.xhrGet(_a5); |
| _a6.addCallback(_a2); |
| if(_a1.onError){ |
| _a6.addErrback(function(_b3){ |
| var s=_a1.scope||dojo.global; |
| _a1.onError.call(s,_b3); |
| }); |
| } |
| }else{ |
| if(_a4.keyAttribute!==""){ |
| var _b4={query:{}}; |
| _b4.query[_a4.keyAttribute]=_a1.identity; |
| url=this._getFetchUrl(_b4); |
| _a2=function(_b5){ |
| var _b6=null; |
| if(_b5){ |
| var _b7=_a4._getItems(_b7,{}); |
| if(_b7.length===1){ |
| _b6=_b7[0]; |
| }else{ |
| if(_a1.onError){ |
| var _b8=_a1.scope||dojo.global; |
| _a1.onError.call(_b8,new Error("More than one item was returned from the server for the denoted identity")); |
| } |
| } |
| } |
| if(_a1.onItem){ |
| _b8=_a1.scope||dojo.global; |
| _a1.onItem.call(_b8,_b6); |
| } |
| }; |
| _a5={url:url,handleAs:"xml",preventCache:_a4.urlPreventCache}; |
| _a6=dojo.xhrGet(_a5); |
| _a6.addCallback(_a2); |
| if(_a1.onError){ |
| _a6.addErrback(function(_b9){ |
| var s=_a1.scope||dojo.global; |
| _a1.onError.call(s,_b9); |
| }); |
| } |
| }else{ |
| if(_a1.onError){ |
| var s=_a1.scope||dojo.global; |
| _a1.onError.call(s,new Error("XmlStore is not told that the server to provides identity support. No keyAttribute specified.")); |
| } |
| } |
| } |
| }}); |
| dojo.declare("dojox.data.XmlItem",null,{constructor:function(_ba,_bb,_bc){ |
| this.element=_ba; |
| this.store=_bb; |
| this.q=_bc; |
| },toString:function(){ |
| var str=""; |
| if(this.element){ |
| for(var i=0;i<this.element.childNodes.length;i++){ |
| var _bd=this.element.childNodes[i]; |
| if(_bd.nodeType===3||_bd.nodeType===4){ |
| str+=_bd.nodeValue; |
| } |
| } |
| } |
| return str; |
| }}); |
| dojo.extend(dojox.data.XmlStore,dojo.data.util.simpleFetch); |
| } |