Merge pull request #453 from owncloud/improve_action_bar_pr_392_with_develop
[pub/Android/ownCloud.git] / src / com / owncloud / android / operations / GetSharesOperation.java
index 623282b..c9cce40 100644 (file)
@@ -1,5 +1,5 @@
 /* ownCloud Android client application
- *   Copyright (C) 2012-2013 ownCloud Inc.
+ *   Copyright (C) 2012-2014 ownCloud Inc.
  *
  *   This program is free software: you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License version 2,
 
 package com.owncloud.android.operations;
 
-import com.owncloud.android.datamodel.FileDataStorageManager;
-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 java.util.ArrayList;
+
+import com.owncloud.android.lib.common.OwnCloudClient;
+import com.owncloud.android.lib.common.operations.RemoteOperationResult;
+import com.owncloud.android.lib.resources.shares.OCShare;
+import com.owncloud.android.lib.resources.shares.GetRemoteSharesOperation;
+import com.owncloud.android.operations.common.SyncOperation;
 import com.owncloud.android.utils.Log_OC;
 
 /**
@@ -33,57 +31,31 @@ 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<OCShare> shares = new ArrayList<OCShare>();
             for(Object obj: result.getData()) {
-                saveShareDB((OCShare) obj);
+                shares.add((OCShare) obj);
             }
+
+            getStorageManager().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;
-        }           
-            
-        // 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);
-            }
-        } 
+        return result;
     }
 
 }