|
@@ -233,10 +233,8 @@ public class FileDataStorageManager {
|
|
|
|
|
|
if (file.isFolder()) {
|
|
if (file.isFolder()) {
|
|
updateFolderSize(file.getFileId());
|
|
updateFolderSize(file.getFileId());
|
|
- if (file.needsUpdatingWhileSaving()) {
|
|
+ } else {
|
|
- for (OCFile f : getFolderContent(file))
|
|
+ updateFolderSize(file.getParentId());
|
|
- saveFile(f);
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
return overriden;
|
|
return overriden;
|
|
@@ -255,7 +253,6 @@ public class FileDataStorageManager {
|
|
Log_OC.d(TAG, "Saving folder " + folder.getRemotePath() + " with " + updatedFiles.size() + " children and " + filesToRemove.size() + " files to remove");
|
|
Log_OC.d(TAG, "Saving folder " + folder.getRemotePath() + " with " + updatedFiles.size() + " children and " + filesToRemove.size() + " files to remove");
|
|
|
|
|
|
ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>(updatedFiles.size());
|
|
ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>(updatedFiles.size());
|
|
- long folderSize = 0;
|
|
|
|
|
|
|
|
|
|
|
|
for (OCFile file : updatedFiles) {
|
|
for (OCFile file : updatedFiles) {
|
|
@@ -264,7 +261,6 @@ public class FileDataStorageManager {
|
|
cv.put(ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA, file.getModificationTimestampAtLastSyncForData());
|
|
cv.put(ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA, file.getModificationTimestampAtLastSyncForData());
|
|
cv.put(ProviderTableMeta.FILE_CREATION, file.getCreationTimestamp());
|
|
cv.put(ProviderTableMeta.FILE_CREATION, file.getCreationTimestamp());
|
|
cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, file.getFileLength());
|
|
cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, file.getFileLength());
|
|
- folderSize += file.getFileLength();
|
|
|
|
cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, file.getMimetype());
|
|
cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, file.getMimetype());
|
|
cv.put(ProviderTableMeta.FILE_NAME, file.getFileName());
|
|
cv.put(ProviderTableMeta.FILE_NAME, file.getFileName());
|
|
|
|
|
|
@@ -350,7 +346,7 @@ public class FileDataStorageManager {
|
|
cv.put(ProviderTableMeta.FILE_MODIFIED, folder.getModificationTimestamp());
|
|
cv.put(ProviderTableMeta.FILE_MODIFIED, folder.getModificationTimestamp());
|
|
cv.put(ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA, folder.getModificationTimestampAtLastSyncForData());
|
|
cv.put(ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA, folder.getModificationTimestampAtLastSyncForData());
|
|
cv.put(ProviderTableMeta.FILE_CREATION, folder.getCreationTimestamp());
|
|
cv.put(ProviderTableMeta.FILE_CREATION, folder.getCreationTimestamp());
|
|
- cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, folderSize);
|
|
+ cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, 0);
|
|
cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, folder.getMimetype());
|
|
cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, folder.getMimetype());
|
|
cv.put(ProviderTableMeta.FILE_NAME, folder.getFileName());
|
|
cv.put(ProviderTableMeta.FILE_NAME, folder.getFileName());
|
|
cv.put(ProviderTableMeta.FILE_PARENT, folder.getParentId());
|
|
cv.put(ProviderTableMeta.FILE_PARENT, folder.getParentId());
|
|
@@ -405,6 +401,8 @@ public class FileDataStorageManager {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ updateFolderSize(folder.getFileId());
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -412,20 +410,25 @@ public class FileDataStorageManager {
|
|
*
|
|
*
|
|
* @param id
|
|
* @param id
|
|
*/
|
|
*/
|
|
- public void updateFolderSize(long id) {
|
|
+ private void updateFolderSize(long id) {
|
|
- if (getContentResolver() != null) {
|
|
+ if (id > FileDataStorageManager.ROOT_PARENT_ID) {
|
|
- getContentResolver().update(ProviderTableMeta.CONTENT_URI_DIR, null,
|
|
+ Log_OC.d(TAG, "Updating size of " + id);
|
|
- ProviderTableMeta._ID + "=?",
|
|
+ if (getContentResolver() != null) {
|
|
- new String[] { String.valueOf(id) });
|
|
+ getContentResolver().update(ProviderTableMeta.CONTENT_URI_DIR, null,
|
|
- } else {
|
|
+ ProviderTableMeta._ID + "=?",
|
|
- try {
|
|
+ new String[] { String.valueOf(id) });
|
|
- getContentProviderClient().update(ProviderTableMeta.CONTENT_URI_DIR, null,
|
|
+ } else {
|
|
- ProviderTableMeta._ID + "=?",
|
|
+ try {
|
|
- new String[] { String.valueOf(id) });
|
|
+ getContentProviderClient().update(ProviderTableMeta.CONTENT_URI_DIR, null,
|
|
-
|
|
+ ProviderTableMeta._ID + "=?",
|
|
- } catch (RemoteException e) {
|
|
+ new String[] { String.valueOf(id) });
|
|
- Log_OC.e(TAG, "Exception in update of folder size through compatibility patch " + e.getMessage());
|
|
+
|
|
|
|
+ } catch (RemoteException e) {
|
|
|
|
+ Log_OC.e(TAG, "Exception in update of folder size through compatibility patch " + e.getMessage());
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ Log_OC.e(TAG, "not updating size for folder " + id);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -450,6 +453,7 @@ public class FileDataStorageManager {
|
|
} else {
|
|
} else {
|
|
getContentResolver().delete(file_uri, where, whereArgs);
|
|
getContentResolver().delete(file_uri, where, whereArgs);
|
|
}
|
|
}
|
|
|
|
+ updateFolderSize(file.getParentId());
|
|
}
|
|
}
|
|
if (removeLocalCopy && file.isDown()) {
|
|
if (removeLocalCopy && file.isDown()) {
|
|
boolean success = new File(file.getStoragePath()).delete();
|
|
boolean success = new File(file.getStoragePath()).delete();
|
|
@@ -489,6 +493,7 @@ public class FileDataStorageManager {
|
|
} else {
|
|
} else {
|
|
getContentResolver().delete(folder_uri, where, whereArgs);
|
|
getContentResolver().delete(folder_uri, where, whereArgs);
|
|
}
|
|
}
|
|
|
|
+ updateFolderSize(folder.getParentId());
|
|
}
|
|
}
|
|
|
|
|
|
private void removeLocalFolder(File folder) {
|
|
private void removeLocalFolder(File folder) {
|