94 lines
3.3 KiB
JavaScript
94 lines
3.3 KiB
JavaScript
|
/*
|
||
|
*
|
||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||
|
* or more contributor license agreements. See the NOTICE file
|
||
|
* distributed with this work for additional information
|
||
|
* regarding copyright ownership. The ASF licenses this file
|
||
|
* to you under the Apache License, Version 2.0 (the
|
||
|
* "License"); you may not use this file except in compliance
|
||
|
* with the License. You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing,
|
||
|
* software distributed under the License is distributed on an
|
||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||
|
* KIND, either express or implied. See the License for the
|
||
|
* specific language governing permissions and limitations
|
||
|
* under the License.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
var utils = require('cordova/utils'),
|
||
|
exec = require('cordova/exec'),
|
||
|
Entry = require('./Entry'),
|
||
|
FileWriter = require('./FileWriter'),
|
||
|
File = require('./File'),
|
||
|
FileError = require('./FileError');
|
||
|
|
||
|
/**
|
||
|
* An interface representing a file on the file system.
|
||
|
*
|
||
|
* {boolean} isFile always true (readonly)
|
||
|
* {boolean} isDirectory always false (readonly)
|
||
|
* {DOMString} name of the file, excluding the path leading to it (readonly)
|
||
|
* {DOMString} fullPath the absolute full path to the file (readonly)
|
||
|
* {FileSystem} filesystem on which the file resides (readonly)
|
||
|
*/
|
||
|
var FileEntry = function(name, fullPath, fileSystem, nativeURL) {
|
||
|
// remove trailing slash if it is present
|
||
|
if (fullPath && /\/$/.test(fullPath)) {
|
||
|
fullPath = fullPath.substring(0, fullPath.length - 1);
|
||
|
}
|
||
|
if (nativeURL && /\/$/.test(nativeURL)) {
|
||
|
nativeURL = nativeURL.substring(0, nativeURL.length - 1);
|
||
|
}
|
||
|
|
||
|
FileEntry.__super__.constructor.apply(this, [true, false, name, fullPath, fileSystem, nativeURL]);
|
||
|
};
|
||
|
|
||
|
utils.extend(FileEntry, Entry);
|
||
|
|
||
|
/**
|
||
|
* Creates a new FileWriter associated with the file that this FileEntry represents.
|
||
|
*
|
||
|
* @param {Function} successCallback is called with the new FileWriter
|
||
|
* @param {Function} errorCallback is called with a FileError
|
||
|
*/
|
||
|
FileEntry.prototype.createWriter = function(successCallback, errorCallback) {
|
||
|
this.file(function(filePointer) {
|
||
|
var writer = new FileWriter(filePointer);
|
||
|
|
||
|
if (writer.localURL === null || writer.localURL === "") {
|
||
|
if (errorCallback) {
|
||
|
errorCallback(new FileError(FileError.INVALID_STATE_ERR));
|
||
|
}
|
||
|
} else {
|
||
|
if (successCallback) {
|
||
|
successCallback(writer);
|
||
|
}
|
||
|
}
|
||
|
}, errorCallback);
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Returns a File that represents the current state of the file that this FileEntry represents.
|
||
|
*
|
||
|
* @param {Function} successCallback is called with the new File object
|
||
|
* @param {Function} errorCallback is called with a FileError
|
||
|
*/
|
||
|
FileEntry.prototype.file = function(successCallback, errorCallback) {
|
||
|
var localURL = this.toInternalURL();
|
||
|
var win = successCallback && function(f) {
|
||
|
var file = new File(f.name, localURL, f.type, f.lastModifiedDate, f.size);
|
||
|
successCallback(file);
|
||
|
};
|
||
|
var fail = errorCallback && function(code) {
|
||
|
errorCallback(new FileError(code));
|
||
|
};
|
||
|
exec(win, fail, "File", "getFileMetadata", [localURL]);
|
||
|
};
|
||
|
|
||
|
|
||
|
module.exports = FileEntry;
|