Эх сурвалжийг харах

Refactoring: static methods to ease requests to FileUploader are grouped in a single class

David A. Velasco 9 жил өмнө
parent
commit
c5825a4e07

+ 3 - 7
src/com/owncloud/android/files/FileOperationsHelper.java

@@ -38,6 +38,7 @@ import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.db.OCUpload;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
+import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
 import com.owncloud.android.lib.common.network.WebdavUtils;
 import com.owncloud.android.lib.common.utils.Log_OC;
@@ -531,13 +532,8 @@ public class FileOperationsHelper {
      */
     public void retryUpload(OCUpload upload) {
         Account account = mFileActivity.getAccount();
-        FileUploaderBinder uploaderBinder = mFileActivity.getFileUploaderBinder();
-        if (uploaderBinder != null) {
-            upload.removeAllUploadRestrictions(); //only this object, upload DB stays untouched.
-            uploaderBinder.retry(account, upload);
-        }  else {
-            Log_OC.w(TAG, "uploaderBinder not set. Cannot retry the upload of " + upload.getLocalPath());
-        }
+        FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
+        requester.retry(mFileActivity, account, upload);
     }
 
     /**

+ 6 - 2
src/com/owncloud/android/files/InstantUploadBroadcastReceiver.java

@@ -127,8 +127,11 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         lastUploadedPhotoPath = file_path;
         Log_OC.d(TAG, "Path: " + file_path + "");
 
+        new FileUploader.UploadRequester();
+
         int behaviour = getUploadBehaviour(context);
-        FileUploader.uploadNewFile(
+        FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
+        requester.uploadNewFile(
                 context,
                 account,
                 file_path,
@@ -187,7 +190,8 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         Log_OC.d(TAG, file_path + "");
 
         int behaviour = getUploadBehaviour(context);
-        FileUploader.uploadNewFile(
+        FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
+        requester.uploadNewFile(
                 context,
                 account,
                 file_path,

+ 92 - 102
src/com/owncloud/android/files/services/FileUploader.java

@@ -182,114 +182,112 @@ public class FileUploader extends Service
         return FileUploader.class.getName() + UPLOAD_FINISH_MESSAGE;
     }
 
+
     /**
-     * Call to retry upload identified by remotePath
+     * Helper class providing methods to ease requesting commands to {@link FileUploader} .
+     *
+     * Avoids the need of checking once and again what extras are needed or optional
+     * in the {@link Intent} to pass to {@link Context#startService(Intent)}.
      */
-    private static void retry(Context context, Account account, OCUpload upload) {
-        Log_OC.d(TAG, "FileUploader.retry()");
-        Intent i = new Intent(context, FileUploader.class);
-        i.putExtra(FileUploader.KEY_RETRY, true);
-        if (upload != null) {
-            i.putExtra(FileUploader.KEY_ACCOUNT, account);
-            i.putExtra(FileUploader.KEY_RETRY_UPLOAD, upload);
+    public static class UploadRequester {
+
+        /**
+         * Call to upload several new files
+         */
+        public void uploadNewFile(
+                Context context,
+                Account account,
+                String[] localPaths,
+                String[] remotePaths,
+                String[] mimeTypes,
+                Integer behaviour,
+                Boolean createRemoteFolder,
+                int createdBy
+        ) {
+            Log_OC.d(TAG, "FileUploader.uploadNewFile()");
+            Intent intent = new Intent(context, FileUploader.class);
+
+            intent.putExtra(FileUploader.KEY_ACCOUNT, account);
+            intent.putExtra(FileUploader.KEY_LOCAL_FILE, localPaths);
+            intent.putExtra(FileUploader.KEY_REMOTE_FILE, remotePaths);
+            intent.putExtra(FileUploader.KEY_MIME_TYPE, mimeTypes);
+            intent.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, behaviour);
+            intent.putExtra(FileUploader.KEY_CREATE_REMOTE_FOLDER, createRemoteFolder);
+            intent.putExtra(FileUploader.KEY_CREATED_BY, createdBy);
+
+            context.startService(intent);
         }
-        context.startService(i);
-    }
 
-    public static void retryUploadsForAccount(Account account, Context context) {
-        UploadsStorageManager uploadsStorageManager = new UploadsStorageManager(context.getContentResolver());
-        OCUpload[] failedUploads = uploadsStorageManager.getFailedUploads();
-        for ( OCUpload upload: failedUploads){
-            if (upload.getAccountName().equals(account.name) &&
-                    upload.getLastResult() == UploadResult.CREDENTIAL_ERROR ) {
-                retry(context, account, upload);
-            }
+        /**
+         * Call to upload a new single file
+         */
+        public void uploadNewFile(Context context, Account account, String localPath, String remotePath, int
+                behaviour, String mimeType, boolean createRemoteFile, int createdBy) {
+
+            uploadNewFile(
+                    context,
+                    account,
+                    new String[]{localPath},
+                    new String[]{remotePath},
+                    new String[]{mimeType},
+                    behaviour,
+                    createRemoteFile,
+                    createdBy
+            );
         }
-    }
 
-    /**
-     * Call to upload several new files
-     */
-    public static void uploadNewFile(
-            Context context,
-            Account account,
-            String[] localPaths,
-            String[] remotePaths,
-            String[] mimeTypes,
-            Integer behaviour,
-            Boolean createRemoteFolder,
-            int createdBy
-    ) {
-        Log_OC.d(TAG, "FileUploader.uploadNewFile()");
-        Intent intent = new Intent(context, FileUploader.class);
-
-        intent.putExtra(FileUploader.KEY_ACCOUNT, account);
-        intent.putExtra(FileUploader.KEY_LOCAL_FILE, localPaths);
-        intent.putExtra(FileUploader.KEY_REMOTE_FILE, remotePaths);
-        intent.putExtra(FileUploader.KEY_MIME_TYPE, mimeTypes);
-        intent.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, behaviour);
-        intent.putExtra(FileUploader.KEY_CREATE_REMOTE_FOLDER, createRemoteFolder);
-        intent.putExtra(FileUploader.KEY_CREATED_BY, createdBy);
-
-        context.startService(intent);
-    }
+        /**
+         * Call to update multiple files already uploaded
+         */
+        public void uploadUpdate(Context context, Account account, OCFile[] existingFiles, Integer behaviour,
+                                        Boolean forceOverwrite) {
+            Log_OC.d(TAG, "FileUploader.uploadUpdate()");
+            Intent intent = new Intent(context, FileUploader.class);
 
-    /**
-     * Call to upload a new single file
-     */
-    public static void uploadNewFile(Context context, Account account, String localPath, String remotePath, int
-            behaviour, String mimeType, boolean createRemoteFile, int createdBy) {
-
-        uploadNewFile(
-                context,
-                account,
-                new String[] {localPath},
-                new String[] {remotePath},
-                new String[] {mimeType},
-                behaviour,
-                createRemoteFile,
-                createdBy
-        );
-    }
+            intent.putExtra(FileUploader.KEY_ACCOUNT, account);
+            intent.putExtra(FileUploader.KEY_FILE, existingFiles);
+            intent.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, behaviour);
+            intent.putExtra(FileUploader.KEY_FORCE_OVERWRITE, forceOverwrite);
 
-    /**
-     * Call to update multiple files already uploaded
-     */
-    public static void uploadUpdate(Context context, Account account, OCFile[] existingFiles, Integer behaviour,
-                                    Boolean forceOverwrite) {
-        Log_OC.d(TAG, "FileUploader.uploadUpdate()");
-        Intent intent = new Intent(context, FileUploader.class);
+            context.startService(intent);
+        }
 
-        intent.putExtra(FileUploader.KEY_ACCOUNT, account);
-        intent.putExtra(FileUploader.KEY_FILE, existingFiles);
-        intent.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, behaviour);
-        intent.putExtra(FileUploader.KEY_FORCE_OVERWRITE, forceOverwrite);
+        /**
+         * Call to update a dingle file already uploaded
+         */
+        public void uploadUpdate(Context context, Account account, OCFile existingFile, Integer behaviour,
+                                        Boolean forceOverwrite) {
 
-        context.startService(intent);
-    }
+            uploadUpdate(context, account, new OCFile[]{existingFile}, behaviour, forceOverwrite);
+        }
 
-    /**
-     * Call to update a dingle file already uploaded
-     */
-    public static void uploadUpdate(Context context, Account account, OCFile existingFile, Integer behaviour,
-                                    Boolean forceOverwrite) {
+        public void retryUploadsForAccount(Account account, Context context) {
+            UploadsStorageManager uploadsStorageManager = new UploadsStorageManager(context.getContentResolver());
+            OCUpload[] failedUploads = uploadsStorageManager.getFailedUploads();
+            for ( OCUpload upload: failedUploads){
+                if (upload.getAccountName().equals(account.name) &&
+                        upload.getLastResult() == UploadResult.CREDENTIAL_ERROR ) {
+                    retry(context, account, upload);
+                }
+            }
+        }
+
+        /**
+         * Call to retry upload identified by remotePath
+         */
+        public void retry(Context context, Account account, OCUpload upload) {
+            Log_OC.d(TAG, "FileUploader.retry()");
+            Intent i = new Intent(context, FileUploader.class);
+            i.putExtra(FileUploader.KEY_RETRY, true);
+            if (upload != null) {
+                i.putExtra(FileUploader.KEY_ACCOUNT, account);
+                i.putExtra(FileUploader.KEY_RETRY_UPLOAD, upload);
+            }
+            context.startService(i);
+        }
 
-        uploadUpdate(context, account, new OCFile[]{existingFile}, behaviour, forceOverwrite);
     }
 
-//    /**
-//     * Checks if an ownCloud server version should support chunked uploads.
-//     *
-//     * @param version OwnCloud version instance corresponding to an ownCloud
-//     *                server.
-//     * @return 'True' if the ownCloud server with version supports chunked
-//     * uploads.
-//     * <p/>
-//     * TODO - move to OwnCloudVersion
-//     */
-//    private static boolean chunkedUploadIsSupported(OwnCloudVersion version) {
-//        return (version != null && version.compareTo(OwnCloudVersion.owncloud_v4_5) >= 0);
-//    }
 
     /**
      * Service initialization
@@ -647,14 +645,6 @@ public class FileUploader extends Service
             cancelUploadsForAccount(account);
         }
 
-        // TODO Complete operation to retry the upload
-        /**
-         * Puts upload in upload list and tell FileUploader to upload items in list.
-         */
-        public void retry(Account account, OCUpload upload) {
-            FileUploader.retry(getApplicationContext(), account, upload);
-        }
-
         public void clearListeners() {
             mBoundListeners.clear();
         }

+ 2 - 2
src/com/owncloud/android/operations/SynchronizeFileOperation.java

@@ -283,8 +283,8 @@ public class SynchronizeFileOperation extends SyncOperation {
      * @param file OCFile object representing the file to upload
      */
     private void requestForUpload(OCFile file) {
-
-        FileUploader.uploadUpdate(mContext, mAccount, file, FileUploader.LOCAL_BEHAVIOUR_MOVE, true);
+        FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
+        requester.uploadUpdate(mContext, mAccount, file, FileUploader.LOCAL_BEHAVIOUR_MOVE, true);
 
         mTransferWasRequested = true;
     }

+ 2 - 1
src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java

@@ -76,7 +76,8 @@ public class ConflictsResolveActivity extends FileActivity implements OnConflict
                 return;
         }
 
-        FileUploader.uploadUpdate(this, getAccount(), getFile(), behaviour, forceOverwrite);
+        FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
+        requester.uploadUpdate(this, getAccount(), getFile(), behaviour, forceOverwrite);
         finish();
     }
 

+ 4 - 2
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -734,7 +734,8 @@ public class FileDisplayActivity extends HookActivity implements
 
             int behaviour = (resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE) ? FileUploader
                     .LOCAL_BEHAVIOUR_MOVE : FileUploader.LOCAL_BEHAVIOUR_COPY;
-            FileUploader.uploadNewFile(
+            FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
+            requester.uploadNewFile(
                     this,
                     getAccount(),
                     filePaths,
@@ -818,7 +819,8 @@ public class FileDisplayActivity extends HookActivity implements
 
         int behaviour = (resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE) ? FileUploader.LOCAL_BEHAVIOUR_MOVE :
                 FileUploader.LOCAL_BEHAVIOUR_COPY;
-        FileUploader.uploadNewFile(
+        FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
+        requester.uploadNewFile(
                 this,
                 getAccount(),
                 filePath,

+ 2 - 1
src/com/owncloud/android/ui/activity/UploadListActivity.java

@@ -223,7 +223,8 @@ public class UploadListActivity extends FileActivity implements UploadListFragme
         Log_OC.e(TAG, "onActivityResult " + resultCode);
         if (requestCode == UPDATE_CREDENTIALS_REQUEST_CODE && resultCode == FileActivity.RESULT_OK) {
             // Retry uploads of this account
-            FileUploader.retryUploadsForAccount(getAccount(), this);
+            FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
+            requester.retryUploadsForAccount(getAccount(), this);
         }
     }
 

+ 4 - 2
src/com/owncloud/android/ui/activity/Uploader.java

@@ -561,7 +561,8 @@ public class Uploader extends FileActivity
                     throw new SecurityException();
                 }
 
-                FileUploader.uploadNewFile(
+                FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
+                requester.uploadNewFile(
                         this,
                         getAccount(),
                         local.toArray(new String[local.size()]),
@@ -699,7 +700,8 @@ public class Uploader extends FileActivity
             dismissWaitingCopyDialog();
         }
         if (result != null) {
-            FileUploader.uploadNewFile(
+            FileUploader.UploadRequester requester = new FileUploader.UploadRequester();
+            requester.uploadNewFile(
                     this, getAccount(),
                     result,
                     mRemoteCacheData.get(index),