/* Copyright (c) 2004-2011, 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 */ //>>built define("dojo/data/ObjectStore",["../_base/lang","../Evented","../_base/declare","../_base/Deferred","../_base/array","../_base/connect","../regexp"],function(_1,_2,_3,_4,_5,_6,_7){ return _3("dojo.data.ObjectStore",[_2],{objectStore:null,constructor:function(_8){ _1.mixin(this,_8); },labelProperty:"label",getValue:function(_9,_a,_b){ return typeof _9.get==="function"?_9.get(_a):_a in _9?_9[_a]:_b; },getValues:function(_c,_d){ var _e=this.getValue(_c,_d); return _e instanceof Array?_e:_e===undefined?[]:[_e]; },getAttributes:function(_f){ var res=[]; for(var i in _f){ if(_f.hasOwnProperty(i)&&!(i.charAt(0)=="_"&&i.charAt(1)=="_")){ res.push(i); } } return res; },hasAttribute:function(_10,_11){ return _11 in _10; },containsValue:function(_12,_13,_14){ return _5.indexOf(this.getValues(_12,_13),_14)>-1; },isItem:function(_15){ return (typeof _15=="object")&&_15&&!(_15 instanceof Date); },isItemLoaded:function(_16){ return _16&&typeof _16.load!=="function"; },loadItem:function(_17){ var _18; if(typeof _17.item.load==="function"){ _4.when(_17.item.load(),function(_19){ _18=_19; var _1a=_19 instanceof Error?_17.onError:_17.onItem; if(_1a){ _1a.call(_17.scope,_19); } }); }else{ if(_17.onItem){ _17.onItem.call(_17.scope,_17.item); } } return _18; },close:function(_1b){ return _1b&&_1b.abort&&_1b.abort(); },fetch:function(_1c){ _1c=_1.delegate(_1c,_1c&&_1c.queryOptions); var _1d=this; var _1e=_1c.scope||_1d; var _1f=_1c.query; if(typeof _1f=="object"){ _1f=_1.delegate(_1f); for(var i in _1f){ var _20=_1f[i]; if(typeof _20=="string"){ _1f[i]=RegExp("^"+_7.escapeString(_20,"*?").replace(/\*/g,".*").replace(/\?/g,".")+"$",_1c.ignoreCase?"mi":"m"); _1f[i].toString=(function(_21){ return function(){ return _21; }; })(_20); } } } var _22=this.objectStore.query(_1f,_1c); _4.when(_22.total,function(_23){ _4.when(_22,function(_24){ if(_1c.onBegin){ _1c.onBegin.call(_1e,_23||_24.length,_1c); } if(_1c.onItem){ for(var i=0;i<_24.length;i++){ _1c.onItem.call(_1e,_24[i],_1c); } } if(_1c.onComplete){ _1c.onComplete.call(_1e,_1c.onItem?null:_24,_1c); } return _24; },_25); },_25); function _25(_26){ if(_1c.onError){ _1c.onError.call(_1e,_26,_1c); } }; _1c.abort=function(){ if(_22.cancel){ _22.cancel(); } }; if(_22.observe){ if(this.observing){ this.observing.cancel(); } this.observing=_22.observe(function(_27,_28,_29){ if(_5.indexOf(_1d._dirtyObjects,_27)==-1){ if(_28==-1){ _1d.onNew(_27); }else{ if(_29==-1){ _1d.onDelete(_27); }else{ for(var i in _27){ if(i!=_1d.objectStore.idProperty){ _1d.onSet(_27,i,null,_27[i]); } } } } } },true); } this.onFetch(_22); _1c.store=this; return _1c; },getFeatures:function(){ return {"dojo.data.api.Read":!!this.objectStore.get,"dojo.data.api.Identity":true,"dojo.data.api.Write":!!this.objectStore.put,"dojo.data.api.Notification":true}; },getLabel:function(_2a){ if(this.isItem(_2a)){ return this.getValue(_2a,this.labelProperty); } return undefined; },getLabelAttributes:function(_2b){ return [this.labelProperty]; },getIdentity:function(_2c){ return this.objectStore.getIdentity?this.objectStore.getIdentity(_2c):_2c[this.objectStore.idProperty||"id"]; },getIdentityAttributes:function(_2d){ return [this.objectStore.idProperty]; },fetchItemByIdentity:function(_2e){ var _2f; _4.when(this.objectStore.get(_2e.identity),function(_30){ _2f=_30; _2e.onItem.call(_2e.scope,_30); },function(_31){ _2e.onError.call(_2e.scope,_31); }); return _2f; },newItem:function(_32,_33){ if(_33){ var _34=this.getValue(_33.parent,_33.attribute,[]); _34=_34.concat([_32]); _32.__parent=_34; this.setValue(_33.parent,_33.attribute,_34); } this._dirtyObjects.push({object:_32,save:true}); this.onNew(_32); return _32; },deleteItem:function(_35){ this.changing(_35,true); this.onDelete(_35); },setValue:function(_36,_37,_38){ var old=_36[_37]; this.changing(_36); _36[_37]=_38; this.onSet(_36,_37,old,_38); },setValues:function(_39,_3a,_3b){ if(!_1.isArray(_3b)){ throw new Error("setValues expects to be passed an Array object as its value"); } this.setValue(_39,_3a,_3b); },unsetAttribute:function(_3c,_3d){ this.changing(_3c); var old=_3c[_3d]; delete _3c[_3d]; this.onSet(_3c,_3d,old,undefined); },_dirtyObjects:[],changing:function(_3e,_3f){ _3e.__isDirty=true; for(var i=0;i0;){ i--; var _50=_4f[i]; var _51=_50.object; var old=_50.old; if(_51&&old){ for(var j in old){ if(old.hasOwnProperty(j)&&_51[j]!==old[j]){ this.onSet(_51,j,_51[j],old[j]); _51[j]=old[j]; } } for(j in _51){ if(!old.hasOwnProperty(j)){ this.onSet(_51,j,_51[j]); delete _51[j]; } } }else{ if(!old){ this.onDelete(_51); }else{ this.onNew(old); } } delete (_51||old).__isDirty; _4f.splice(i,1); } },isDirty:function(_52){ if(!_52){ return !!this._dirtyObjects.length; } return _52.__isDirty; },onSet:function(){ },onNew:function(){ },onDelete:function(){ },onFetch:function(_53){ }}); });