blob: 4e5175b07c32881e0d07c0071f69e31851dc1806 [file] [log] [blame]
package org.apache.cordova.file;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.cordova.CordovaInterface;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.database.Cursor;
import android.provider.MediaStore;
public class ContentFilesystem implements Filesystem {
private CordovaInterface cordova;
public ContentFilesystem(CordovaInterface cordova) {
this.cordova = cordova;
}
@Override
@SuppressWarnings("deprecation")
public JSONObject getEntryForLocalURL(LocalFilesystemURL inputURL) throws IOException {
File fp = null;
Cursor cursor = this.cordova.getActivity().managedQuery(inputURL.URL, new String[] { MediaStore.Images.Media.DATA }, null, null, null);
// Note: MediaStore.Images/Audio/Video.Media.DATA is always "_data"
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
fp = new File(cursor.getString(column_index));
if (!fp.exists()) {
throw new FileNotFoundException();
}
if (!fp.canRead()) {
throw new IOException();
}
try {
JSONObject entry = new JSONObject();
entry.put("isFile", fp.isFile());
entry.put("isDirectory", fp.isDirectory());
entry.put("name", fp.getName());
entry.put("fullPath", "file://" + fp.getAbsolutePath());
// The file system can't be specified, as it would lead to an infinite loop.
entry.put("filesystem", FileUtils.APPLICATION);
return entry;
} catch (JSONException e) {
throw new IOException();
}
}
@Override
public JSONObject getFileForLocalURL(LocalFilesystemURL inputURL,
String fileName, JSONObject options, boolean directory) throws IOException {
throw new IOException("Cannot create content url");
}
@Override
public boolean removeFileAtLocalURL(LocalFilesystemURL inputURL)
throws NoModificationAllowedException {
throw new NoModificationAllowedException("Cannot remove content url");
}
@Override
public boolean recursiveRemoveFileAtLocalURL(LocalFilesystemURL inputURL)
throws NoModificationAllowedException {
throw new NoModificationAllowedException("Cannot remove content url");
}
@Override
public JSONArray readEntriesAtLocalURL(LocalFilesystemURL inputURL)
throws FileNotFoundException {
// TODO Auto-generated method stub
return null;
}
@Override
public JSONObject getFileMetadataForLocalURL(LocalFilesystemURL inputURL) throws FileNotFoundException {
// TODO Auto-generated method stub
return null;
}
@Override
public JSONObject getParentForLocalURL(LocalFilesystemURL inputURL)
throws IOException {
// TODO Auto-generated method stub
// Can probably use same impl as LFS
return null;
}
@Override
public JSONObject copyFileToURL(LocalFilesystemURL destURL, String newName,
Filesystem srcFs, LocalFilesystemURL srcURL, boolean move)
throws IOException, InvalidModificationException, JSONException,
NoModificationAllowedException, FileExistsException {
// TODO Auto-generated method stub
return null;
}
@Override
public void readFileAtURL(LocalFilesystemURL inputURL, int start, int end,
ReadFileCallback readFileCallback) throws IOException {
// TODO Auto-generated method stub
}
@Override
public long writeToFileAtURL(LocalFilesystemURL inputURL, String data,
int offset, boolean isBinary) throws NoModificationAllowedException {
throw new NoModificationAllowedException("Couldn't write to file given its content URI");
}
@Override
public long truncateFileAtURL(LocalFilesystemURL inputURL, long size)
throws NoModificationAllowedException {
throw new NoModificationAllowedException("Couldn't truncate file given its content URI");
}
@Override
public String filesystemPathForURL(LocalFilesystemURL url) {
return null;
}
}