📄 base.js
字号:
/* Copyright (c) 2004-2006, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.data.old.provider.Base");dojo.require("dojo.lang.assert");// -------------------------------------------------------------------// Constructor// -------------------------------------------------------------------dojo.data.old.provider.Base = function() { /** * summary: * A Data Provider serves as a connection to some data source, * like a relational database. This data provider Base class * serves as an abstract superclass for other data provider * classes. */ this._countOfNestedTransactions = 0; this._changesInCurrentTransaction = null;};// -------------------------------------------------------------------// Public instance methods// -------------------------------------------------------------------dojo.data.old.provider.Base.prototype.beginTransaction = function() { /** * Marks the beginning of a transaction. * * Each time you call beginTransaction() you open a new transaction, * which you need to close later using endTransaction(). Transactions * may be nested, but the beginTransaction and endTransaction calls * always need to come in pairs. */ if (this._countOfNestedTransactions === 0) { this._changesInCurrentTransaction = []; } this._countOfNestedTransactions += 1;};dojo.data.old.provider.Base.prototype.endTransaction = function() { /** * Marks the end of a transaction. */ this._countOfNestedTransactions -= 1; dojo.lang.assert(this._countOfNestedTransactions >= 0); if (this._countOfNestedTransactions === 0) { var listOfChangesMade = this._saveChanges(); this._changesInCurrentTransaction = null; if (listOfChangesMade.length > 0) { // dojo.debug("endTransaction: " + listOfChangesMade.length + " changes made"); this._notifyObserversOfChanges(listOfChangesMade); } }};dojo.data.old.provider.Base.prototype.getNewItemToLoad = function() { return this._newItem(); // dojo.data.old.Item};dojo.data.old.provider.Base.prototype.newItem = function(/* string */ itemName) { /** * Creates a new item. */ dojo.lang.assertType(itemName, String, {optional: true}); var item = this._newItem(); if (itemName) { item.set('name', itemName); } return item; // dojo.data.old.Item};dojo.data.old.provider.Base.prototype.newAttribute = function(/* string */ attributeId) { /** * Creates a new attribute. */ dojo.lang.assertType(attributeId, String, {optional: true}); var attribute = this._newAttribute(attributeId); return attribute; // dojo.data.old.Attribute};dojo.data.old.provider.Base.prototype.getAttribute = function(/* string */ attributeId) { dojo.unimplemented('dojo.data.old.provider.Base'); var attribute; return attribute; // dojo.data.old.Attribute};dojo.data.old.provider.Base.prototype.getAttributes = function() { dojo.unimplemented('dojo.data.old.provider.Base'); return this._arrayOfAttributes; // Array};dojo.data.old.provider.Base.prototype.fetchArray = function() { dojo.unimplemented('dojo.data.old.provider.Base'); return []; // Array};dojo.data.old.provider.Base.prototype.fetchResultSet = function() { dojo.unimplemented('dojo.data.old.provider.Base'); var resultSet; return resultSet; // dojo.data.old.ResultSet};dojo.data.old.provider.Base.prototype.noteChange = function(/* dojo.data.old.Item */ item, /* string or dojo.data.old.Attribute */ attribute, /* anything */ value) { var change = {item: item, attribute: attribute, value: value}; if (this._countOfNestedTransactions === 0) { this.beginTransaction(); this._changesInCurrentTransaction.push(change); this.endTransaction(); } else { this._changesInCurrentTransaction.push(change); }};dojo.data.old.provider.Base.prototype.addItemObserver = function(/* dojo.data.old.Item */ item, /* object */ observer) { /** * summary: Registers an object as an observer of an item, * so that the object will be notified when the item changes. */ dojo.lang.assertType(item, dojo.data.old.Item); item.addObserver(observer);};dojo.data.old.provider.Base.prototype.removeItemObserver = function(/* dojo.data.old.Item */ item, /* object */ observer) { /** * summary: Removes the observer registration for a previously * registered object. */ dojo.lang.assertType(item, dojo.data.old.Item); item.removeObserver(observer);};// -------------------------------------------------------------------// Private instance methods// -------------------------------------------------------------------dojo.data.old.provider.Base.prototype._newItem = function() { var item = new dojo.data.old.Item(this); return item; // dojo.data.old.Item};dojo.data.old.provider.Base.prototype._newAttribute = function(/* String */ attributeId) { var attribute = new dojo.data.old.Attribute(this); return attribute; // dojo.data.old.Attribute};dojo.data.old.provider.Base.prototype._saveChanges = function() { var arrayOfChangesMade = this._changesInCurrentTransaction; return arrayOfChangesMade; // Array};dojo.data.old.provider.Base.prototype._notifyObserversOfChanges = function(/* Array */ arrayOfChanges) { var arrayOfResultSets = this._getResultSets(); for (var i in arrayOfChanges) { var change = arrayOfChanges[i]; var changedItem = change.item; var arrayOfItemObservers = changedItem.getObservers(); for (var j in arrayOfItemObservers) { var observer = arrayOfItemObservers[j]; observer.observedObjectHasChanged(changedItem, change); } for (var k in arrayOfResultSets) { var resultSet = arrayOfResultSets[k]; var arrayOfResultSetObservers = resultSet.getObservers(); for (var m in arrayOfResultSetObservers) { observer = arrayOfResultSetObservers[m]; observer.observedObjectHasChanged(resultSet, change); } } }};dojo.data.old.provider.Base.prototype._getResultSets = function() { dojo.unimplemented('dojo.data.old.provider.Base'); return []; // Array};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -