X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/d963d702fb65d5620803d961cdfe149aabbb5b37..cea1a76f48ceb400136e64b4fb921a3f92aee6e4:/src/com/owncloud/android/operations/GetSharesOperation.java diff --git a/src/com/owncloud/android/operations/GetSharesOperation.java b/src/com/owncloud/android/operations/GetSharesOperation.java index 623282b4..4cbee02a 100644 --- a/src/com/owncloud/android/operations/GetSharesOperation.java +++ b/src/com/owncloud/android/operations/GetSharesOperation.java @@ -17,15 +17,16 @@ package com.owncloud.android.operations; -import com.owncloud.android.datamodel.FileDataStorageManager; +import java.util.ArrayList; + import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.network.OwnCloudClient; -import com.owncloud.android.lib.operations.common.RemoteOperation; import com.owncloud.android.lib.operations.common.RemoteOperationResult; import com.owncloud.android.lib.operations.common.OCShare; import com.owncloud.android.lib.operations.common.ShareType; import com.owncloud.android.lib.operations.remote.GetRemoteSharesOperation; import com.owncloud.android.lib.utils.FileUtils; +import com.owncloud.android.operations.common.SyncOperation; import com.owncloud.android.utils.Log_OC; /** @@ -33,57 +34,57 @@ import com.owncloud.android.utils.Log_OC; * Save the data in Database * * @author masensio + * @author David A. Velasco */ -public class GetSharesOperation extends RemoteOperation { - - private static final String TAG = GetSharesOperation.class.getSimpleName(); - - protected FileDataStorageManager mStorageManager; - +public class GetSharesOperation extends SyncOperation { - public GetSharesOperation(FileDataStorageManager storageManager) { - mStorageManager = storageManager; - } + private static final String TAG = GetSharesOperation.class.getSimpleName(); @Override protected RemoteOperationResult run(OwnCloudClient client) { - GetRemoteSharesOperation operation = new GetRemoteSharesOperation(client.getBaseUri().toString()); + GetRemoteSharesOperation operation = new GetRemoteSharesOperation(); RemoteOperationResult result = operation.execute(client); - + if (result.isSuccess()) { - - // Clean Share data in filelist table - mStorageManager.cleanShares(); - + // Update DB with the response Log_OC.d(TAG, "Share list size = " + result.getData().size()); + ArrayList shares = new ArrayList(); for(Object obj: result.getData()) { - saveShareDB((OCShare) obj); + shares.add((OCShare) obj); } + + saveSharesDB(shares); } - + return result; } - private void saveShareDB(OCShare shareFile) { + private void saveSharesDB(ArrayList shares) { // Save share file - mStorageManager.saveShare(shareFile); + getStorageManager().saveShares(shares); + + ArrayList sharedFiles = new ArrayList(); + + for (OCShare share : shares) { + // Get the path + String path = share.getPath(); + if (share.isDirectory()) { + path = path + FileUtils.PATH_SEPARATOR; + } + + // Update OCFile with data from share: ShareByLink ¿and publicLink? + OCFile file = getStorageManager().getFileByPath(path); + if (file != null) { + if (share.getShareType().equals(ShareType.PUBLIC_LINK)) { + file.setShareByLink(true); + sharedFiles.add(file); + } + } + } - // Get the path - String path = shareFile.getPath(); - if (shareFile.isDirectory()) { - path = path + FileUtils.PATH_SEPARATOR; - } - - // Update OCFile with data from share: ShareByLink ¿and publicLink? - OCFile file = mStorageManager.getFileByPath(path); - if (file != null) { - if (shareFile.getShareType().equals(ShareType.PUBLIC_LINK)) { - file.setShareByLink(true); - mStorageManager.saveFile(file); - } - } + getStorageManager().updateSharedFiles(sharedFiles); } }