X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/65c7d5d5baf3455d02b4a7d9352fcd42d939c669..c39e851f5eada08c93d3a57d41054ea112b4bfcf:/src/com/owncloud/android/datamodel/FileDataStorageManager.java diff --git a/src/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/com/owncloud/android/datamodel/FileDataStorageManager.java index cc4fa95a..ec0a7efc 100644 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -422,10 +422,11 @@ public class FileDataStorageManager { // } - public void removeFile(OCFile file, boolean removeDBData, boolean removeLocalCopy) { + public boolean removeFile(OCFile file, boolean removeDBData, boolean removeLocalCopy) { + boolean success = true; if (file != null) { if (file.isFolder()) { - removeFolder(file, removeDBData, removeLocalCopy); + success = removeFolder(file, removeDBData, removeLocalCopy); } else { if (removeDBData) { @@ -433,19 +434,20 @@ public class FileDataStorageManager { Uri file_uri = ContentUris.withAppendedId(ProviderTableMeta.CONTENT_URI_FILE, file.getFileId()); String where = ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?" + " AND " + ProviderTableMeta.FILE_PATH + "=?"; String [] whereArgs = new String[]{mAccount.name, file.getRemotePath()}; + int deleted = 0; if (getContentProviderClient() != null) { try { - getContentProviderClient().delete(file_uri, where, whereArgs); + deleted = getContentProviderClient().delete(file_uri, where, whereArgs); } catch (RemoteException e) { e.printStackTrace(); } } else { - getContentResolver().delete(file_uri, where, whereArgs); + deleted = getContentResolver().delete(file_uri, where, whereArgs); } - //updateFolderSize(file.getParentId()); + success &= (deleted > 0); } - if (removeLocalCopy && file.isDown() && file.getStoragePath() != null) { - boolean success = new File(file.getStoragePath()).delete(); + if (removeLocalCopy && file.isDown() && file.getStoragePath() != null && success) { + success = new File(file.getStoragePath()).delete(); if (!removeDBData && success) { // maybe unnecessary, but should be checked TODO remove if unnecessary file.setStoragePath(null); @@ -454,51 +456,64 @@ public class FileDataStorageManager { } } } + return success; } - public void removeFolder(OCFile folder, boolean removeDBData, boolean removeLocalContent) { + public boolean removeFolder(OCFile folder, boolean removeDBData, boolean removeLocalContent) { + boolean success = true; if (folder != null && folder.isFolder()) { if (removeDBData && folder.getFileId() != -1) { - removeFolderInDb(folder); + success = removeFolderInDb(folder); } - if (removeLocalContent) { - File localFolder = new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, folder)); - removeLocalFolder(localFolder); + if (removeLocalContent && success) { + success = removeLocalFolder(folder); } } + return success; } - private void removeFolderInDb(OCFile folder) { + private boolean removeFolderInDb(OCFile folder) { Uri folder_uri = Uri.withAppendedPath(ProviderTableMeta.CONTENT_URI_DIR, ""+ folder.getFileId()); // URI for recursive deletion String where = ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?" + " AND " + ProviderTableMeta.FILE_PATH + "=?"; String [] whereArgs = new String[]{mAccount.name, folder.getRemotePath()}; + int deleted = 0; if (getContentProviderClient() != null) { try { - getContentProviderClient().delete(folder_uri, where, whereArgs); + deleted = getContentProviderClient().delete(folder_uri, where, whereArgs); } catch (RemoteException e) { e.printStackTrace(); } } else { - getContentResolver().delete(folder_uri, where, whereArgs); + deleted = getContentResolver().delete(folder_uri, where, whereArgs); } - //updateFolderSize(folder.getParentId()); + return deleted > 0; } - private void removeLocalFolder(File folder) { - if (folder.exists()) { - File[] files = folder.listFiles(); + private boolean removeLocalFolder(OCFile folder) { + boolean success = true; + File localFolder = new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, folder)); + if (localFolder.exists()) { + Vector files = getFolderContent(folder.getFileId()); if (files != null) { - for (File file : files) { - if (file.isDirectory()) { - removeLocalFolder(file); + for (OCFile file : files) { + if (file.isFolder()) { + success &= removeLocalFolder(file); } else { - file.delete(); + if (file.isDown()) { + File localFile = new File(file.getStoragePath()); + success &= localFile.delete(); + if (success) { + file.setStoragePath(null); + saveFile(file); + } + } } } } - folder.delete(); + success &= localFolder.delete(); } + return success; } /** @@ -610,30 +625,6 @@ public class FileDataStorageManager { } - public Cursor getContent(long parentId) { - Uri req_uri = Uri.withAppendedPath( - ProviderTableMeta.CONTENT_URI_DIR, - String.valueOf(parentId)); - Cursor c = null; - - if (getContentProviderClient() != null) { - try { - c = getContentProviderClient().query(req_uri, null, - ProviderTableMeta.FILE_PARENT + "=?" , - new String[] { String.valueOf(parentId)}, null); - } catch (RemoteException e) { - Log_OC.e(TAG, e.getMessage()); - return c; - } - } else { - c = getContentResolver().query(req_uri, null, - ProviderTableMeta.FILE_PARENT + "=?" , - new String[] { String.valueOf(parentId)}, null); - } - - return c; - } - private OCFile createRootDir() { OCFile file = new OCFile(OCFile.ROOT_PATH); file.setMimetype("DIR"); @@ -698,33 +689,33 @@ public class FileDataStorageManager { return c; } -// private Cursor getShareCursorForValue(String key, String value) { -// Cursor c = null; -// if (getContentResolver() != null) { -// c = getContentResolver() -// .query(ProviderTableMeta.CONTENT_URI_SHARE, -// null, -// key + "=? AND " -// + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER -// + "=?", -// new String[] { value, mAccount.name }, null); -// } else { -// try { -// c = getContentProviderClient().query( -// ProviderTableMeta.CONTENT_URI_SHARE, -// null, -// key + "=? AND " + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER -// + "=?", new String[] { value, mAccount.name }, -// null); -// } catch (RemoteException e) { -// Log_OC.e(TAG, "Could not get file details: " + e.getMessage()); -// c = null; -// } -// } -// return c; -// } + private Cursor getShareCursorForValue(String key, String value) { + Cursor c = null; + if (getContentResolver() != null) { + c = getContentResolver() + .query(ProviderTableMeta.CONTENT_URI_SHARE, + null, + key + "=? AND " + + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + + "=?", + new String[] { value, mAccount.name }, null); + } else { + try { + c = getContentProviderClient().query( + ProviderTableMeta.CONTENT_URI_SHARE, + null, + key + "=? AND " + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + + "=?", new String[] { value, mAccount.name }, + null); + } catch (RemoteException e) { + Log_OC.e(TAG, "Could not get file details: " + e.getMessage()); + c = null; + } + } + return c; + } - public OCFile createFileInstance(Cursor c) { + private OCFile createFileInstance(Cursor c) { OCFile file = null; if (c != null) { file = new OCFile(c.getString(c