root / trunk / web / dojo / dojox / storage / AirFileStorageProvider.js
History | View | Annotate | Download (4.63 KB)
1 |
/*
|
---|---|
2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
4 |
see: http://dojotoolkit.org/license for details
|
5 |
*/
|
6 |
|
7 |
|
8 |
if(!dojo._hasResource["dojox.storage.AirFileStorageProvider"]){ |
9 |
dojo._hasResource["dojox.storage.AirFileStorageProvider"]=true; |
10 |
dojo.provide("dojox.storage.AirFileStorageProvider");
|
11 |
dojo.require("dojox.storage.manager");
|
12 |
dojo.require("dojox.storage.Provider");
|
13 |
if(dojo.isAIR){
|
14 |
(function(){
|
15 |
if(!_1){
|
16 |
var _1={};
|
17 |
} |
18 |
_1.File=window.runtime.flash.filesystem.File; |
19 |
_1.FileStream=window.runtime.flash.filesystem.FileStream; |
20 |
_1.FileMode=window.runtime.flash.filesystem.FileMode; |
21 |
dojo.declare("dojox.storage.AirFileStorageProvider",[dojox.storage.Provider],{initialized:false,_storagePath:"__DOJO_STORAGE/",initialize:function(){ |
22 |
this.initialized=false; |
23 |
try{
|
24 |
var _2=_1.File.applicationStorageDirectory.resolvePath(this._storagePath); |
25 |
if(!_2.exists){
|
26 |
_2.createDirectory(); |
27 |
} |
28 |
this.initialized=true; |
29 |
} |
30 |
catch(e){
|
31 |
} |
32 |
dojox.storage.manager.loaded(); |
33 |
},isAvailable:function(){ |
34 |
return true; |
35 |
},put:function(_3,_4,_5,_6){ |
36 |
if(this.isValidKey(_3)==false){ |
37 |
throw new Error("Invalid key given: "+_3); |
38 |
} |
39 |
_6=_6||this.DEFAULT_NAMESPACE;
|
40 |
if(this.isValidKey(_6)==false){ |
41 |
throw new Error("Invalid namespace given: "+_6); |
42 |
} |
43 |
try{
|
44 |
this.remove(_3,_6);
|
45 |
var _7=_1.File.applicationStorageDirectory.resolvePath(this._storagePath+_6); |
46 |
if(!_7.exists){
|
47 |
_7.createDirectory(); |
48 |
} |
49 |
var _8=_7.resolvePath(_3);
|
50 |
var _9=new _1.FileStream(); |
51 |
_9.open(_8,_1.FileMode.WRITE); |
52 |
_9.writeObject(_4); |
53 |
_9.close(); |
54 |
} |
55 |
catch(e){
|
56 |
_5(this.FAILED,_3,e.toString(),_6);
|
57 |
return;
|
58 |
} |
59 |
if(_5){
|
60 |
_5(this.SUCCESS,_3,null,_6); |
61 |
} |
62 |
},get:function(_a,_b){ |
63 |
if(this.isValidKey(_a)==false){ |
64 |
throw new Error("Invalid key given: "+_a); |
65 |
} |
66 |
_b=_b||this.DEFAULT_NAMESPACE;
|
67 |
var _c=null; |
68 |
var _d=_1.File.applicationStorageDirectory.resolvePath(this._storagePath+_b+"/"+_a); |
69 |
if(_d.exists&&!_d.isDirectory){
|
70 |
var _e=new _1.FileStream(); |
71 |
_e.open(_d,_1.FileMode.READ); |
72 |
_c=_e.readObject(); |
73 |
_e.close(); |
74 |
} |
75 |
return _c;
|
76 |
},getNamespaces:function(){ |
77 |
var _f=[this.DEFAULT_NAMESPACE]; |
78 |
var dir=_1.File.applicationStorageDirectory.resolvePath(this._storagePath); |
79 |
var _10=dir.getDirectoryListing(),i;
|
80 |
for(i=0;i<_10.length;i++){ |
81 |
if(_10[i].isDirectory&&_10[i].name!=this.DEFAULT_NAMESPACE){ |
82 |
_f.push(_10[i].name); |
83 |
} |
84 |
} |
85 |
return _f;
|
86 |
},getKeys:function(_11){ |
87 |
_11=_11||this.DEFAULT_NAMESPACE;
|
88 |
if(this.isValidKey(_11)==false){ |
89 |
throw new Error("Invalid namespace given: "+_11); |
90 |
} |
91 |
var _12=[];
|
92 |
var dir=_1.File.applicationStorageDirectory.resolvePath(this._storagePath+_11); |
93 |
if(dir.exists&&dir.isDirectory){
|
94 |
var _13=dir.getDirectoryListing(),i;
|
95 |
for(i=0;i<_13.length;i++){ |
96 |
_12.push(_13[i].name); |
97 |
} |
98 |
} |
99 |
return _12;
|
100 |
},clear:function(_14){ |
101 |
if(this.isValidKey(_14)==false){ |
102 |
throw new Error("Invalid namespace given: "+_14); |
103 |
} |
104 |
var dir=_1.File.applicationStorageDirectory.resolvePath(this._storagePath+_14); |
105 |
if(dir.exists&&dir.isDirectory){
|
106 |
dir.deleteDirectory(true);
|
107 |
} |
108 |
},remove:function(key,_15){ |
109 |
_15=_15||this.DEFAULT_NAMESPACE;
|
110 |
var _16=_1.File.applicationStorageDirectory.resolvePath(this._storagePath+_15+"/"+key); |
111 |
if(_16.exists&&!_16.isDirectory){
|
112 |
_16.deleteFile(); |
113 |
} |
114 |
},putMultiple:function(_17,_18,_19,_1a){ |
115 |
if(this.isValidKeyArray(_17)===false||!_18 instanceof Array||_17.length!=_18.length){ |
116 |
throw new Error("Invalid arguments: keys = ["+_17+"], values = ["+_18+"]"); |
117 |
} |
118 |
if(_1a==null||typeof _1a=="undefined"){ |
119 |
_1a=this.DEFAULT_NAMESPACE;
|
120 |
} |
121 |
if(this.isValidKey(_1a)==false){ |
122 |
throw new Error("Invalid namespace given: "+_1a); |
123 |
} |
124 |
this._statusHandler=_19;
|
125 |
try{
|
126 |
for(var i=0;i<_17.length;i++){ |
127 |
this.put(_17[i],_18[i],null,_1a); |
128 |
} |
129 |
} |
130 |
catch(e){
|
131 |
if(_19){
|
132 |
_19(this.FAILED,_17,e.toString(),_1a);
|
133 |
} |
134 |
return;
|
135 |
} |
136 |
if(_19){
|
137 |
_19(this.SUCCESS,_17,null,_1a); |
138 |
} |
139 |
},getMultiple:function(_1b,_1c){ |
140 |
if(this.isValidKeyArray(_1b)===false){ |
141 |
throw new Error("Invalid key array given: "+_1b); |
142 |
} |
143 |
if(_1c==null||typeof _1c=="undefined"){ |
144 |
_1c=this.DEFAULT_NAMESPACE;
|
145 |
} |
146 |
if(this.isValidKey(_1c)==false){ |
147 |
throw new Error("Invalid namespace given: "+_1c); |
148 |
} |
149 |
var _1d=[];
|
150 |
for(var i=0;i<_1b.length;i++){ |
151 |
_1d[i]=this.get(_1b[i],_1c);
|
152 |
} |
153 |
return _1d;
|
154 |
},removeMultiple:function(_1e,_1f){ |
155 |
_1f=_1f||this.DEFAULT_NAMESPACE;
|
156 |
for(var i=0;i<_1e.length;i++){ |
157 |
this.remove(_1e[i],_1f);
|
158 |
} |
159 |
},isPermanent:function(){ |
160 |
return true; |
161 |
},getMaximumSize:function(){ |
162 |
return this.SIZE_NO_LIMIT; |
163 |
},hasSettingsUI:function(){ |
164 |
return false; |
165 |
},showSettingsUI:function(){ |
166 |
throw new Error(this.declaredClass+" does not support a storage settings user-interface"); |
167 |
},hideSettingsUI:function(){ |
168 |
throw new Error(this.declaredClass+" does not support a storage settings user-interface"); |
169 |
}}); |
170 |
dojox.storage.manager.register("dojox.storage.AirFileStorageProvider",new dojox.storage.AirFileStorageProvider()); |
171 |
dojox.storage.manager.initialize(); |
172 |
})(); |
173 |
} |
174 |
} |