You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ti...@apache.org on 2012/05/18 00:37:08 UTC
[10/19] js commit: got truncate working
got truncate working
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/commit/a338d4b4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/a338d4b4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/a338d4b4
Branch: refs/heads/playbookFile
Commit: a338d4b4fc5081bb60cf12e2270f9e2aadb950d5
Parents: 6c34ea6
Author: Tim Kim <ti...@adobe.com>
Authored: Wed May 9 17:18:59 2012 -0700
Committer: Tim Kim <ti...@adobe.com>
Committed: Wed May 9 17:18:59 2012 -0700
----------------------------------------------------------------------
lib/playbook/plugin/playbook/FileWriter.js | 140 +++++++----------------
1 files changed, 42 insertions(+), 98 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/a338d4b4/lib/playbook/plugin/playbook/FileWriter.js
----------------------------------------------------------------------
diff --git a/lib/playbook/plugin/playbook/FileWriter.js b/lib/playbook/plugin/playbook/FileWriter.js
index f2dfced..159b0df 100644
--- a/lib/playbook/plugin/playbook/FileWriter.js
+++ b/lib/playbook/plugin/playbook/FileWriter.js
@@ -84,10 +84,7 @@ FileWriter.prototype.write = function(text) {
}
// Write file
- // TODO: Need to think about how to make this asynch
- // can't append to file - must open a temp file, write to temp, then delete current file
- // and save again - lame
- // also have to investigate how bb blobs work in order to set proper seek positions :S
+ // TODO: Need to think about how to make this asynch and add try/catch
if (typeof me.onwrite === "function") {
me.onwrite(new ProgressEvent("write", {"target":me}));
@@ -105,9 +102,7 @@ FileWriter.prototype.write = function(text) {
if(blob){
oldText = blackberry.utils.blobToString(blob);
if(oldText.length>0){
- console.log('old text: ' + oldText);
newText = oldText.substr(0,me.position) + text + oldText.substr(me.position);
- console.log('newText: '+ newText);
}
}
@@ -143,59 +138,6 @@ FileWriter.prototype.write = function(text) {
if (typeof me.onwriteend === "function") {
me.onwriteend(new ProgressEvent("writeend", {"target":me}));
}
-
- /*
- exec(
- // Success callback
- function(r) {
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileWriter.DONE) {
- return;
- }
-
- // position always increases by bytes written because file would be extended
- me.position += r;
- // The length of the file is now where we are done writing.
-
- me.length = me.position;
-
- // DONE state
- me.readyState = FileWriter.DONE;
-
- // If onwrite callback
- if (typeof me.onwrite === "function") {
- me.onwrite(new ProgressEvent("write", {"target":me}));
- }
-
- // If onwriteend callback
- if (typeof me.onwriteend === "function") {
- me.onwriteend(new ProgressEvent("writeend", {"target":me}));
- }
- },
- // Error callback
- function(e) {
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileWriter.DONE) {
- return;
- }
-
- // DONE state
- me.readyState = FileWriter.DONE;
-
- // Save error
- me.error = new FileError(e);
-
- // If onerror callback
- if (typeof me.onerror === "function") {
- me.onerror(new ProgressEvent("error", {"target":me}));
- }
-
- // If onwriteend callback
- if (typeof me.onwriteend === "function") {
- me.onwriteend(new ProgressEvent("writeend", {"target":me}));
- }
- }, "File", "write", [this.fileName, text, this.position]);
- */
};
/**
@@ -255,56 +197,58 @@ FileWriter.prototype.truncate = function(size) {
}
// Write file
- /*
- exec(
- // Success callback
- function(r) {
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileWriter.DONE) {
- return;
- }
+ // TODO: Need to think about how to make this asynch and add try/catch
- // DONE state
- me.readyState = FileWriter.DONE;
+ if (typeof me.onwrite === "function") {
+ me.onwrite(new ProgressEvent("write", {"target":me}));
+ }
- // Update the length of the file
- me.length = r;
- me.position = Math.min(me.position, r);
+ if(blackberry.io.file.exists(this.fileName)){
- // If onwrite callback
- if (typeof me.onwrite === "function") {
- me.onwrite(new ProgressEvent("write", {"target":me}));
- }
+ var oldText = '';
+ var newText = '';
- // If onwriteend callback
- if (typeof me.onwriteend === "function") {
- me.onwriteend(new ProgressEvent("writeend", {"target":me}));
+ var getFileContents = function(path,blob){
+
+ if(blob){
+ oldText = blackberry.utils.blobToString(blob);
+ if(oldText.length>0){
+ newText = oldText.slice(0,size);
+ }else{
+ // TODO: throw error
+ }
}
- },
- // Error callback
- function(e) {
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileWriter.DONE) {
- return;
+
+ var tempFile = me.fileName+'temp';
+ if(blackberry.io.file.exists(tempFile)){
+ blackberry.io.file.deleteFile(tempFile);
}
- // DONE state
- me.readyState = FileWriter.DONE;
+ var newTextBlob = blackberry.utils.stringToBlob(newText);
- // Save error
- me.error = new FileError(e);
+ // crete a temp file, delete file we are 'overwriting', then rename temp file
+ blackberry.io.file.saveFile(tempFile, newTextBlob);
+ blackberry.io.file.deleteFile(me.fileName);
+ blackberry.io.file.rename(tempFile, me.fileName.split('/').pop());
- // If onerror callback
- if (typeof me.onerror === "function") {
- me.onerror(new ProgressEvent("error", {"target":me}));
- }
+ me.position = newText.length;
+ me.length = me.position;
+ }
+
+ // setting asynch to off - worry about making this all callbacks later
+ blackberry.io.file.readFile(this.fileName, getFileContents, false);
+
+ }else{
+
+ // TODO: file doesn't exist - throw error
- // If onwriteend callback
- if (typeof me.onwriteend === "function") {
+ }
+
+ me.readyState = FileWriter.DONE;
+
+ if (typeof me.onwriteend === "function") {
me.onwriteend(new ProgressEvent("writeend", {"target":me}));
- }
- }, "File", "truncate", [this.fileName, size]);
- */
+ }
};
module.exports = FileWriter;