import java.util.List;
import java.util.Vector;
+import com.owncloud.android.DisplayUtils;
import com.owncloud.android.Log_OC;
import com.owncloud.android.db.ProviderMeta;
import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
long new_id = Long.parseLong(result_uri.getPathSegments()
.get(1));
file.setFileId(new_id);
- }
+ }
}
if (file.isDirectory() && file.needsUpdatingWhileSaving())
for (OCFile f : getDirectoryContent(file))
saveFile(f);
-
+
+ Log_OC.d(TAG, ".........file Time= " + DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));
+ updateSubtreeSize(file.getParentId());
+
return overriden;
}
f.delete();
}
}
+
+ updateSubtreeSize(file.getParentId());
}
@Override
if (removeDBData) {
removeFile(dir, true);
}
+
+ updateSubtreeSize(dir.getParentId());
}
}
return ret;
}
+
+ /**
+ * Calculate and save the folderSize on DB
+ * @param id
+ */
+ @Override
+ public void saveFolderSize(long id) {
+ long folderSize = 0;
+
+ Vector<OCFile> 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 + "=?",
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();
+
+ }
+
+ }
}