| // Copyright 2012 The Closure Library Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS-IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| /** |
| * @fileoverview Wrapper for a IndexedDB key range. |
| * |
| */ |
| |
| |
| goog.provide('goog.db.KeyRange'); |
| |
| |
| |
| /** |
| * Creates a new IDBKeyRange wrapper object. Should not be created directly, |
| * instead use one of the static factory methods. For example: |
| * @see goog.db.KeyRange.bound |
| * @see goog.db.KeyRange.lowerBound |
| * |
| * @param {!IDBKeyRange} range Underlying IDBKeyRange object. |
| * @constructor |
| * @final |
| */ |
| goog.db.KeyRange = function(range) { |
| /** |
| * Underlying IDBKeyRange object. |
| * |
| * @type {!IDBKeyRange} |
| * @private |
| */ |
| this.range_ = range; |
| }; |
| |
| |
| /** |
| * The IDBKeyRange. |
| * @type {!Object} |
| * @private |
| */ |
| goog.db.KeyRange.IDB_KEY_RANGE_ = goog.global.IDBKeyRange || |
| goog.global.webkitIDBKeyRange; |
| |
| |
| /** |
| * Creates a new key range for a single value. |
| * |
| * @param {IDBKeyType} key The single value in the range. |
| * @return {!goog.db.KeyRange} The key range. |
| */ |
| goog.db.KeyRange.only = function(key) { |
| return new goog.db.KeyRange(goog.db.KeyRange.IDB_KEY_RANGE_.only(key)); |
| }; |
| |
| |
| /** |
| * Creates a key range with upper and lower bounds. |
| * |
| * @param {IDBKeyType} lower The value of the lower bound. |
| * @param {IDBKeyType} upper The value of the upper bound. |
| * @param {boolean=} opt_lowerOpen If true, the range excludes the lower bound |
| * value. |
| * @param {boolean=} opt_upperOpen If true, the range excludes the upper bound |
| * value. |
| * @return {!goog.db.KeyRange} The key range. |
| */ |
| goog.db.KeyRange.bound = function(lower, upper, opt_lowerOpen, opt_upperOpen) { |
| return new goog.db.KeyRange(goog.db.KeyRange.IDB_KEY_RANGE_.bound( |
| lower, upper, opt_lowerOpen, opt_upperOpen)); |
| }; |
| |
| |
| /** |
| * Creates a key range with a lower bound only, finishes at the last record. |
| * |
| * @param {IDBKeyType} lower The value of the lower bound. |
| * @param {boolean=} opt_lowerOpen If true, the range excludes the lower bound |
| * value. |
| * @return {!goog.db.KeyRange} The key range. |
| */ |
| goog.db.KeyRange.lowerBound = function(lower, opt_lowerOpen) { |
| return new goog.db.KeyRange(goog.db.KeyRange.IDB_KEY_RANGE_.lowerBound( |
| lower, opt_lowerOpen)); |
| }; |
| |
| |
| /** |
| * Creates a key range with a upper bound only, starts at the first record. |
| * |
| * @param {IDBKeyType} upper The value of the upper bound. |
| * @param {boolean=} opt_upperOpen If true, the range excludes the upper bound |
| * value. |
| * @return {!goog.db.KeyRange} The key range. |
| */ |
| goog.db.KeyRange.upperBound = function(upper, opt_upperOpen) { |
| return new goog.db.KeyRange(goog.db.KeyRange.IDB_KEY_RANGE_.upperBound( |
| upper, opt_upperOpen)); |
| }; |
| |
| |
| /** |
| * Returns underlying key range object. This is used in ObjectStore's openCursor |
| * and count methods. |
| * @return {!IDBKeyRange} |
| */ |
| goog.db.KeyRange.prototype.range = function() { |
| return this.range_; |
| }; |