Tizen 2.0 Release
[samples/web/SelfCamera.git] / js / fileSave.js
1 /*
2  *      Copyright 2012  Samsung Electronics Co., Ltd
3  *
4  *      Licensed under the Flora License, Version 1.0 (the "License");
5  *      you may not use this file except in compliance with the License.
6  *      You may obtain a copy of the License at
7  *
8  *              http://www.tizenopensource.org/license
9  *
10  *      Unless required by applicable law or agreed to in writing, software
11  *      distributed under the License is distributed on an "AS IS" BASIS,
12  *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *      See the License for the specific language governing permissions and
14  *      limitations under the License.
15  */
16
17 function createFile(directoryHandle, fileName, fileContent, params) {
18         if (!params) {
19                 params = {};
20         }
21
22         console.log('createFile:begin');
23
24         function onError(e) {
25                 console.log("Error " + e.message);
26         }
27
28         var fileToWrite = null;
29         try {
30                 fileToWrite = directoryHandle.createFile(fileName);
31         } catch (e) {
32                 onError(e);
33         }
34
35         if (fileToWrite != null) {
36                 fileToWrite.openStream("w", function(fs) {
37                         if (params.base64) {
38                                 fs.writeBase64(fileContent);
39                         } else {
40                                 fs.write(fileContent);
41                         }
42                         fs.close();
43                         if (params.onSuccess)
44                                 params.onSuccess();
45                 }, onError, "UTF-8");
46         }
47 }
48
49 function openDir(directoryPath, onSuccess, onError) {
50         console.log('openDir');
51         if (!onSuccess)
52                 onSuccess = function(dir) {}; // virtual;
53         if (!onError)
54                 onError = function(e) {
55                         console.log('openDir error: ' + e.message);
56                 };
57
58         console.log(directoryPath);
59         try {
60                 tizen.filesystem.resolve(directoryPath, onSuccess, onError, "rw");
61         } catch (e) {
62                 console.log('try:' + e.message);
63         }
64 }
65
66 function saveDataToFile(fileFullPath, data, params) {
67         var tabFileName = fileFullPath.match(/([^\/]+$)/g);
68         if (tabFileName.length == 0) {
69                 return false;
70         }
71
72         var fileName = tabFileName[0];
73         var mask = new RegExp('/' + fileName + '$', 'g');
74         var dirName = fileFullPath.replace(mask, '');
75
76         if (dirName == '') {
77                 dirName = '/';
78         }
79
80         function onOpenDirSuccess(dir) {
81                 createFile(dir, fileName, data, params);
82         }
83
84         openDir(dirName, onOpenDirSuccess);
85 }
86
87 function deleteFile(fileFullPath, onSuccess) {
88
89         var tabFileName = fileFullPath.match(/([^\/]+$)/g);
90         if (tabFileName.length == 0) {
91                 return false;
92         }
93
94         var fileName = tabFileName[0];
95         var mask = new RegExp('/' + fileName + '$', 'g');
96         var dirName = fileFullPath.replace(mask, '');
97
98         if (dirName == '') {
99                 dirName = '/';
100         }
101
102         function onDeleteSuccess(e) {
103                 console.log('delete success');
104                 onSuccess();
105         }
106
107         function onDeleteError(e) {
108                 console.log('onDeleteError: ' + e.message);
109         }
110
111         function onOpenDirSuccess(dir) {
112                 onListFiles = function(files) {
113                         if (files.length > 0) {
114                                 // file exists;
115                                 if (files[0].isDirectory) {
116                                         try {
117                                                 console.log('try delete directory');
118                                                 dir.deleteDirectory(fileName, false);
119                                         } catch (e) {
120                                                 console.log('delete driectory: ' + e.message);
121                                         }
122                                 } else {
123                                         try {
124                                                 console.log('try delete File');
125                                                 dir.deleteFile(files[0].fullPath, onDeleteSuccess, onDeleteError);
126                                         } catch (e2) {
127                                                 console.log('delete file: ' + e2.message);
128                                         }
129                                 }
130                         } else {
131                                 onDeleteSuccess();
132                         }
133                 };
134                 // check file exists;
135                 dir.listFiles(onListFiles, function(e) {
136                         console.log(e);
137                 }, {
138                         name: fileName
139                 });
140         }
141         openDir(dirName, onOpenDirSuccess, function(e) {
142                 console.log('openDir error:' + e.message);
143         });
144 }