a:33:{s:9:"#provides";s:34:"dojox.storage.AirDBStorageProvider";s:9:"#resource";s:31:"storage/AirDBStorageProvider.js";s:9:"#requires";a:2:{i:0;a:2:{i:0;s:6:"common";i:1;s:21:"dojox.storage.manager";}i:1;a:2:{i:0;s:6:"common";i:1;s:22:"dojox.storage.Provider";}}s:34:"dojox.storage.AirDBStorageProvider";a:4:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:22:"dojox.storage.Provider";}s:4:"call";a:1:{i:0;s:22:"dojox.storage.Provider";}}s:9:"classlike";b:1;s:7:"summary";s:0:"";}s:48:"dojox.storage.AirDBStorageProvider.DATABASE_FILE";a:2:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:7:"summary";s:0:"";}s:45:"dojox.storage.AirDBStorageProvider.TABLE_NAME";a:2:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:7:"summary";s:0:"";}s:46:"dojox.storage.AirDBStorageProvider.initialized";a:3:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:8:"instance";s:34:"dojox.storage.AirDBStorageProvider";s:7:"summary";s:0:"";}s:38:"dojox.storage.AirDBStorageProvider._db";a:4:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:8:"instance";s:34:"dojox.storage.AirDBStorageProvider";s:7:"private";b:1;s:7:"summary";s:0:"";}s:45:"dojox.storage.AirDBStorageProvider.initialize";a:4:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:6:"source";s:680:"				this.initialized = false;


				// need to initialize our storage database
				try{
					this._db = new air.SQLConnection();
					this._db.open(air.File.applicationStorageDirectory.resolvePath(this.DATABASE_FILE));

					
					this._sql("CREATE TABLE IF NOT EXISTS " + this.TABLE_NAME + "(namespace TEXT, key TEXT, value TEXT)");
					this._sql("CREATE UNIQUE INDEX IF NOT EXISTS namespace_key_index ON " + this.TABLE_NAME + " (namespace, key)");

					
					this.initialized = true;
				}catch(e){
					console.debug("dojox.storage.AirDBStorageProvider.initialize:", e);
				}

				
				// indicate that this storage provider is now loaded
				dojox.storage.manager.loaded();";s:7:"summary";s:0:"";}s:39:"dojox.storage.AirDBStorageProvider._sql";a:6:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:5:"query";a:1:{s:4:"type";s:0:"";}s:6:"params";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:253:"				var stmt = new air.SQLStatement();
				stmt.sqlConnection = this._db;
				stmt.text = query;
				if (params){
					for (var param in params){
						stmt.parameters[param] = params[param];
					}
				}
				stmt.execute();
				return stmt.getResult();";s:7:"private";b:1;s:7:"summary";s:0:"";}s:52:"dojox.storage.AirDBStorageProvider._beginTransaction";a:5:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:6:"source";s:21:"				this._db.begin();";s:7:"private";b:1;s:7:"summary";s:0:"";}s:53:"dojox.storage.AirDBStorageProvider._commitTransaction";a:5:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:6:"source";s:22:"				this._db.commit();";s:7:"private";b:1;s:7:"summary";s:0:"";}s:46:"dojox.storage.AirDBStorageProvider.isAvailable";a:4:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:6:"source";s:16:"				return true;";s:7:"summary";s:0:"";}s:38:"dojox.storage.AirDBStorageProvider.put";a:5:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:10:"parameters";a:4:{s:3:"key";a:1:{s:4:"type";s:0:"";}s:5:"value";a:1:{s:4:"type";s:0:"";}s:14:"resultsHandler";a:1:{s:4:"type";s:0:"";}s:9:"namespace";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:874:"				if(this.isValidKey(key) == false){
					throw new Error("Invalid key given: " + key);
				}
				namespace = namespace||this.DEFAULT_NAMESPACE;
				if(this.isValidKey(namespace) == false){
					throw new Error("Invalid namespace given: " + namespace);
				}

				
				// try to store the value
				try{
					this._sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = :namespace AND key = :key",
						{ ":namespace":namespace, ":key":key });
					this._sql("INSERT INTO " + this.TABLE_NAME + " VALUES (:namespace, :key, :value)",
						{ ":namespace":namespace, ":key":key, ":value":value });
				}catch(e){
					// indicate we failed
					console.debug("dojox.storage.AirDBStorageProvider.put:", e);
					resultsHandler(this.FAILED, key, e.toString());
					return;
				}

				
				if(resultsHandler){
					resultsHandler(this.SUCCESS, key, null, namespace);
				}";s:7:"summary";s:0:"";}s:38:"dojox.storage.AirDBStorageProvider.get";a:5:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:3:"key";a:1:{s:4:"type";s:0:"";}s:9:"namespace";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:426:"				if(this.isValidKey(key) == false){
					throw new Error("Invalid key given: " + key);
				}
				namespace = namespace||this.DEFAULT_NAMESPACE;

				
				var results = this._sql("SELECT * FROM " + this.TABLE_NAME + " WHERE namespace = :namespace AND key = :key",
					{ ":namespace":namespace, ":key":key });

				
				if(results.data && results.data.length){
					return results.data[0].value;
				}

				
				return null;";s:7:"summary";s:0:"";}s:48:"dojox.storage.AirDBStorageProvider.getNamespaces";a:4:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:6:"source";s:352:"				var results = [ this.DEFAULT_NAMESPACE ];				
				var rs = this._sql("SELECT namespace FROM " + this.TABLE_NAME + " DESC GROUP BY namespace");
				if (rs.data){
					for(var i = 0; i < rs.data.length; i++){
						if(rs.data[i].namespace != this.DEFAULT_NAMESPACE){
							results.push(rs.data[i].namespace);
						}
					}
				}
				return results;";s:7:"summary";s:0:"";}s:42:"dojox.storage.AirDBStorageProvider.getKeys";a:5:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:9:"namespace";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:449:"				namespace = namespace||this.DEFAULT_NAMESPACE;
				if(this.isValidKey(namespace) == false){
					throw new Error("Invalid namespace given: " + namespace);
				}

				
				var results = [];
				var rs = this._sql("SELECT key FROM " + this.TABLE_NAME + " WHERE namespace = :namespace", { ":namespace":namespace });
				if (rs.data){
					for(var i = 0; i < rs.data.length; i++){
						results.push(rs.data[i].key);
					}
				}
				return results;";s:7:"summary";s:0:"";}s:40:"dojox.storage.AirDBStorageProvider.clear";a:5:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:9:"namespace";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:224:"				if(this.isValidKey(namespace) == false){
					throw new Error("Invalid namespace given: " + namespace);
				}
				this._sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = :namespace", { ":namespace":namespace });";s:7:"summary";s:0:"";}s:41:"dojox.storage.AirDBStorageProvider.remove";a:5:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:3:"key";a:1:{s:4:"type";s:0:"";}s:9:"namespace";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:193:"				namespace = namespace||this.DEFAULT_NAMESPACE;
				this._sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = :namespace AND key = :key",
					{ ":namespace":namespace, ":key":key });";s:7:"summary";s:0:"";}s:46:"dojox.storage.AirDBStorageProvider.putMultiple";a:5:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:10:"parameters";a:4:{s:4:"keys";a:1:{s:4:"type";s:0:"";}s:6:"values";a:1:{s:4:"type";s:0:"";}s:14:"resultsHandler";a:1:{s:4:"type";s:0:"";}s:9:"namespace";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:1278:" 				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 = this.DEFAULT_NAMESPACE;		
				}

	
				if(this.isValidKey(namespace) == false){
					throw new Error("Invalid namespace given: " + namespace);
				}

	
				this._statusHandler = resultsHandler;


				// try to store the value	
				try{
					this._beginTransaction();
					for(var i=0;i<keys.length;i++) {
						this._sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = :namespace AND key = :key",
							{ ":namespace":namespace, ":key":keys[i] });
						this._sql("INSERT INTO " + this.TABLE_NAME + " VALUES (:namespace, :key, :value)",
						 	{ ":namespace":namespace, ":key":keys[i], ":value":values[i] });
					}
					this._commitTransaction();
				}catch(e){
					// indicate we failed
					console.debug("dojox.storage.AirDBStorageProvider.putMultiple:", e);
					if(resultsHandler){
						resultsHandler(this.FAILED, keys, e.toString(), namespace);
					}
					return;
				}

				
				if(resultsHandler){
					resultsHandler(this.SUCCESS, keys, null);
				}";s:7:"summary";s:0:"";}s:46:"dojox.storage.AirDBStorageProvider.getMultiple";a:5:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:4:"keys";a:1:{s:4:"type";s:0:"";}s:9:"namespace";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:687:"				if(this.isValidKeyArray(keys) === false){
					throw new Error("Invalid key array given: " + keys);
				}

				
				if(namespace == null || typeof namespace == "undefined"){
					namespace = this.DEFAULT_NAMESPACE;		
				}

				
				if(this.isValidKey(namespace) == false){
					throw new Error("Invalid namespace given: " + namespace);
				}

		
				var results = [];
				for(var i=0;i<keys.length;i++){
					var result = this._sql("SELECT * FROM " + this.TABLE_NAME + " WHERE namespace = :namespace AND key = :key",
						{ ":namespace":namespace, ":key":keys[i] });
					results[i] = result.data && result.data.length ? result.data[0].value : null;
				}

				
				return results;";s:7:"summary";s:0:"";}s:49:"dojox.storage.AirDBStorageProvider.removeMultiple";a:5:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:4:"keys";a:1:{s:4:"type";s:0:"";}s:9:"namespace";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:320:"				namespace = namespace||this.DEFAULT_NAMESPACE;

				
				this._beginTransaction();
				for(var i=0;i<keys.length;i++){
					this._sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = namespace = :namespace AND key = :key",
						{ ":namespace":namespace, ":key":keys[i] });
				}
				this._commitTransaction();";s:7:"summary";s:0:"";}s:46:"dojox.storage.AirDBStorageProvider.isPermanent";a:4:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:6:"source";s:41:"			isPermanent: function(){ return true; ";s:7:"summary";s:0:"";}s:49:"dojox.storage.AirDBStorageProvider.getMaximumSize";a:4:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:6:"source";s:58:"			getMaximumSize: function(){ return this.SIZE_NO_LIMIT; ";s:7:"summary";s:0:"";}s:48:"dojox.storage.AirDBStorageProvider.hasSettingsUI";a:4:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:6:"source";s:44:"			hasSettingsUI: function(){ return false; ";s:7:"summary";s:0:"";}s:49:"dojox.storage.AirDBStorageProvider.showSettingsUI";a:4:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:6:"source";s:96:"				throw new Error(this.declaredClass + " does not support a storage settings user-interface");";s:7:"summary";s:0:"";}s:49:"dojox.storage.AirDBStorageProvider.hideSettingsUI";a:4:{s:9:"prototype";s:34:"dojox.storage.AirDBStorageProvider";s:4:"type";s:8:"Function";s:6:"source";s:96:"				throw new Error(this.declaredClass + " does not support a storage settings user-interface");";s:7:"summary";s:0:"";}s:49:"dojox.storage.AirDBStorageProvider._statusHandler";a:3:{s:8:"instance";s:34:"dojox.storage.AirDBStorageProvider";s:7:"private";b:1;s:7:"summary";s:0:"";}s:8:"air.File";a:1:{s:7:"summary";s:0:"";}s:17:"air.SQLConnection";a:1:{s:7:"summary";s:0:"";}s:16:"air.SQLStatement";a:1:{s:7:"summary";s:0:"";}s:13:"dojox.storage";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:5:"dojox";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}