|
@@ -208,44 +208,10 @@ public class FileDataStorageManager {
|
|
|
|
|
|
public boolean saveFile(OCFile ocFile) {
|
|
|
boolean overridden = false;
|
|
|
- ContentValues cv = new ContentValues();
|
|
|
- cv.put(ProviderTableMeta.FILE_MODIFIED, ocFile.getModificationTimestamp());
|
|
|
- cv.put(
|
|
|
- ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA,
|
|
|
- ocFile.getModificationTimestampAtLastSyncForData()
|
|
|
- );
|
|
|
- cv.put(ProviderTableMeta.FILE_CREATION, ocFile.getCreationTimestamp());
|
|
|
- cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, ocFile.getFileLength());
|
|
|
- cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, ocFile.getMimeType());
|
|
|
- cv.put(ProviderTableMeta.FILE_NAME, ocFile.getFileName());
|
|
|
- cv.put(ProviderTableMeta.FILE_ENCRYPTED_NAME, ocFile.getEncryptedFileName());
|
|
|
- cv.put(ProviderTableMeta.FILE_PARENT, ocFile.getParentId());
|
|
|
- cv.put(ProviderTableMeta.FILE_PATH, ocFile.getRemotePath());
|
|
|
- cv.put(ProviderTableMeta.FILE_PATH_DECRYPTED, ocFile.getDecryptedRemotePath());
|
|
|
- cv.put(ProviderTableMeta.FILE_IS_ENCRYPTED, ocFile.isEncrypted());
|
|
|
- if (!ocFile.isFolder()) {
|
|
|
- cv.put(ProviderTableMeta.FILE_STORAGE_PATH, ocFile.getStoragePath());
|
|
|
+ final ContentValues cv = createContentValuesForFile(ocFile);
|
|
|
+ if (ocFile.isFolder()) {
|
|
|
+ cv.remove(ProviderTableMeta.FILE_STORAGE_PATH);
|
|
|
}
|
|
|
- cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, user.getAccountName());
|
|
|
- cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, ocFile.getLastSyncDateForProperties());
|
|
|
- cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, ocFile.getLastSyncDateForData());
|
|
|
- cv.put(ProviderTableMeta.FILE_ETAG, ocFile.getEtag());
|
|
|
- cv.put(ProviderTableMeta.FILE_ETAG_ON_SERVER, ocFile.getEtagOnServer());
|
|
|
- cv.put(ProviderTableMeta.FILE_SHARED_VIA_LINK, ocFile.isSharedViaLink() ? 1 : 0);
|
|
|
- cv.put(ProviderTableMeta.FILE_SHARED_WITH_SHAREE, ocFile.isSharedWithSharee() ? 1 : 0);
|
|
|
- cv.put(ProviderTableMeta.FILE_PERMISSIONS, ocFile.getPermissions());
|
|
|
- cv.put(ProviderTableMeta.FILE_REMOTE_ID, ocFile.getRemoteId());
|
|
|
- cv.put(ProviderTableMeta.FILE_UPDATE_THUMBNAIL, ocFile.isUpdateThumbnailNeeded());
|
|
|
- cv.put(ProviderTableMeta.FILE_IS_DOWNLOADING, ocFile.isDownloading());
|
|
|
- cv.put(ProviderTableMeta.FILE_ETAG_IN_CONFLICT, ocFile.getEtagInConflict());
|
|
|
- cv.put(ProviderTableMeta.FILE_UNREAD_COMMENTS_COUNT, ocFile.getUnreadCommentsCount());
|
|
|
- cv.put(ProviderTableMeta.FILE_OWNER_ID, ocFile.getOwnerId());
|
|
|
- cv.put(ProviderTableMeta.FILE_OWNER_DISPLAY_NAME, ocFile.getOwnerDisplayName());
|
|
|
- cv.put(ProviderTableMeta.FILE_NOTE, ocFile.getNote());
|
|
|
- cv.put(ProviderTableMeta.FILE_SHAREES, new Gson().toJson(ocFile.getSharees()));
|
|
|
- cv.put(ProviderTableMeta.FILE_RICH_WORKSPACE, ocFile.getRichWorkspace());
|
|
|
- cv.put(ProviderTableMeta.FILE_HAS_PREVIEW, ocFile.isPreviewAvailable() ? 1 : 0);
|
|
|
- cv.put(ProviderTableMeta.FILE_FAVORITE, ocFile.isFavorite());
|
|
|
|
|
|
boolean sameRemotePath = fileExists(ocFile.getRemotePath());
|
|
|
if (sameRemotePath ||
|
|
@@ -369,7 +335,8 @@ public class FileDataStorageManager {
|
|
|
|
|
|
// prepare operations to insert or update files to save in the given folder
|
|
|
for (OCFile ocFile : updatedFiles) {
|
|
|
- ContentValues contentValues = createContentValueForFile(ocFile, folder);
|
|
|
+ ContentValues contentValues = createContentValuesForFile(ocFile);
|
|
|
+ contentValues.put(ProviderTableMeta.FILE_PARENT, folder.getFileId());
|
|
|
|
|
|
if (fileExists(ocFile.getFileId()) || fileExists(ocFile.getRemotePath())) {
|
|
|
long fileId;
|
|
@@ -423,7 +390,7 @@ public class FileDataStorageManager {
|
|
|
}
|
|
|
|
|
|
// update metadata of folder
|
|
|
- ContentValues contentValues = createContentValueForFile(folder);
|
|
|
+ ContentValues contentValues = createContentValuesForFolder(folder);
|
|
|
|
|
|
operations.add(ContentProviderOperation.newUpdate(ProviderTableMeta.CONTENT_URI)
|
|
|
.withValues(contentValues)
|
|
@@ -467,77 +434,70 @@ public class FileDataStorageManager {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private ContentValues createContentValueForFile(OCFile folder) {
|
|
|
- ContentValues cv = new ContentValues();
|
|
|
- cv.put(ProviderTableMeta.FILE_MODIFIED, folder.getModificationTimestamp());
|
|
|
- cv.put(
|
|
|
- ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA,
|
|
|
- folder.getModificationTimestampAtLastSyncForData()
|
|
|
- );
|
|
|
- cv.put(ProviderTableMeta.FILE_CREATION, folder.getCreationTimestamp());
|
|
|
- cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, 0);
|
|
|
- cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, folder.getMimeType());
|
|
|
- cv.put(ProviderTableMeta.FILE_NAME, folder.getFileName());
|
|
|
- cv.put(ProviderTableMeta.FILE_PARENT, folder.getParentId());
|
|
|
- cv.put(ProviderTableMeta.FILE_PATH, folder.getRemotePath());
|
|
|
- cv.put(ProviderTableMeta.FILE_PATH_DECRYPTED, folder.getDecryptedRemotePath());
|
|
|
+ /**
|
|
|
+ * Returns a {@link ContentValues} filled with values that are common to both files and folders
|
|
|
+ * @see #createContentValuesForFile(OCFile)
|
|
|
+ * @see #createContentValuesForFolder(OCFile)
|
|
|
+ */
|
|
|
+ private ContentValues createContentValuesBase(OCFile fileOrFolder) {
|
|
|
+ final ContentValues cv = new ContentValues();
|
|
|
+ cv.put(ProviderTableMeta.FILE_MODIFIED, fileOrFolder.getModificationTimestamp());
|
|
|
+ cv.put(ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA, fileOrFolder.getModificationTimestampAtLastSyncForData());
|
|
|
+ cv.put(ProviderTableMeta.FILE_PARENT, fileOrFolder.getParentId());
|
|
|
+ cv.put(ProviderTableMeta.FILE_CREATION, fileOrFolder.getCreationTimestamp());
|
|
|
+ cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, fileOrFolder.getMimeType());
|
|
|
+ cv.put(ProviderTableMeta.FILE_NAME, fileOrFolder.getFileName());
|
|
|
+ cv.put(ProviderTableMeta.FILE_PATH, fileOrFolder.getRemotePath());
|
|
|
+ cv.put(ProviderTableMeta.FILE_PATH_DECRYPTED, fileOrFolder.getDecryptedRemotePath());
|
|
|
cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, user.getAccountName());
|
|
|
- cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, folder.getLastSyncDateForProperties());
|
|
|
- cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, folder.getLastSyncDateForData());
|
|
|
- cv.put(ProviderTableMeta.FILE_ETAG, folder.getEtag());
|
|
|
- cv.put(ProviderTableMeta.FILE_ETAG_ON_SERVER, folder.getEtagOnServer());
|
|
|
- cv.put(ProviderTableMeta.FILE_SHARED_VIA_LINK, folder.isSharedViaLink() ? 1 : 0);
|
|
|
- cv.put(ProviderTableMeta.FILE_SHARED_WITH_SHAREE, folder.isSharedWithSharee() ? 1 : 0);
|
|
|
- cv.put(ProviderTableMeta.FILE_PERMISSIONS, folder.getPermissions());
|
|
|
- cv.put(ProviderTableMeta.FILE_REMOTE_ID, folder.getRemoteId());
|
|
|
- cv.put(ProviderTableMeta.FILE_FAVORITE, folder.isFavorite());
|
|
|
- cv.put(ProviderTableMeta.FILE_IS_ENCRYPTED, folder.isEncrypted());
|
|
|
- cv.put(ProviderTableMeta.FILE_UNREAD_COMMENTS_COUNT, folder.getUnreadCommentsCount());
|
|
|
- cv.put(ProviderTableMeta.FILE_OWNER_ID, folder.getOwnerId());
|
|
|
- cv.put(ProviderTableMeta.FILE_OWNER_DISPLAY_NAME, folder.getOwnerDisplayName());
|
|
|
- cv.put(ProviderTableMeta.FILE_NOTE, folder.getNote());
|
|
|
- cv.put(ProviderTableMeta.FILE_SHAREES, new Gson().toJson(folder.getSharees()));
|
|
|
- cv.put(ProviderTableMeta.FILE_RICH_WORKSPACE, folder.getRichWorkspace());
|
|
|
+ cv.put(ProviderTableMeta.FILE_IS_ENCRYPTED, fileOrFolder.isEncrypted());
|
|
|
+ cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, fileOrFolder.getLastSyncDateForProperties());
|
|
|
+ cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, fileOrFolder.getLastSyncDateForData());
|
|
|
+ cv.put(ProviderTableMeta.FILE_ETAG, fileOrFolder.getEtag());
|
|
|
+ cv.put(ProviderTableMeta.FILE_ETAG_ON_SERVER, fileOrFolder.getEtagOnServer());
|
|
|
+ cv.put(ProviderTableMeta.FILE_SHARED_VIA_LINK, fileOrFolder.isSharedViaLink() ? 1 : 0);
|
|
|
+ cv.put(ProviderTableMeta.FILE_SHARED_WITH_SHAREE, fileOrFolder.isSharedWithSharee() ? 1 : 0);
|
|
|
+ cv.put(ProviderTableMeta.FILE_PERMISSIONS, fileOrFolder.getPermissions());
|
|
|
+ cv.put(ProviderTableMeta.FILE_REMOTE_ID, fileOrFolder.getRemoteId());
|
|
|
+ cv.put(ProviderTableMeta.FILE_FAVORITE, fileOrFolder.isFavorite());
|
|
|
+ cv.put(ProviderTableMeta.FILE_UNREAD_COMMENTS_COUNT, fileOrFolder.getUnreadCommentsCount());
|
|
|
+ cv.put(ProviderTableMeta.FILE_OWNER_ID, fileOrFolder.getOwnerId());
|
|
|
+ cv.put(ProviderTableMeta.FILE_OWNER_DISPLAY_NAME, fileOrFolder.getOwnerDisplayName());
|
|
|
+ cv.put(ProviderTableMeta.FILE_NOTE, fileOrFolder.getNote());
|
|
|
+ cv.put(ProviderTableMeta.FILE_SHAREES, new Gson().toJson(fileOrFolder.getSharees()));
|
|
|
+ cv.put(ProviderTableMeta.FILE_RICH_WORKSPACE, fileOrFolder.getRichWorkspace());
|
|
|
+ return cv;
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * Returns a {@link ContentValues} filled with values for a folder
|
|
|
+ * @see #createContentValuesForFile(OCFile)
|
|
|
+ * @see #createContentValuesBase(OCFile)
|
|
|
+ */
|
|
|
+ private ContentValues createContentValuesForFolder(OCFile folder) {
|
|
|
+ final ContentValues cv = createContentValuesBase(folder);
|
|
|
+ cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, 0);
|
|
|
return cv;
|
|
|
}
|
|
|
|
|
|
- private ContentValues createContentValueForFile(OCFile file, OCFile folder) {
|
|
|
- ContentValues cv = new ContentValues();
|
|
|
- cv.put(ProviderTableMeta.FILE_MODIFIED, file.getModificationTimestamp());
|
|
|
- cv.put(ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA, file.getModificationTimestampAtLastSyncForData());
|
|
|
- cv.put(ProviderTableMeta.FILE_CREATION, file.getCreationTimestamp());
|
|
|
+ /**
|
|
|
+ * Returns a {@link ContentValues} filled with values for a file
|
|
|
+ * @see #createContentValuesForFolder(OCFile)
|
|
|
+ * @see #createContentValuesBase(OCFile)
|
|
|
+ */
|
|
|
+ private ContentValues createContentValuesForFile(OCFile file) {
|
|
|
+ final ContentValues cv = createContentValuesBase(file);
|
|
|
cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, file.getFileLength());
|
|
|
- cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, file.getMimeType());
|
|
|
- cv.put(ProviderTableMeta.FILE_NAME, file.getFileName());
|
|
|
cv.put(ProviderTableMeta.FILE_ENCRYPTED_NAME, file.getEncryptedFileName());
|
|
|
- cv.put(ProviderTableMeta.FILE_PARENT, folder.getFileId());
|
|
|
- cv.put(ProviderTableMeta.FILE_PATH, file.getRemotePath());
|
|
|
- cv.put(ProviderTableMeta.FILE_PATH_DECRYPTED, file.getDecryptedRemotePath());
|
|
|
cv.put(ProviderTableMeta.FILE_STORAGE_PATH, file.getStoragePath());
|
|
|
- cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, user.getAccountName());
|
|
|
- cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, file.getLastSyncDateForProperties());
|
|
|
- cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, file.getLastSyncDateForData());
|
|
|
- cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag());
|
|
|
- cv.put(ProviderTableMeta.FILE_ETAG_ON_SERVER, file.getEtagOnServer());
|
|
|
- cv.put(ProviderTableMeta.FILE_SHARED_VIA_LINK, file.isSharedViaLink() ? 1 : 0);
|
|
|
- cv.put(ProviderTableMeta.FILE_SHARED_WITH_SHAREE, file.isSharedWithSharee() ? 1 : 0);
|
|
|
- cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
|
|
|
- cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
|
|
|
cv.put(ProviderTableMeta.FILE_UPDATE_THUMBNAIL, file.isUpdateThumbnailNeeded());
|
|
|
cv.put(ProviderTableMeta.FILE_IS_DOWNLOADING, file.isDownloading());
|
|
|
cv.put(ProviderTableMeta.FILE_ETAG_IN_CONFLICT, file.getEtagInConflict());
|
|
|
- cv.put(ProviderTableMeta.FILE_FAVORITE, file.isFavorite());
|
|
|
- cv.put(ProviderTableMeta.FILE_IS_ENCRYPTED, file.isEncrypted());
|
|
|
- cv.put(ProviderTableMeta.FILE_MOUNT_TYPE, file.getMountType().ordinal());
|
|
|
cv.put(ProviderTableMeta.FILE_HAS_PREVIEW, file.isPreviewAvailable() ? 1 : 0);
|
|
|
- cv.put(ProviderTableMeta.FILE_UNREAD_COMMENTS_COUNT, file.getUnreadCommentsCount());
|
|
|
- cv.put(ProviderTableMeta.FILE_OWNER_ID, file.getOwnerId());
|
|
|
- cv.put(ProviderTableMeta.FILE_OWNER_DISPLAY_NAME, file.getOwnerDisplayName());
|
|
|
- cv.put(ProviderTableMeta.FILE_NOTE, file.getNote());
|
|
|
- cv.put(ProviderTableMeta.FILE_SHAREES, new Gson().toJson(file.getSharees()));
|
|
|
- cv.put(ProviderTableMeta.FILE_RICH_WORKSPACE, file.getRichWorkspace());
|
|
|
-
|
|
|
+ cv.put(ProviderTableMeta.FILE_LOCKED, file.isLocked());
|
|
|
+ cv.put(ProviderTableMeta.FILE_LOCK_OWNER, file.getLockOwnerId());
|
|
|
+ cv.put(ProviderTableMeta.FILE_LOCK_OWNER_DISPLAY_NAME, file.getLockOwnerDisplayName());
|
|
|
+ cv.put(ProviderTableMeta.FILE_LOCK_TIMESTAMP, file.getLockTimestamp());
|
|
|
return cv;
|
|
|
}
|
|
|
|
|
@@ -1030,6 +990,11 @@ public class FileDataStorageManager {
|
|
|
ocFile.setOwnerDisplayName(cursor.getString(cursor.getColumnIndexOrThrow(ProviderTableMeta.FILE_OWNER_DISPLAY_NAME)));
|
|
|
ocFile.setNote(cursor.getString(cursor.getColumnIndexOrThrow(ProviderTableMeta.FILE_NOTE)));
|
|
|
ocFile.setRichWorkspace(cursor.getString(cursor.getColumnIndexOrThrow(ProviderTableMeta.FILE_RICH_WORKSPACE)));
|
|
|
+ ocFile.setLocked(cursor.getInt(cursor.getColumnIndexOrThrow(ProviderTableMeta.FILE_LOCKED)) == 1);
|
|
|
+ ocFile.setLockOwnerId(cursor.getString(cursor.getColumnIndexOrThrow(ProviderTableMeta.FILE_LOCK_OWNER)));
|
|
|
+ ocFile.setLockOwnerDisplayName(cursor.getString(cursor.getColumnIndexOrThrow(ProviderTableMeta.FILE_LOCK_OWNER_DISPLAY_NAME)));
|
|
|
+ ocFile.setLockTimestamp(cursor.getInt(cursor.getColumnIndexOrThrow(ProviderTableMeta.FILE_LOCK_TIMESTAMP)));
|
|
|
+
|
|
|
|
|
|
String sharees = cursor.getString(cursor.getColumnIndexOrThrow(ProviderTableMeta.FILE_SHAREES));
|
|
|
|