From: masensio Date: Fri, 5 Jul 2013 11:00:57 +0000 (+0200) Subject: OC-576: method updateSubtreeSize in FileDataStorageManager. OC-523 X-Git-Tag: oc-android-1.4.3~7^2~4 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/7ec25767ef40ed8ab4cfaa38f1191e07b4aa6f58?hp=--cc OC-576: method updateSubtreeSize in FileDataStorageManager. OC-523 --- 7ec25767ef40ed8ab4cfaa38f1191e07b4aa6f58 diff --git a/src/com/owncloud/android/datamodel/DataStorageManager.java b/src/com/owncloud/android/datamodel/DataStorageManager.java index 6444b4d3..64d8803c 100644 --- a/src/com/owncloud/android/datamodel/DataStorageManager.java +++ b/src/com/owncloud/android/datamodel/DataStorageManager.java @@ -49,6 +49,8 @@ public interface DataStorageManager { public Vector getFilesbyParent(long id); + public void saveFolderSize(long id); + public int updatefolderSize(long id, long size); } diff --git a/src/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/com/owncloud/android/datamodel/FileDataStorageManager.java index 595aa770..8b70d4a2 100644 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -465,6 +465,8 @@ public class FileDataStorageManager implements DataStorageManager { f.delete(); } } + + updateSubtreeSize(file.getParentId()); } @Override @@ -621,13 +623,33 @@ public class FileDataStorageManager implements DataStorageManager { return ret; } + + /** + * Calculate and save the folderSize on DB + * @param id + */ + @Override + public void saveFolderSize(long id) { + long folderSize = 0; + + Vector files = getFilesbyParent(id); + + Log_OC.d(TAG, "Folder " + String.valueOf(id) + "--- Number of Files = " + String.valueOf(files.size())); + + for (OCFile f: files) + { + folderSize = folderSize + f.getFileLength(); + Log_OC.d(TAG, "Folder Size = " + String.valueOf(folderSize)); + } + + updatefolderSize(id, folderSize); + } /** - * Update the size value of a folder + * Update the size value of a folder on DB */ @Override - public int updatefolderSize(long id, long size) - { + public int updatefolderSize(long id, long size) { ContentValues cv = new ContentValues(); cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, size); int result = getContentResolver().update(ProviderTableMeta.CONTENT_URI, cv, ProviderTableMeta._ID + "=?", @@ -635,5 +657,26 @@ public class FileDataStorageManager implements DataStorageManager { return result; } + /** + * Update the size of a subtree of folder from a file to the root + * @param parentId: parent of the file + */ + private void updateSubtreeSize(long parentId) { + + OCFile file; + + while (parentId != 0) { + + Log_OC.d(TAG, "parent = " + parentId); + // Update the size of the parent + saveFolderSize(parentId); + + // search the next parent + file = getFileById(parentId); + parentId = file.getParentId(); + + } + + } } diff --git a/src/com/owncloud/android/syncadapter/FileSyncAdapter.java b/src/com/owncloud/android/syncadapter/FileSyncAdapter.java index a79125f0..a4c88501 100644 --- a/src/com/owncloud/android/syncadapter/FileSyncAdapter.java +++ b/src/com/owncloud/android/syncadapter/FileSyncAdapter.java @@ -268,7 +268,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter { // Update folder size on DB FileDataStorageManager storageManager = new FileDataStorageManager(getAccount(), getContext().getContentResolver()); - FileStorageUtils.saveFolderSize(newFile.getFileId(), storageManager); + storageManager.saveFolderSize(newFile.getFileId()); } } diff --git a/src/com/owncloud/android/utils/FileStorageUtils.java b/src/com/owncloud/android/utils/FileStorageUtils.java index a449c506..29553c41 100644 --- a/src/com/owncloud/android/utils/FileStorageUtils.java +++ b/src/com/owncloud/android/utils/FileStorageUtils.java @@ -18,7 +18,6 @@ package com.owncloud.android.utils; import java.io.File; -import java.util.Vector; import android.annotation.SuppressLint; import android.content.Context; @@ -26,9 +25,7 @@ import android.net.Uri; import android.os.Environment; import android.os.StatFs; -import com.owncloud.android.Log_OC; import com.owncloud.android.R; -import com.owncloud.android.datamodel.DataStorageManager; import com.owncloud.android.datamodel.OCFile; /** @@ -77,21 +74,5 @@ public class FileStorageUtils { String value = uploadPath + OCFile.PATH_SEPARATOR + (fileName == null ? "" : fileName); return value; } - - public static void saveFolderSize(long id, DataStorageManager storageManager) - { - long folderSize = 0; - - Vector files = storageManager.getFilesbyParent(id); - - Log_OC.d(LOG_TAG, "Folder " + String.valueOf(id) + "--- Number of Files = " + String.valueOf(files.size())); - - for (OCFile f: files) - { - folderSize = folderSize + f.getFileLength(); - Log_OC.d(LOG_TAG, "Folder Size = " + String.valueOf(folderSize)); - } - - storageManager.updatefolderSize(id, folderSize); - } + } \ No newline at end of file