X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/36d4f3d4655f02611a74ef6eb638222ee74677e1..ab3044dc821afd86a99a49ce30b9160e5f25e347:/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 4e3441c9..3b879c06 100644 --- a/src/com/owncloud/android/operations/GetSharesOperation.java +++ b/src/com/owncloud/android/operations/GetSharesOperation.java @@ -17,6 +17,8 @@ package com.owncloud.android.operations; +import java.util.ArrayList; + import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.network.OwnCloudClient; @@ -36,56 +38,65 @@ import com.owncloud.android.utils.Log_OC; */ public class GetSharesOperation extends RemoteOperation { - + private static final String TAG = GetSharesOperation.class.getSimpleName(); - private String mUrlServer; protected FileDataStorageManager mStorageManager; - - public GetSharesOperation(String urlServer, FileDataStorageManager storageManager) { - mUrlServer = urlServer; + + public GetSharesOperation(FileDataStorageManager storageManager) { mStorageManager = storageManager; } @Override protected RemoteOperationResult run(OwnCloudClient client) { - GetRemoteSharesOperation operation = new GetRemoteSharesOperation(mUrlServer); + GetRemoteSharesOperation operation = new GetRemoteSharesOperation(); RemoteOperationResult result = operation.execute(client); - + if (result.isSuccess()) { - - // Clean Share data in filelist table - mStorageManager.cleanShare(); - + // 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) { - // Save share file - mStorageManager.saveShare(shareFile); - - // Get the path - String path = shareFile.getPath(); - if (shareFile.isDirectory()) { - path = path + FileUtils.PATH_SEPARATOR; - } + private void saveSharesDB(ArrayList shares) { + + if (shares.size() > 0) { + // Save share file + mStorageManager.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 = mStorageManager.getFileByPath(path); + if (file != null) { + if (share.getShareType().equals(ShareType.PUBLIC_LINK)) { + file.setShareByLink(true); + sharedFiles.add(file); + } + } + } - // 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); + if (sharedFiles.size() > 0) { + mStorageManager.updateSharedFiles(sharedFiles); } - } + } } }