|
@@ -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;
|
|
|
}
|
|
|
|
|
|
/**
|