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;
/**
* Save the data in Database
*
* @author masensio
+ * @author David A. Velasco
*/
-public class GetSharesOperation extends RemoteOperation {
-
- private static final String TAG = GetSharesOperation.class.getSimpleName();
-
- private String mUrlServer;
- protected FileDataStorageManager mStorageManager;
-
+public class GetSharesOperation extends SyncOperation {
- public GetSharesOperation(String urlServer, FileDataStorageManager storageManager) {
- mUrlServer = urlServer;
- mStorageManager = storageManager;
- }
+ private static final String TAG = GetSharesOperation.class.getSimpleName();
@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<OCShare> shares = new ArrayList<OCShare>();
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<OCShare> shares) {
// Save share file
- mStorageManager.saveShareFile(shareFile);
+ getStorageManager().saveShares(shares);
+
+ ArrayList<OCFile> sharedFiles = new ArrayList<OCFile>();
+
+ 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);
}
}