summaryrefslogtreecommitdiff
path: root/includes/js/dojox/storage/GearsStorageProvider.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojox/storage/GearsStorageProvider.js')
-rw-r--r--includes/js/dojox/storage/GearsStorageProvider.js320
1 files changed, 0 insertions, 320 deletions
diff --git a/includes/js/dojox/storage/GearsStorageProvider.js b/includes/js/dojox/storage/GearsStorageProvider.js
deleted file mode 100644
index 1e80634..0000000
--- a/includes/js/dojox/storage/GearsStorageProvider.js
+++ /dev/null
@@ -1,320 +0,0 @@
-if(!dojo._hasResource["dojox.storage.GearsStorageProvider"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dojox.storage.GearsStorageProvider"] = true;
-dojo.provide("dojox.storage.GearsStorageProvider");
-dojo.require("dojox.storage.Provider");
-dojo.require("dojox.storage.manager");
-dojo.require("dojox.sql");
-
-if(dojo.isGears){
-
- (function(){
- // make sure we don't define the gears provider if we're not gears
- // enabled
-
- dojo.declare("dojox.storage.GearsStorageProvider", dojox.storage.Provider, {
- // summary:
- // Storage provider that uses the features of Google Gears
- // to store data (it is saved into the local SQL database
- // provided by Gears, using dojox.sql)
- // description:
- // You can disable this storage provider with the following djConfig
- // variable:
- // var djConfig = { disableGearsStorage: true };
- //
- // Authors of this storage provider-
- // Brad Neuberg, bkn3@columbia.edu
- constructor: function(){
- },
- // instance methods and properties
- TABLE_NAME: "__DOJO_STORAGE",
- initialized: false,
-
- _available: null,
-
- initialize: function(){
- //console.debug("dojox.storage.GearsStorageProvider.initialize");
- if(dojo.config["disableGearsStorage"] == true){
- return;
- }
-
- // partition our storage data so that multiple apps
- // on the same host won't collide
- this.TABLE_NAME = "__DOJO_STORAGE";
-
- // create the table that holds our data
- try{
- dojox.sql("CREATE TABLE IF NOT EXISTS " + this.TABLE_NAME + "( "
- + " namespace TEXT, "
- + " key TEXT, "
- + " value TEXT "
- + ")"
- );
- dojox.sql("CREATE UNIQUE INDEX IF NOT EXISTS namespace_key_index"
- + " ON " + this.TABLE_NAME
- + " (namespace, key)");
- }catch(e){
- console.debug("dojox.storage.GearsStorageProvider.initialize:", e);
-
- this.initialized = false; // we were unable to initialize
- dojox.storage.manager.loaded();
- return;
- }
-
- // indicate that this storage provider is now loaded
- this.initialized = true;
- dojox.storage.manager.loaded();
- },
-
- isAvailable: function(){
- // is Google Gears available and defined?
- return this._available = dojo.isGears;
- },
-
- put: function(key, value, resultsHandler, namespace){
- if(this.isValidKey(key) == false){
- throw new Error("Invalid key given: " + key);
- }
- namespace = namespace||this.DEFAULT_NAMESPACE;
-
- // serialize the value;
- // handle strings differently so they have better performance
- if(dojo.isString(value)){
- value = "string:" + value;
- }else{
- value = dojo.toJson(value);
- }
-
- // try to store the value
- try{
- dojox.sql("DELETE FROM " + this.TABLE_NAME
- + " WHERE namespace = ? AND key = ?",
- namespace, key);
- dojox.sql("INSERT INTO " + this.TABLE_NAME
- + " VALUES (?, ?, ?)",
- namespace, key, value);
- }catch(e){
- // indicate we failed
- console.debug("dojox.storage.GearsStorageProvider.put:", e);
- resultsHandler(this.FAILED, key, e.toString());
- return;
- }
-
- if(resultsHandler){
- resultsHandler(dojox.storage.SUCCESS, key, null);
- }
- },
-
- get: function(key, namespace){
- if(this.isValidKey(key) == false){
- throw new Error("Invalid key given: " + key);
- }
- namespace = namespace||this.DEFAULT_NAMESPACE;
-
- // try to find this key in the database
- var results = dojox.sql("SELECT * FROM " + this.TABLE_NAME
- + " WHERE namespace = ? AND "
- + " key = ?",
- namespace, key);
- if(!results.length){
- return null;
- }else{
- results = results[0].value;
- }
-
- // destringify the content back into a
- // real JavaScript object;
- // handle strings differently so they have better performance
- if(dojo.isString(results) && (/^string:/.test(results))){
- results = results.substring("string:".length);
- }else{
- results = dojo.fromJson(results);
- }
-
- return results;
- },
-
- getNamespaces: function(){
- var results = [ dojox.storage.DEFAULT_NAMESPACE ];
-
- var rs = dojox.sql("SELECT namespace FROM " + this.TABLE_NAME
- + " DESC GROUP BY namespace");
- for(var i = 0; i < rs.length; i++){
- if(rs[i].namespace != dojox.storage.DEFAULT_NAMESPACE){
- results.push(rs[i].namespace);
- }
- }
-
- return results;
- },
-
- getKeys: function(namespace){
- namespace = namespace||this.DEFAULT_NAMESPACE;
- if(this.isValidKey(namespace) == false){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- var rs = dojox.sql("SELECT key FROM " + this.TABLE_NAME
- + " WHERE namespace = ?",
- namespace);
-
- var results = [];
- for(var i = 0; i < rs.length; i++){
- results.push(rs[i].key);
- }
-
- return results;
- },
-
- clear: function(namespace){
- if(this.isValidKey(namespace) == false){
- throw new Error("Invalid namespace given: " + namespace);
- }
- namespace = namespace||this.DEFAULT_NAMESPACE;
-
- dojox.sql("DELETE FROM " + this.TABLE_NAME
- + " WHERE namespace = ?",
- namespace);
- },
-
- remove: function(key, namespace){
- namespace = namespace||this.DEFAULT_NAMESPACE;
-
- dojox.sql("DELETE FROM " + this.TABLE_NAME
- + " WHERE namespace = ? AND"
- + " key = ?",
- namespace,
- key);
- },
-
- putMultiple: function(keys, values, resultsHandler, namespace) {
- if(this.isValidKeyArray(keys) === false
- || ! values instanceof Array
- || keys.length != values.length){
- throw new Error("Invalid arguments: keys = ["
- + keys + "], values = [" + values + "]");
- }
-
- if(namespace == null || typeof namespace == "undefined"){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- if(this.isValidKey(namespace) == false){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- this._statusHandler = resultsHandler;
-
- // try to store the value
- try{
- dojox.sql.open();
- dojox.sql.db.execute("BEGIN TRANSACTION");
- var _stmt = "REPLACE INTO " + this.TABLE_NAME + " VALUES (?, ?, ?)";
- for(var i=0;i<keys.length;i++) {
- // serialize the value;
- // handle strings differently so they have better performance
- var value = values[i];
- if(dojo.isString(value)){
- value = "string:" + value;
- }else{
- value = dojo.toJson(value);
- }
-
- dojox.sql.db.execute( _stmt,
- [namespace, keys[i], value]);
- }
- dojox.sql.db.execute("COMMIT TRANSACTION");
- dojox.sql.close();
- }catch(e){
- // indicate we failed
- console.debug("dojox.storage.GearsStorageProvider.putMultiple:", e);
- if(resultsHandler){
- resultsHandler(this.FAILED, keys, e.toString());
- }
- return;
- }
-
- if(resultsHandler){
- resultsHandler(dojox.storage.SUCCESS, key, null);
- }
- },
-
- getMultiple: function(keys, namespace){
- // TODO: Maybe use SELECT IN instead
-
- if(this.isValidKeyArray(keys) === false){
- throw new ("Invalid key array given: " + keys);
- }
-
- if(namespace == null || typeof namespace == "undefined"){
- namespace = dojox.storage.DEFAULT_NAMESPACE;
- }
-
- if(this.isValidKey(namespace) == false){
- throw new Error("Invalid namespace given: " + namespace);
- }
-
- var _stmt = "SELECT * FROM " + this.TABLE_NAME +
- " WHERE namespace = ? AND " + " key = ?";
-
- var results = [];
- for(var i=0;i<keys.length;i++){
- var result = dojox.sql( _stmt, namespace, keys[i]);
-
- if( ! result.length){
- results[i] = null;
- }else{
- result = result[0].value;
-
- // destringify the content back into a
- // real JavaScript object;
- // handle strings differently so they have better performance
- if(dojo.isString(result) && (/^string:/.test(result))){
- results[i] = result.substring("string:".length);
- }else{
- results[i] = dojo.fromJson(result);
- }
- }
- }
-
- return results;
- },
-
- removeMultiple: function(keys, namespace){
- namespace = namespace||this.DEFAULT_NAMESPACE;
-
- dojox.sql.open();
- dojox.sql.db.execute("BEGIN TRANSACTION");
- var _stmt = "DELETE FROM " + this.TABLE_NAME + " WHERE namespace = ? AND key = ?";
-
- for(var i=0;i<keys.length;i++){
- dojox.sql.db.execute( _stmt,
- [namespace, keys[i]]);
- }
- dojox.sql.db.execute("COMMIT TRANSACTION");
- dojox.sql.close();
- },
-
- isPermanent: function(){ return true; },
-
- getMaximumSize: function(){ return this.SIZE_NO_LIMIT; },
-
- hasSettingsUI: function(){ return false; },
-
- showSettingsUI: function(){
- throw new Error(this.declaredClass
- + " does not support a storage settings user-interface");
- },
-
- hideSettingsUI: function(){
- throw new Error(this.declaredClass
- + " does not support a storage settings user-interface");
- }
- });
-
- // register the existence of our storage providers
- dojox.storage.manager.register("dojox.storage.GearsStorageProvider",
- new dojox.storage.GearsStorageProvider());
- })();
-}
-
-}