From 796bb5ecf6b0dce700ea3c17bbda2ed49b6a84de Mon Sep 17 00:00:00 2001
From: Valerio Virgillito
Date: Fri, 3 Feb 2012 15:58:41 -0800
Subject: removing the old v0.6 montage folder and updating the references
---
node_modules/montage-user/data/store.js | 1211 -------------------------------
1 file changed, 1211 deletions(-)
delete mode 100755 node_modules/montage-user/data/store.js
(limited to 'node_modules/montage-user/data/store.js')
diff --git a/node_modules/montage-user/data/store.js b/node_modules/montage-user/data/store.js
deleted file mode 100755
index 5057826d..00000000
--- a/node_modules/montage-user/data/store.js
+++ /dev/null
@@ -1,1211 +0,0 @@
-/*
-This file contains proprietary software owned by Motorola Mobility, Inc.
-No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
-(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
- */
-/**
- @module montage/data/store
- @requires montage/core/core
- @requires montage/data/blueprint
- @requires montage/data/query
- @requires montage/data/restriction
- @requires montage/data/transactionid
- @requires montage/data/objectid
- @requires montage/data/controllistener
- @requires montage/core/serializer
- @requires montage/core/deserializer
- @requires montage/core/promise
- @requires montage/core/logger
-*/
-var Montage = require("montage").Montage;
-var Blueprint = require("data/blueprint").Blueprint;
-var BlueprintBinder = require("data/blueprint").BlueprintBinder;
-var Query = require("data/query").Query;
-var Restriction = require("data/restriction").Restriction;
-var TransactionId = require("data/transactionid").TransactionId;
-var ObjectId = require("data/objectid").ObjectId;
-var TemporaryObjectId = require("data/objectid").TemporaryObjectId;
-var ControlListener = require("data/controllistener").ControlListener;
-var Serializer = require("core/serializer").Serializer;
-var Deserializer = require("core/deserializer").Deserializer;
-var Promise = require("core/promise").Promise;
-var logger = require("core/logger").logger("store");
-/**
- Description TODO
- @private
-*/
-var _defaultStoreManager = null;
-/**
- @class module:montage/data/store.Store
- @extends module:montage/core/core.Montage
-*/
-var Store = exports.Store = Montage.create(Montage,/** @lends module:montage/data/store.Store# */ {
-/**
- Description TODO
- @type {Property} Function
- @default {Array} new Array(10)
- */
- blueprintBinders: {
- serializable: true,
- writable: false,
- distinct: true,
- value: new Array(10)
- },
-/**
- Description TODO
- @function
- @param {Property} binder TODO
- */
- addBlueprintBinder: {
- value: function(binder) {
- if (binder !== null) {
- var index = this.blueprintBinders.indexOf(binder);
- if (index < 0) {
- this.blueprintBinders.push(binder);
- }
- }
- }
- },
-/**
- Description TODO
- @function
- @param {Property} binder TODO
- */
- removeBlueprintBinder: {
- value: function(binder) {
- if (binder !== null) {
- var index = this.blueprintBinders.indexOf(binder);
- if (index >= 0) {
- this.blueprintBinders.splice(index, 1);
- }
- }
- }
- },
-/**
- Description TODO
- @function
- @param {Property} name TODO
- @returns null
- */
- blueprintBinderForName: {
- value: function(name) {
- var binder, index;
- for (index = 0; typeof (binder = this.blueprintBinders[index]) !== "undefined"; index++) {
- if (binder.name === name) {
- return binder;
- }
- }
- return null;
- }
- },
-/**
- Description TODO
- @type {Property}
- @default {Array} new Array(10)
- */
- restrictions: {
- serializable: true,
- writable: false,
- distinct: true,
- value: new Array(10)
- },
-/**
- Description TODO
- @private
-*/
- _parent: {
- serializable: true,
- enumerable: false,
- value: null
- },
-
- /**
- Returns the parent store.
- @function
- @returns this._parent
- */
- parent: {
- get: function() {
- return this._parent;
- }
- },
-
-
- /*
- *
- *
- */
-
- /**
- Returns the default store manager.
- If none is defined it will create one that will then be reused for subsequent calls.
- @function
- @returns _defaultStoreManager
- */
- defaultManager: {
- get: function() {
- if (_defaultStoreManager === null) {
- _defaultStoreManager = StoreManager.create().init();
- }
- return _defaultStoreManager;
- },
- // This is used only for testing.
- set: function(storeManager) {
- _defaultStoreManager = storeManager;
- }
- },
-/**
- @function
- @returns this.initWithParentAndRestrictions(null, null)
- */
- init: {
- serializable: false,
- enumerable: false,
- value: function() {
- return this.initWithParentAndRestrictions(null, null);
- }
- },
-/**
- @function
- @param {Property} parent TODO
- @returns this.initWithParentAndRestrictions(parent, null)
- */
- initWithParent: {
- serializable: false,
- enumerable: false,
- value: function(parent) {
- return this.initWithParentAndRestrictions(parent, null);
- }
- },
-/**
- Description TODO
- @function
- @param {Property} parent TODO
- @param {Property} restrictions TODO
- @returns itself
- */
- initWithParentAndRestrictions: {
- serializable: false,
- value: function(parent, restrictions) {
- if (this.parent !== null) {
- this.parent.remove(this);
- }
- this._parent = (parent != null ? parent : Store.defaultManager);
- this.parent.addStore(this);
-
- if (restrictions != null) {
- var restriction, index;
- for (index = 0; typeof (restriction = restrictions[index]) !== "undefined"; index++) {
- this.restrictions.push(Object.freeze(restriction));
- }
- }
- return this;
- }
- },
-/**
- Description TODO
- @function
- @param {Prototyoe} prototypeName TODO
- @param {Id} moduleId TODO
- @returns null
- */
- blueprintForPrototype$Implementation: {
- serializable: false,
- value: function(prototypeName, moduleId) {
- var binder, blueprint, index;
- for (index = 0; typeof (binder = this.blueprintBinders[index]) !== "undefined"; index++) {
- blueprint = binder.blueprintForPrototype(prototypeName, moduleId);
- if (blueprint !== null) {
- return blueprint;
- }
- }
- return null;
- }
- },
-/**
- Description TODO
- @function
- @param {Prototyoe} prototypeName TODO
- @param {Id} moduleId TODO
- @returns null
- */
- blueprintForPrototype: {
- value: function(prototypeName, moduleId) {
- if (this.parent !== null) {
- return this.parent.blueprintForPrototype(prototypeName, moduleId);
- }
- return null;
- }
- },
-
- /**
- Add a store to the cooperating objects stores.
- @function
- @param {Property} store TODO
- @returns store
- */
- addStore: {
- value: function(store) {
- if (this.parent !== null) {
- return this.parent.addStore(store);
- }
- return store;
- }
- },
-
-/**
- Remove a store to the cooperating objects stores.
- @function
- @param {Property} store TODO
- @returns store
- */
- removeStore: {
- value: function(store) {
- if (this.parent !== null) {
- return this.parent.removeStore(store);
- }
- return store;
- }
- },
-
-/**
- Description TODO
- @function
- @param {Id} objectId TODO
- @returns {Boolean} false
- */
- ownsObject: {
- value: function(objectId) {
- if ((objectId !== null) && (typeof (objectId.blueprint) === "object")) {
- return this.blueprintBinders.indexOf(objectId.blueprint.binder) >= 0;
- }
- return false;
- }
- },
-
-/**
- Description TODO
- @function
- @param {Property} blueprint TODO
- @returns {Boolean} false
- */
- ownsBlueprint: {
- value: function(blueprint) {
- var binder, index;
- for (index = 0; typeof (binder = this.blueprintBinders[index]) !== "undefined"; index++) {
- if (binder.blueprints.indexOf(blueprint) >= 0) {
- return true;
- }
- }
- return false;
- }
- },
-
-/**
- Load a binder in the store manager.
- This will force the loading of the corresponding store if not already in memory.
- @function
- @param {Property} binder Either a binder object or a serialized representation of a binder object.
- @returns this.parent.requireStoreForBlueprintBinder(binder)
- */
- requireStoreForBlueprintBinder: {
- value : function(binder) {
- if (this.parent !== null) {
- return this.parent.requireStoreForBlueprintBinder(binder);
- }
- }
- },
-
-/**
- Check if the referenced binder can be serviced by the target store.
- @function
- @param {Property} binder TODO
- @returns (binder.storeModuleId === metadata.moduleId) && (binder.storePrototypeName === metadata.objectName)
- */
- canServiceBlueprintBinder: {
- value: function(binder) {
- // TODO [PJYF May 10 2011] This unsufficient for most stores we should actually check the connection info
- var metadata = Montage.getInfoForObject(this);
- return (binder.storeModuleId === metadata.moduleId) && (binder.storePrototypeName === metadata.objectName);
- }
- },
-
-/**
- Check if the query blueprint can be serviced by this store.
- @function
- @param {Property} query TODO
- @returns {Boolean} false
- */
- canServiceQuery: {
- value: function(query) {
- if (query != null) {
- return this.ownsBlueprint(query.blueprint);
- }
- return false;
- }
- },
-/**
- Description TODO
- @function
- @param {Object} object TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns this.permanentIdForObjectId$Implementation(objectId, context, aTransactionId)
- */
- permanentIdForObjectId: {
- value: function(object, context, transactionId) {
- var aTransactionId = transactionId;
- var hadOpenTransaction = false;
- try {
- if (aTransactionId == null) {
- hadOpenTransaction = TransactionId.manager.hasCurrentTransaction();
- if (hadOpenTransaction) {
- aTransactionId = TransactionId.manager.currentTransaction();
- } else {
- aTransactionId = TransactionId.manager.startTransaction();
- }
- }
- return this.permanentIdForObjectId$Implementation(objectId, context, aTransactionId);
- } finally {
- if (!hadOpenTransaction) {
- TransactionId.manager.closeTransaction(aTransactionId);
- }
- }
- }
- },
-/**
- Description TODO
- @function
- @param {Object} object TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns Promise.ref(null)
- */
- permanentIdForObjectId$Implementation: {
- value: function(object, context, transactionId) {
- if (typeof object.objectId !== "undefined") {
- return Promise.ref(object.objectId);
- }
- return Promise.ref(null);
- }
- },
-/**
- Description TODO
- @function
- @param {Object} objectId TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns this.pledgeForObjectId$Implementation(objectId, context, aTransactionId)
- */
- pledgeForObjectId: {
- value: function(objectId, context, transactionId) {
- var aTransactionId = transactionId;
- var hadOpenTransaction = false;
- try {
- if (aTransactionId == null) {
- hadOpenTransaction = TransactionId.manager.hasCurrentTransaction();
- if (hadOpenTransaction) {
- aTransactionId = TransactionId.manager.currentTransaction();
- } else {
- aTransactionId = TransactionId.manager.startTransaction();
- }
- }
- return this.pledgeForObjectId$Implementation(objectId, context, aTransactionId);
- } finally {
- if (!hadOpenTransaction) {
- TransactionId.manager.closeTransaction(aTransactionId);
- }
- }
- }
- },
-/**
- Description TODO
- @function
- @param {Object} objectId TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns Promise.ref(null)
- */
- pledgeForObjectId$Implementation: {
- value: function(objectId, context, transactionId) {
- // TODO [PJYF May 17 2011] This needs to be reimplemented
- return Promise.ref(null);
- }
- },
-/**
- Description TODO
- @function
- @param {Object} sourceObject TODO
- @param {Property} relationshipName TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns this.pledgeForSourceObjectRelationshipNamed$Implementation(sourceObject, relationshipName, context, aTransactionId)
- */
- pledgeForSourceObjectRelationshipNamed: {
- value: function(sourceObject, relationshipName, context, transactionId) {
- var aTransactionId = transactionId;
- var hadOpenTransaction = false;
- try {
- if (aTransactionId == null) {
- hadOpenTransaction = TransactionId.manager.hasCurrentTransaction();
- if (hadOpenTransaction) {
- aTransactionId = TransactionId.manager.currentTransaction();
- } else {
- aTransactionId = TransactionId.manager.startTransaction();
- }
- }
- return this.pledgeForSourceObjectRelationshipNamed$Implementation(sourceObject, relationshipName, context, aTransactionId);
- } finally {
- if (!hadOpenTransaction) {
- TransactionId.manager.closeTransaction(aTransactionId);
- }
- }
- }
- },
-/**
- Description TODO
- @function
- @param {Object} sourceObject TODO
- @param {Property} relationshipName TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns Promise.ref(null)
- */
- pledgeForSourceObjectRelationshipNamed$Implementation: {
- value: function(sourceObject, relationshipName, context, transactionId) {
- if (this.parent !== null) {
- return this.parent.pledgeForSourceObjectRelationshipNamed$Implementation(sourceObject, relationshipName, context, transactionId);
- }
- return Promise.ref(null);
- }
- },
-
-/**
- Returns a pledge for the source object and the relationship referenced.
- The resulting pledge can be a simple one or an array pledge depending on the type of relationship.
- Note: The source object may not be in the current data source. The destination object is.
- @function
- @param {Object} sourceObject TODO
- @param {Property} relationship TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns this.pledgeForSourceObjectRelationship$Implementation(sourceObject, relationship, context, aTransactionId)
- */
- pledgeForSourceObjectRelationship: {
- value: function(sourceObject, relationship, context, transactionId) {
- var aTransactionId = transactionId;
- var hadOpenTransaction = false;
- try {
- if (aTransactionId == null) {
- hadOpenTransaction = TransactionId.manager.hasCurrentTransaction();
- if (hadOpenTransaction) {
- aTransactionId = TransactionId.manager.currentTransaction();
- } else {
- aTransactionId = TransactionId.manager.startTransaction();
- }
- }
- return this.pledgeForSourceObjectRelationship$Implementation(sourceObject, relationship, context, aTransactionId);
- } finally {
- if (!hadOpenTransaction) {
- TransactionId.manager.closeTransaction(aTransactionId);
- }
- }
- }
- },
-
-/**
- Description TODO
- @function
- @param {Object} sourceObject TODO
- @param {Property} relationship TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns this.parent.pledgeForSourceObjectRelationship$Implementation(sourceObject, relationship, context, transactionId)
- */
- pledgeForSourceObjectRelationship$Implementation: {
- value: function(sourceObject, relationship, context, transactionId) {
- if (this.parent !== null) {
- return this.parent.pledgeForSourceObjectRelationship$Implementation(sourceObject, relationship, context, transactionId);
- }
- }
- },
-
-/**
- Called by the framework whenever a new object is inserted, or a pledge is fired.
- @function
- @param {Object} object TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns this.initializeObject$Implementation(object, context, aTransactionId)
- */
- initializeObject: {
- value: function(object, context, transactionId) {
- var aTransactionId = transactionId;
- var hadOpenTransaction = false;
- try {
- if (aTransactionId == null) {
- hadOpenTransaction = TransactionId.manager.hasCurrentTransaction();
- if (hadOpenTransaction) {
- aTransactionId = TransactionId.manager.currentTransaction();
- } else {
- aTransactionId = TransactionId.manager.startTransaction();
- }
- }
- return this.initializeObject$Implementation(object, context, aTransactionId);
- } finally {
- if (!hadOpenTransaction) {
- TransactionId.manager.closeTransaction(aTransactionId);
- }
- }
- }
- },
-
-/**
- Description TODO
- @function
- @param {Object} object TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns Promise.ref(object)
- */
- initializeObject$Implementation: {
- value: function(object, context, transactionId) {
- if (typeof object.objectId === "undefined") {
- // TODO [PJYF June 17 2011] This will need to be revisited.
- object.objectId = TemporaryObjectId.create().init();
- }
- return Promise.ref(object);
- }
- },
-
-/**
- Description TODO
- @function
- @param {Object} target TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns this.repledgeObject$Implementation(target, context, aTransactionId)
- */
- repledgeObject: {
- value: function(target, context, transactionId) {
- var aTransactionId = transactionId;
- var hadOpenTransaction = false;
- try {
- if (aTransactionId == null) {
- hadOpenTransaction = TransactionId.manager.hasCurrentTransaction();
- if (hadOpenTransaction) {
- aTransactionId = TransactionId.manager.currentTransaction();
- } else {
- aTransactionId = TransactionId.manager.startTransaction();
- }
- }
- if (Array.isArray(target)) {
- // Invalidate objects in the list
- var returnArray = new Array(target.length);
- var mo, index;
- for (index = 0; typeof (mo = target[index]) !== "undefined"; index++) {
- returnArray[index] = this.repledgeObject$Implementation(mo, context, aTransactionId);
- }
- return returnArray;
- } else {
- return this.repledgeObject$Implementation(target, context, aTransactionId);
- }
- } finally {
- if (!hadOpenTransaction) {
- TransactionId.manager.closeTransaction(aTransactionId);
- }
- }
- }
- },
-
-/**
- Description TODO
- @function
- @param {Object} object TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns Promise.ref(object)
- */
- repledgeObject$Implementation: {
- value: function(object, context, transactionId) {
- if (typeof object.objectId !== "undefined") {
- return this.pledgeForObjectId(object.objectId, context, transactionId);
- }
- return Promise.ref(object);
- }
-
- },
-
-/**
- Description TODO
- @function
- @param {Property} context TODO
- @param {Id} transactionId TODO
- */
- saveChangesInContext: {
- value: function(context, transactionId) {
- var aTransactionId = transactionId;
- var hadOpenTransaction = false;
- try {
- if (aTransactionId == null) {
- hadOpenTransaction = TransactionId.manager.hasCurrentTransaction();
- if (hadOpenTransaction) {
- aTransactionId = TransactionId.manager.currentTransaction();
- } else {
- aTransactionId = TransactionId.manager.startTransaction();
- }
- }
- this.saveChangesInContext$Implementation(context, aTransactionId);
- } finally {
- if (!hadOpenTransaction) {
- TransactionId.manager.closeTransaction(aTransactionId);
- }
- }
- }
- },
-
-/**
- Description TODO
- @function
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns this.parent.saveChangesInContext$Implementation(context, transactionId)
- */
- saveChangesInContext$Implementation: {
- value: function(context, transactionId) {
- if (this.parent !== null) {
- return this.parent.saveChangesInContext$Implementation(context, transactionId);
- }
- }
- },
-
-/**
- Called on each store before a save.
- Upon receiving this message the store should take steps to prepare the commit and insure it will succeed.
- If the commit cannot succeed it should return a rejected promise.
- @function
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns {Boolean} Promise.ref(true)
- */
- prepareToSaveChangesInContext$Implementation: {
- value: function(context, transactionId) {
- // TODO [PJYF Sep 27 2011] This needs to be reimplemented
- return Promise.ref(true);
- }
- },
-
-/**
- Called on each store before a revert a prepare to save.
- Any step taken to prepare the save should be rolled back.
- @function
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns {Boolean} Promise.ref(true)
- */
- cancelSaveChangesInContext$Implementation: {
- value: function(context, transactionId) {
- // TODO [PJYF Sep 27 2011] This needs to be reimplemented
- return Promise.ref(true);
- }
- },
-
-/**
- Commits the transaction.
- Any failure during this step will cause the store to be left an inconsistent state.
- @function
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns {Boolean} Promise.ref(true)
- */
- commitChangesInContext$Implementation: {
- value: function(context, transactionId) {
- // TODO [PJYF Sep 27 2011] This needs to be reimplemented
- return Promise.ref(true);
- }
- },
-
-/**
- Description TODO
- @function
- @param {Property} query TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns this.queryInContext$Implementation(query, context, aTransactionId)
- */
- queryInContext: {
- value: function(query, context, transactionId) {
- var aTransactionId = transactionId;
- var hadOpenTransaction = false;
- try {
- if (aTransactionId == null) {
- hadOpenTransaction = TransactionId.manager.hasCurrentTransaction();
- if (hadOpenTransaction) {
- aTransactionId = TransactionId.manager.currentTransaction();
- } else {
- aTransactionId = TransactionId.manager.startTransaction();
- }
- }
- return this.queryInContext$Implementation(query, context, aTransactionId);
- } finally {
- if (!hadOpenTransaction) {
- TransactionId.manager.closeTransaction(aTransactionId);
- }
- }
- }
- },
-
-/**
- Description TODO
- @function
- @param {Property} query TODO
- @param {Property} context TODO
- @param {Id} transactionId TODO
- @returns {Array} Promise.ref([])
- */
- queryInContext$Implementation: {
- value: function(query, context, transactionID) {
- // TODO [PJYF Sept 4 2011] This needs to be implemented
- return Promise.ref([]);
- }
- }
-
-
-});
-
-/**
- @class module:montage/data/store.StoreManager
-*/
-var StoreManager = exports.StoreManager = Montage.create(Store,/** @lends module:montage/data/store.StoreManager# */ {
-/**
- Description TODO
- @type {Property}
- @default {Array} new Array(10)
- */
- stores: {
- serializable: true,
- writable: false,
- distinct: true,
- value: new Array(10)
- },
-/**
- Description TODO
- @function
- @returns itself
- */
- parent: {
- get: function() {
- return this;
- }
- },
-/**
- Description TODO
- @function
- @returns itself
- */
- init: {
- serializable: false,
- enumerable: false,
- value: function() {
- return this;
- }
- },
-/**
- Description TODO
- @function
- @param {Property} store Store to be added.
- @returns store
- */
- addStore: {
- value: function(store) {
- if ((store !== null) && (store !== this)) {
- var index = this.stores.indexOf(store);
- if (index < 0) {
- this.stores.push(store);
- }
- }
- return store;
- }
- },
-/**
- Description TODO
- @function
- @param {Property} store Store to be removed.
- @returns store
- */
- removeStore: {
- value: function(store) {
- if (store !== null) {
- var index = this.stores.indexOf(store);
- if (index >= 0) {
- this.stores = this.stores.splice(index, 1);
- }
- }
- return store;
- }
- },
-
- /**
- Search through the stores for a blueprint that extends that prototype.
- @function
- @param {Property} prototypeName TODO
- @param {Property} moduleId TODO
- @returns The requested blueprint or null if this prototype is not managed.
- */
- blueprintForPrototype: {
- value: function(prototypeName, moduleId) {
- var store, blueprint, index;
- for (index = 0; typeof (store = this.stores[index]) !== "undefined"; index++) {
- blueprint = store.blueprintForPrototype$Implementation(prototypeName, moduleId);
- if (blueprint !== null) {
- return blueprint;
- }
- }
- return null;
- }
- },
-
-/**
- Description TODO
- @function
- @param {Object} blueprint The blueprint object.
- @returns store or null
- */
- storeForBlueprint: {
- value: function(blueprint) {
- var store, index;
- for (index = 0; typeof (store = this.stores[index]) !== "undefined"; index++) {
- if (store.ownsBlueprint(blueprint)) {
- return store;
- }
- }
- return null;
- }
- },
-
-/**
- Search for existing store that can service this blueprint binder.
- @function
- @param {Property} binder The blueprint binder to test for.
- @returns Promise.ref(store) A store that can service that blueprint binder or null if none was found.
- */
- findStoreForBlueprintBinder: {
- value: function(binder) {
- var store = this._findStoreForBlueprintBinder(binder);
- if (store == null) {
- store = this.requireStoreForBlueprintBinder(binder);
- }
- return Promise.ref(store);
- }
- },
-
-/**
- Description TODO
- @private
-*/
- _findStoreForBlueprintBinder: {
- value: function(binder) {
- var store, index;
- for (index = 0; typeof (store = this.stores[index]) !== "undefined"; index++) {
- if (store.canServiceBlueprintBinder(binder)) {
- store.addBlueprintBinder(binder);
- return store;
- }
- }
- return null;
- }
- },
-
-/**
- Search for existing store that can service this blueprint binder.
- @function
- @param {Property} binder The blueprint binder to test for.
- @returns Promise.ref(null) or Deserializer.create().initWithString(binder).deserialize(function(binder) or this._requireStoreForBlueprintBinder(binder) or this._requireStoreForBlueprintBinder(binder)
- */
- requireStoreForBlueprintBinder: {
- value: function(binder) {
- if ((binder === null) || (typeof binder === "undefined")) {
- return Promise.ref(null);
- }
- if (typeof binder === "string") {
- return Deserializer.create().initWithString(binder).deserializeObject(function(binder) {
- return this._requireStoreForBlueprintBinder(binder);
- }, require);
- }
- return this._requireStoreForBlueprintBinder(binder);
- }
- },
-
-/**
- Description TODO
- @private
-*/
- _requireStoreForBlueprintBinder: {
- value: function(binder) {
- if ((binder === null) || (typeof binder === "undefined")) {
- return Promise.ref(null);
- }
-
- var store = null;
- var aStore, index;
- for (index = 0; typeof (aStore = this.stores[index]) !== "undefined"; index++) {
- if (aStore.blueprintBinders.indexOf(binder) >= 0) {
- store = aStore;
- }
- }
- if (store == null) {
- var results = Promise.defer();
- require.async(binder.storeModuleId,
- function(exports) {
- results.resolve(exports);
- });
- var self = this;
- return results.promise.then(function(exports) {
- var storePrototype = exports[binder.storePrototypeName], store;
- if ((typeof storePrototype !== "undefined") && (storePrototype !== null)) {
- store = storePrototype.create().initWithParent(self);
- store.addBlueprintBinder(binder);
- } else {
- return Promise.reject("No Store found " + binder.storePrototypeName);
- }
- return store;
- }
- );
- } else {
- return Promise.ref(store);
- }
- }
- },
-
-/**
- Description TODO
- @function
- @param {object} objectId TODO
- @returns store or null
- */
- storeForObjectId: {
- value: function(objectId) {
- var store, index;
- for (index = 0; typeof (store = this.stores[index]) !== "undefined"; index++) {
- if (store.ownsObject(objectId)) {
- return store;
- }
- }
- return null;
- }
- },
-
-/**
- Description TODO
- @function
- @param {Object} sourceObject TODO
- @param {Property} relationshipName TODO
- @param {Property} context TODO
- @param {Property} transactionId TODO
- @returns store.pledgeForSourceObjectRelationship(sourceObject, relationship, context, transactionId) or Promise.ref(null)
- */
- pledgeForSourceObjectRelationshipNamed$Implementation: {
- value: function(sourceObject, relationshipName, context, transactionId) {
- var store = null;
- var relationship = null;
- var metadata = Montage.getInfoForObject(sourceObject);
- var sourceBlueprint = this.blueprintForPrototype(metadata.objectName, metadata.moduleId);
- if (sourceBlueprint !== null) {
- relationship = sourceBlueprint.attributeForName(relationshipName);
- if ((relationship !== null) && (relationship.targetBlueprint !== null)) {
- store = this.storeForBlueprint(relationship.targetBlueprint);
- } else {
- logger.error("No relationship named " + relationshipName + " for " + sourceObject);
- }
- }
- if (store !== null) {
- return store.pledgeForSourceObjectRelationship(sourceObject, relationship, context, transactionId);
- }
- return Promise.ref(null);
- }
- },
-
-/**
- Description TODO
- @function
- @param {Object} objectId TODO
- @param {Property} context TODO
- @param {Property} transactionId TODO
- @returns store.pledgeForObjectId$Implementation(objectId, context, transactionId) or Promise.ref(null)
- */
- pledgeForObjectId$Implementation: {
- value: function(objectId, context, transactionId) {
- var store = this.storeForObjectId(objectId);
- if (store !== null) {
- return store.pledgeForObjectId$Implementation(objectId, context, transactionId);
- }
- return Promise.ref(null);
- }
- },
-
-/**
- Description TODO
- @function
- @param {Object} sourceObject TODO
- @param {Property} relationship TODO
- @param {Property} context TODO
- @param {Property} transactionId TODO
- @returns Promise.ref(null)
- */
- pledgeForSourceObjectRelationship$Implementation: {
- value: function(sourceObject, relationship, context, transactionId) {
- return Promise.ref(null);
- }
- },
-
-/**
- Description TODO
- @function
- @param {Object} object TODO
- @param {Property} context TODO
- @param {Property} transactionId TODO
- @returns Promise.ref(object)
- */
- initializeObject$Implementation: {
- value: function(object, context, transactionId) {
- if (typeof object.objectId === "undefined") {
- // TODO [PJYF June 17 2011] This will need to be revisited.
- object.objectId = TemporaryObjectId.create().init();
- }
- return Promise.ref(object);
- }
- },
-
-/**
- Description TODO
- @function
- @param {Object} object TODO
- @param {Property} context TODO
- @param {Property} transactionId TODO
- @returns this.pledgeForObjectId(object.objectId, context, transactionId) or Promise.ref(object)
- */
- repledgeObject$Implementation: {
- value: function(object, context, transactionId) {
- if (typeof object.objectId !== "undefined") {
- return this.pledgeForObjectId(object.objectId, context, transactionId);
- }
- return Promise.ref(object);
- }
-
- },
-
-/**
- The default is a 2 step commit.
- In the first step we call prepareForSave on each managed store.
- The second step calls commitChanges on each store.
- prepareToSave should return a rejected promise if the commit will fail.
- If any store return a reject all store will receive a cancelSave message.
- Any failure during the commitChanges will result in an inconsistent state of the stores.
- @function
- @param {Property} context TODO
- @param {Property} transactionId TODO
- @returns Promise.when(Promise.all(secondStep), function() or Promise.ref(true) or Promise.when(Promise.all(secondStep), function() or return Promise.reject("Could not save the transaction: " + transactionId)
- */
- saveChangesInContext$Implementation: {
- value: function(context, transactionId) {
- // TODO [PJYF Sept 27 2011] We need to post notification to the observing context.
- // We do a 2 step commit. We need to prepare all stores for commit. If nothing raises than we can commit for real and hopefully we don't raise then.
- var aStore, index;
- var firstStep = new Array(this.stores.length);
- var secondStep = new Array(this.stores.length);
- for (index = 0; typeof (aStore = this.stores[index]) !== "undefined"; index++) {
- firstStep[index] = aStore.prepareToSaveChangesInContext$Implementation(context, transactionId);
- }
- Promise.when(Promise.all(firstStep), function() {
- for (index = 0; typeof (aStore = this.stores[index]) !== "undefined"; index++) {
- secondStep[index] = aStore.commitChangesInContext$Implementation(context, transactionId);
- }
- return Promise.when(Promise.all(secondStep), function() {
- return Promise.ref(true);
- }, function() {
- throw Exception.create().initWithMessageTargetAndMethod('Failed to revert prepare for save transaction: ' + transactionId, this, "saveChangesInContext");
- }
- );
- }, function() {
- for (index = 0; typeof (aStore = this.stores[index]) !== "undefined"; index++) {
- secondStep[index] = aStore.cancelSaveChangesInContext$Implementation(context, transactionId);
- }
- return Promise.when(Promise.all(secondStep), function() {
- return Promise.reject("Could not save the transaction: " + transactionId);
- }, function() {
- throw Exception.create().initWithMessageTargetAndMethod('Commit failed for transaction: ' + transactionId, this, "saveChangesInContext");
- }
- );
- });
- }
- },
-
-/**
- Called on each store before a save.
- Upon receiving this message the store should take steps to prepare the commit and insure it will succeed.
- If the commit cannot succeed it should return a rejected promise.
- @function
- @param {Property} context TODO
- @param {Property} transactionId TODO
- @returns Promise.ref(true)
- */
- prepareToSaveChangesInContext$Implementation: {
- value: function(context, transactionId) {
- // TODO [PJYF Sep 27 2011] This needs to be reimplemented
- return Promise.ref(true);
- }
- },
-
-/**
- Called on each store before a revert a prepare to save.
- Any step taken to prepare the save should be rolled back.
- @function
- @param {Property} context TODO
- @param {Property} transactionId TODO
- @returns Promise.ref(true)
- */
- cancelSaveChangesInContext$Implementation: {
- value: function(context, transactionId) {
- // TODO [PJYF Sep 27 2011] This needs to be reimplemented
- return Promise.ref(true);
- }
- },
-
-/**
- Commits the transaction.
- Any failure during this step will cause the store to be left an inconsistent state.
- @function
- @param {Property} context TODO
- @param {Property} transactionId TODO
- @returns Promise.ref(true)
- */
- commitChangesInContext$Implementation: {
- value: function(context, transactionId) {
- // TODO [PJYF Sep 27 2011] This needs to be reimplemented
- return Promise.ref(true);
- }
- },
-
-/**
- Description TODO
- @function
- @param {Property} query TODO
- @param {Property} context TODO
- @param {Property} transactionId TODO
- @returns {Array} Promise.ref([]) or store.queryInContext$Implementation(query, context, transactionId)
- */
- queryInContext$Implementation: {
- value: function(query, context, transactionId) {
- if ((query == null) || (context == null)) {
- return Promise.ref([]);
- }
- var store = this.storeForBlueprint(query.blueprint);
- if (store == null) {
- // TODO [PJYF Sept 27 2011] Should we raise if we don't have a store?
- return Promise.ref([]);
- }
- return store.queryInContext$Implementation(query, context, transactionId);
- }
- }
-
-});
--
cgit v1.2.3