X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/7a9149a66ab8caffbec4f0eaf46cd5615e19e1e4..d700cde6c55593483c48f8f126b77de0fb91e1ae:/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 f132d967..a6765310 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,57 @@ 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) { + if (removeLocalContent && success) { File localFolder = new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, folder)); - removeLocalFolder(localFolder); + success = removeLocalFolder(localFolder); } } + 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) { + private boolean removeLocalFolder(File folder) { + boolean success = true; if (folder.exists()) { File[] files = folder.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { - removeLocalFolder(file); + success &= removeLocalFolder(file); } else { - file.delete(); + success &= file.delete(); } } } - folder.delete(); + success &= folder.delete(); } + return success; } /** @@ -838,25 +846,25 @@ public class FileDataStorageManager { return overriden; } - private OCShare getShareById(long id) { - Cursor c = getShareCursorForValue(ProviderTableMeta._ID, String.valueOf(id)); - OCShare share = null; - if (c.moveToFirst()) { - share = createShareInstance(c); - } - c.close(); - return share; - } - - private OCShare getShareByRemoteId(long remoteId) { - Cursor c = getShareCursorForValue(ProviderTableMeta.OCSHARES_ID_REMOTE_SHARED, String.valueOf(remoteId)); - OCShare share = null; - if (c.moveToFirst()) { - share = createShareInstance(c); - } - c.close(); - return share; - } +// private OCShare getShareById(long id) { +// Cursor c = getShareCursorForValue(ProviderTableMeta._ID, String.valueOf(id)); +// OCShare share = null; +// if (c.moveToFirst()) { +// share = createShareInstance(c); +// } +// c.close(); +// return share; +// } +// +// private OCShare getShareByRemoteId(long remoteId) { +// Cursor c = getShareCursorForValue(ProviderTableMeta.OCSHARES_ID_REMOTE_SHARED, String.valueOf(remoteId)); +// OCShare share = null; +// if (c.moveToFirst()) { +// share = createShareInstance(c); +// } +// c.close(); +// return share; +// } public OCShare getFirstShareByPathAndType(String path, ShareType type) { Cursor c = null;