Updated Branches: refs/heads/dev 885d8a01a -> 93c652e9c
[CB-4764] Move DirectoryManager.java into file plugin Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/commit/93c652e9 Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/tree/93c652e9 Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/diff/93c652e9 Branch: refs/heads/dev Commit: 93c652e9c5e87fab50a946c3ccf96a8d2064e897 Parents: 885d8a0 Author: Andrew Grieve <[email protected]> Authored: Mon Sep 9 16:04:08 2013 -0400 Committer: Andrew Grieve <[email protected]> Committed: Mon Sep 9 16:04:08 2013 -0400 ---------------------------------------------------------------------- plugin.xml | 1 + src/android/DirectoryManager.java | 134 +++++++++++++++++++++++++++++++++ src/android/FileUtils.java | 1 - 3 files changed, 135 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/93c652e9/plugin.xml ---------------------------------------------------------------------- diff --git a/plugin.xml b/plugin.xml index 367e419..f2ab922 100644 --- a/plugin.xml +++ b/plugin.xml @@ -96,6 +96,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" <source-file src="src/android/TypeMismatchException.java" target-dir="src/org/apache/cordova/file" /> <source-file src="src/android/FileUtils.java" target-dir="src/org/apache/cordova/file" /> <source-file src="src/android/FileHelper.java" target-dir="src/org/apache/cordova/file" /> + <source-file src="src/android/DirectoryManager.java" target-dir="src/org/apache/cordova/file" /> </platform> <!-- ios --> http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/93c652e9/src/android/DirectoryManager.java ---------------------------------------------------------------------- diff --git a/src/android/DirectoryManager.java b/src/android/DirectoryManager.java new file mode 100644 index 0000000..b201811 --- /dev/null +++ b/src/android/DirectoryManager.java @@ -0,0 +1,134 @@ +/* + 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. +*/ +package org.apache.cordova.file; + +import java.io.File; + +import android.content.Context; +import android.os.Environment; +import android.os.StatFs; + +/** + * This class provides file directory utilities. + * All file operations are performed on the SD card. + * + * It is used by the FileUtils class. + */ +public class DirectoryManager { + + @SuppressWarnings("unused") + private static final String LOG_TAG = "DirectoryManager"; + + /** + * Determine if a file or directory exists. + * @param name The name of the file to check. + * @return T=exists, F=not found + */ + public static boolean testFileExists(String name) { + boolean status; + + // If SD card exists + if ((testSaveLocationExists()) && (!name.equals(""))) { + File path = Environment.getExternalStorageDirectory(); + File newPath = constructFilePaths(path.toString(), name); + status = newPath.exists(); + } + // If no SD card + else { + status = false; + } + return status; + } + + /** + * Get the free disk space + * + * @return Size in KB or -1 if not available + */ + public static long getFreeDiskSpace(boolean checkInternal) { + String status = Environment.getExternalStorageState(); + long freeSpace = 0; + + // If SD card exists + if (status.equals(Environment.MEDIA_MOUNTED)) { + freeSpace = freeSpaceCalculation(Environment.getExternalStorageDirectory().getPath()); + } + else if (checkInternal) { + freeSpace = freeSpaceCalculation("/"); + } + // If no SD card and we haven't been asked to check the internal directory then return -1 + else { + return -1; + } + + return freeSpace; + } + + /** + * Given a path return the number of free KB + * + * @param path to the file system + * @return free space in KB + */ + private static long freeSpaceCalculation(String path) { + StatFs stat = new StatFs(path); + long blockSize = stat.getBlockSize(); + long availableBlocks = stat.getAvailableBlocks(); + return availableBlocks * blockSize / 1024; + } + + /** + * Determine if SD card exists. + * + * @return T=exists, F=not found + */ + public static boolean testSaveLocationExists() { + String sDCardStatus = Environment.getExternalStorageState(); + boolean status; + + // If SD card is mounted + if (sDCardStatus.equals(Environment.MEDIA_MOUNTED)) { + status = true; + } + + // If no SD card + else { + status = false; + } + return status; + } + + /** + * Create a new file object from two file paths. + * + * @param file1 Base file path + * @param file2 Remaining file path + * @return File object + */ + private static File constructFilePaths (String file1, String file2) { + File newPath; + if (file2.startsWith(file1)) { + newPath = new File(file2); + } + else { + newPath = new File(file1 + "/" + file2); + } + return newPath; + } +} http://git-wip-us.apache.org/repos/asf/cordova-plugin-file/blob/93c652e9/src/android/FileUtils.java ---------------------------------------------------------------------- diff --git a/src/android/FileUtils.java b/src/android/FileUtils.java index 6f3bc89..405eb83 100755 --- a/src/android/FileUtils.java +++ b/src/android/FileUtils.java @@ -28,7 +28,6 @@ import android.util.Log; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.PluginResult; -import org.apache.cordova.DirectoryManager; import org.json.JSONArray; import org.json.JSONException;
