Subversion Repositories Applications.papyrus

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
        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.storage");
dojo.require("dojo.lang.*");
dojo.require("dojo.event.*");
dojo.storage = new function () {
};
dojo.declare("dojo.storage", null, {SUCCESS:"success", FAILED:"failed", PENDING:"pending", SIZE_NOT_AVAILABLE:"Size not available", SIZE_NO_LIMIT:"No size limit", namespace:"default", onHideSettingsUI:null, initialize:function () {
        dojo.unimplemented("dojo.storage.initialize");
}, isAvailable:function () {
        dojo.unimplemented("dojo.storage.isAvailable");
}, put:function (key, value, resultsHandler) {
        dojo.unimplemented("dojo.storage.put");
}, get:function (key) {
        dojo.unimplemented("dojo.storage.get");
}, hasKey:function (key) {
        return (this.get(key) != null);
}, getKeys:function () {
        dojo.unimplemented("dojo.storage.getKeys");
}, clear:function () {
        dojo.unimplemented("dojo.storage.clear");
}, remove:function (key) {
        dojo.unimplemented("dojo.storage.remove");
}, isPermanent:function () {
        dojo.unimplemented("dojo.storage.isPermanent");
}, getMaximumSize:function () {
        dojo.unimplemented("dojo.storage.getMaximumSize");
}, hasSettingsUI:function () {
        return false;
}, showSettingsUI:function () {
        dojo.unimplemented("dojo.storage.showSettingsUI");
}, hideSettingsUI:function () {
        dojo.unimplemented("dojo.storage.hideSettingsUI");
}, getType:function () {
        dojo.unimplemented("dojo.storage.getType");
}, isValidKey:function (keyName) {
        if ((keyName == null) || (typeof keyName == "undefined")) {
                return false;
        }
        return /^[0-9A-Za-z_]*$/.test(keyName);
}});
dojo.storage.manager = new function () {
        this.currentProvider = null;
        this.available = false;
        this._initialized = false;
        this._providers = [];
        this.namespace = "default";
        this.initialize = function () {
                this.autodetect();
        };
        this.register = function (name, instance) {
                this._providers[this._providers.length] = instance;
                this._providers[name] = instance;
        };
        this.setProvider = function (storageClass) {
        };
        this.autodetect = function () {
                if (this._initialized == true) {
                        return;
                }
                var providerToUse = null;
                for (var i = 0; i < this._providers.length; i++) {
                        providerToUse = this._providers[i];
                        if (dojo.lang.isUndefined(djConfig["forceStorageProvider"]) == false && providerToUse.getType() == djConfig["forceStorageProvider"]) {
                                providerToUse.isAvailable();
                                break;
                        } else {
                                if (dojo.lang.isUndefined(djConfig["forceStorageProvider"]) == true && providerToUse.isAvailable()) {
                                        break;
                                }
                        }
                }
                if (providerToUse == null) {
                        this._initialized = true;
                        this.available = false;
                        this.currentProvider = null;
                        dojo.raise("No storage provider found for this platform");
                }
                this.currentProvider = providerToUse;
                for (var i in providerToUse) {
                        dojo.storage[i] = providerToUse[i];
                }
                dojo.storage.manager = this;
                dojo.storage.initialize();
                this._initialized = true;
                this.available = true;
        };
        this.isAvailable = function () {
                return this.available;
        };
        this.isInitialized = function () {
                if (this.currentProvider.getType() == "dojo.storage.browser.FlashStorageProvider" && dojo.flash.ready == false) {
                        return false;
                } else {
                        return this._initialized;
                }
        };
        this.supportsProvider = function (storageClass) {
                try {
                        var provider = eval("new " + storageClass + "()");
                        var results = provider.isAvailable();
                        if (results == null || typeof results == "undefined") {
                                return false;
                        }
                        return results;
                }
                catch (exception) {
                        return false;
                }
        };
        this.getProvider = function () {
                return this.currentProvider;
        };
        this.loaded = function () {
        };
};