Example #1
0
 get:function () {
     return AttributeMapping.create();
 }
Example #2
0
var Montage=require("montage").Montage,Blueprint=require("data/blueprint").Blueprint,BlueprintBinder=require("data/blueprint").BlueprintBinder,BinderMapping=require("data/mapping").BinderMapping,BlueprintMapping=require("data/mapping").BlueprintMapping,AttributeMapping=require("data/mapping").AttributeMapping,AssociationMapping=require("data/mapping").AssociationMapping,StoreConnectionInformation=require("data/store-connection-information").StoreConnectionInformation,Query=require("data/query").Query,Pledge=require("data/pledge").Pledge,PledgedSortedSet=require("data/pledge").PledgedSortedSet,Restriction=require("data/restriction").Restriction,TransactionId=require("data/transaction-id").TransactionId,ObjectId=require("data/object-id").ObjectId,TemporaryObjectId=require("data/object-id").TemporaryObjectId,Serializer=require("core/serializer").Serializer,Deserializer=require("core/deserializer").Deserializer,Promise=require("core/promise").Promise,Exception=require("core/exception").Exception,logger=require("core/logger").logger("store"),_defaultStoreManager=null,Store=exports.Store=Montage.create(Montage,{_connectionInfo:{serializable:!0,enumerable:!1,value:null},connectionInfo:{get:function(){return this._connectionInfo},set:function(e){this._connectionInfo=e}},restrictions:{serializable:!0,writable:!1,distinct:!0,value:new Array(10)},_parent:{serializable:!0,enumerable:!1,value:null},parent:{get:function(){return this._parent}},defaultManager:{get:function(){return _defaultStoreManager===null&&(_defaultStoreManager=StoreManager.create().init()),_defaultStoreManager},set:function(e){_defaultStoreManager=e}},init:{serializable:!1,enumerable:!1,value:function(){return this.initWithParentAndRestrictions(null,null)}},initWithParent:{serializable:!1,enumerable:!1,value:function(e){return this.initWithParentAndRestrictions(e,null)}},initWithParentAndRestrictions:{serializable:!1,value:function(e,t){this.parent!==null&&this.parent.remove(this),this._parent=e!=null?e:Store.defaultManager,this.parent.addStore(this);if(t!=null){var n,r;for(r=0;typeof (n=t[r])!="undefined";r++)this.restrictions.push(Object.freeze(n))}return this}},blueprintForPrototype:{value:function(e,t){return this.parent!==null?this.parent.blueprintForPrototype(e,t):null}},createBinderMapping:{get:function(){return BinderMapping.create()}},createBlueprintMapping:{get:function(){return BlueprintMapping.create()}},createAttributeMapping:{get:function(){return AttributeMapping.create()}},createAssociationMapping:{get:function(){return AssociationMapping.create()}},addStore:{value:function(e){return this.parent!==null?this.parent.addStore(e):e}},removeStore:{value:function(e){return this.parent!==null?this.parent.removeStore(e):e}},requireStoreForBlueprint:{value:function(e,t){if(this.parent!==null)return this.parent.requireStoreForBlueprint(e,t)}},canServiceBlueprint:{value:function(e,t){var n=e.mappingForName(t.mappingFolderName);if(!n)return!1;var r=n.parent;if(!r)return!1;var i=Montage.getInfoForObject(this);if(r.storePrototypeName===i.objectName&&r.storeModuleId===i.moduleId){if(this.connectionInfo){var s=r.connectionInformationForName(this.connectionInfo.name);return this.connectionInfo.equals(s)}return!0}return!1}},canServiceQuery:{value:function(e,t){return e!=null?this.canServiceBlueprint(e.blueprint,t):!1}},permanentIdForObjectId:{value:function(e,t,n,r){var i=n,s=!1;try{return i==null&&(s=TransactionId.manager.hasCurrentTransaction(),s?i=TransactionId.manager.currentTransaction():i=TransactionId.manager.startTransaction(r)),this.permanentIdForObjectId$Implementation(e,t,i)}finally{s||TransactionId.manager.closeTransaction(i)}}},permanentIdForObjectId$Implementation:{value:function(e,t,n){return typeof e.objectId!="undefined"?Promise.resolve(e.objectId):Promise.resolve(null)}},pledgeForObjectId:{value:function(e,t,n,r){var i=n,s=!1;try{return i==null&&(s=TransactionId.manager.hasCurrentTransaction(),s?i=TransactionId.manager.currentTransaction():i=TransactionId.manager.startTransaction(r)),this.pledgeForObjectId$Implementation(e,t,i)}finally{s||TransactionId.manager.closeTransaction(i)}}},pledgeForObjectId$Implementation:{value:function(e,t,n){return Promise.resolve(null)}},pledgeForSourceObjectAssociationNamed:{value:function(e,t,n,r,i){var s=r,o=!1;try{return s==null&&(o=TransactionId.manager.hasCurrentTransaction(),o?s=TransactionId.manager.currentTransaction():s=TransactionId.manager.startTransaction(i)),this.pledgeForSourceObjectAssociationNamed$Implementation(e,t,n,s)}finally{o||TransactionId.manager.closeTransaction(s)}}},pledgeForSourceObjectAssociationNamed$Implementation:{value:function(e,t,n,r){return this.parent!==null?this.parent.pledgeForSourceObjectAssociationNamed$Implementation(e,t,n,r):Promise.resolve(null)}},pledgeForSourceObjectAssociation:{value:function(e,t,n,r,i){var s=r,o=!1;try{return s==null&&(o=TransactionId.manager.hasCurrentTransaction(),o?s=TransactionId.manager.currentTransaction():s=TransactionId.manager.startTransaction(i)),this.pledgeForSourceObjectAssociation$Implementation(e,t,n,s)}finally{o||TransactionId.manager.closeTransaction(s)}}},pledgeForSourceObjectAssociation$Implementation:{value:function(e,t,n,r){if(this.parent!==null)return this.parent.pledgeForSourceObjectAssociation$Implementation(e,t,n,r)}},initializeObject:{value:function(e,t,n,r){var i=n,s=!1;try{return i==null&&(s=TransactionId.manager.hasCurrentTransaction(),s?i=TransactionId.manager.currentTransaction():i=TransactionId.manager.startTransaction(r)),this.initializeObject$Implementation(e,t,i)}finally{s||TransactionId.manager.closeTransaction(i)}}},initializeObject$Implementation:{value:function(e,t,n){return typeof e.objectId=="undefined"&&(e.objectId=TemporaryObjectId.create().init()),Promise.resolve(e)}},repledgeObject:{value:function(e,t,n,r){var i=n,s=!1;try{i==null&&(s=TransactionId.manager.hasCurrentTransaction(),s?i=TransactionId.manager.currentTransaction():i=TransactionId.manager.startTransaction(r));if(Array.isArray(e)){var o=new Array(e.length),u,a;for(a=0;typeof (u=e[a])!="undefined";a++)o[a]=this.repledgeObject$Implementation(u,t,i);return o}return this.repledgeObject$Implementation(e,t,i)}finally{s||TransactionId.manager.closeTransaction(i)}}},repledgeObject$Implementation:{value:function(e,t,n){return typeof e.objectId!="undefined"?this.pledgeForObjectId(e.objectId,t,n):Promise.resolve(e)}},saveChangesInContext:{value:function(e,t,n){var r=t,i=!1;try{r==null&&(i=TransactionId.manager.hasCurrentTransaction(),i?r=TransactionId.manager.currentTransaction():r=TransactionId.manager.startTransaction(n)),this.saveChangesInContext$Implementation(e,r)}finally{i||TransactionId.manager.closeTransaction(r)}}},saveChangesInContext$Implementation:{value:function(e,t){if(this.parent!==null)return this.parent.saveChangesInContext$Implementation(e,t)}},prepareToSaveChangesInContext$Implementation:{value:function(e,t){return Promise.resolve(!0)}},cancelSaveChangesInContext$Implementation:{value:function(e,t){return Promise.resolve(!0)}},commitChangesInContext$Implementation:{value:function(e,t){return Promise.resolve(!0)}},queryInContext:{value:function(e,t,n,r){var i=n,s=!1;try{return i==null&&(s=TransactionId.manager.hasCurrentTransaction(),s?i=TransactionId.manager.currentTransaction():i=TransactionId.manager.startTransaction(r)),this.queryInContext$Implementation(e,t,i)}finally{s||TransactionId.manager.closeTransaction(i)}}},queryInContext$Implementation:{value:function(e,t,n){return(new PledgedSortedSet.create).initWithQueryAndContext(e,t)}}}),StoreManager=exports.StoreManager=Montage.create(Store,{stores:{serializable:!0,writable:!1,distinct:!0,value:new Array(10)},parent:{get:function(){return this}},init:{serializable:!1,enumerable:!1,value:function(){return this}},addStore:{value:function(e){if(e!==null&&e!==this){var t=this.stores.indexOf(e);t<0&&this.stores.push(e)}return e}},removeStore:{value:function(e){if(e!==null){var t=this.stores.indexOf(e);t>=0&&(this.stores=this.stores.splice(t,1))}return e}},blueprintForPrototype:{value:function(e,t){return BlueprintBinder.manager.blueprintForPrototype(e,t)}},storeForBlueprint:{value:function(e,t){var n,r;for(r=0;typeof (n=this.stores[r])!="undefined";r++)if(n.canServiceBlueprint(e,t))return n;return null}},findStoreForBlueprint:{value:function(e,t){var n=this._findStoreForBlueprint(e,t);return n==null&&(n=this.requireStoreForBlueprint(e,t)),Promise.resolve(n)}},_findStoreForBlueprint:{value:function(e,t){var n,r;for(r=0;typeof (n=this.stores[r])!="undefined";r++)if(n.canServiceBlueprint(e,t))return n;return null}},requireStoreForBlueprint:{value:function(e,t){return e===null||typeof e=="undefined"?Promise.resolve(null):this._requireStoreForBlueprint(e,t)}},_requireStoreForBlueprint:{value:function(e,t){if(e===null||typeof e=="undefined")return Promise.resolve(null);var n=null,r,i;for(i=0;typeof (r=this.stores[i])!="undefined";i++)r.canServiceBlueprint(e,t)&&(n=r);if(n==null){var s=e.mappingForName(t.mappingFolderName),o=s?s.parent:null;if(o){var u=Promise.defer();require.async(o.storeModuleId,function(e){u.resolve(e)});var a=this;return u.promise.then(function(e){var t=e[o.storePrototypeName],n;return typeof t=="undefined"||t===null?Promise.reject("No Store found "+o.storePrototypeName):(n=t.create().initWithParent(a),n.connectionInfo=o.defaultConnectionInformation,n)})}return Promise.resolve(n)}return Promise.resolve(n)}},storeForObjectId:{value:function(e,t){var n,r;for(r=0;typeof (n=this.stores[r])!="undefined";r++)if(n.canServiceBlueprint(e.blueprint,t))return n;return null}},pledgeForSourceObjectAssociationNamed$Implementation:{value:function(e,t,n,r){var i=null,s=null,o=Montage.getInfoForObject(e),u=this.blueprintForPrototype(o.objectName,o.moduleId);return u!==null&&(s=u.attributeForName(t),s!==null&&s.targetBlueprint!==null?i=this.storeForBlueprint(s.targetBlueprint,r):logger.error("No relationship named "+t+" for "+e)),i!==null?i.pledgeForSourceObjectAssociation(e,s,n,r):Promise.resolve(null)}},pledgeForObjectId$Implementation:{value:function(e,t,n){var r=this.storeForObjectId(e,n);return r!==null?r.pledgeForObjectId$Implementation(e,t,n):Promise.resolve(null)}},pledgeForSourceObjectAssociation$Implementation:{value:function(e,t,n,r){return Promise.resolve(null)}},initializeObject$Implementation:{value:function(e,t,n){return typeof e.objectId=="undefined"&&(e.objectId=TemporaryObjectId.create().init()),Promise.resolve(e)}},repledgeObject$Implementation:{value:function(e,t,n){return typeof e.objectId!="undefined"?this.pledgeForObjectId(e.objectId,t,n):Promise.resolve(e)}},saveChangesInContext$Implementation:{value:function(e,t){var n,r,i=new Array(this.stores.length),s=new Array(this.stores.length);for(r=0;typeof (n=this.stores[r])!="undefined";r++)i[r]=n.prepareToSaveChangesInContext$Implementation(e,t);Promise.when(Promise.all(i),function(){for(r=0;typeof (n=this.stores[r])!="undefined";r++)s[r]=n.commitChangesInContext$Implementation(e,t);return Promise.when(Promise.all(s),function(){return Promise.resolve(!0)},function(){throw Exception.create().initWithMessageTargetAndMethod("Failed to revert prepare for save transaction: "+t,this,"saveChangesInContext")})},function(){for(r=0;typeof (n=this.stores[r])!="undefined";r++)s[r]=n.cancelSaveChangesInContext$Implementation(e,t);return Promise.when(Promise.all(s),function(){return Promise.reject("Could not save the transaction: "+t)},function(){throw Exception.create().initWithMessageTargetAndMethod("Commit failed for transaction: "+t,this,"saveChangesInContext")})})}},prepareToSaveChangesInContext$Implementation:{value:function(e,t){return Promise.resolve(!0)}},cancelSaveChangesInContext$Implementation:{value:function(e,t){return Promise.resolve(!0)}},commitChangesInContext$Implementation:{value:function(e,t){return Promise.resolve(!0)}},queryInContext$Implementation:{value:function(e,t,n){if(e==null||t==null)return Promise.resolve([]);var r=this.storeForBlueprint(e.blueprint,n);return r==null?Promise.resolve([]):r.queryInContext$Implementation(e,t,n)}}})