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

Second step: merging services FileUploader + FileUploadService

masensio 9 жил өмнө
parent
commit
3a908b8c1d

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

@@ -20,28 +20,24 @@
 
 package com.owncloud.android.files;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import android.accounts.Account;
 import android.content.Context;
 import android.view.Menu;
 import android.view.MenuItem;
 
 import com.owncloud.android.R;
-import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.files.services.FileUploadService;
 import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
-import com.owncloud.android.services.OperationsService;
-import com.owncloud.android.files.services.FileUploader;
-import com.owncloud.android.lib.resources.status.CapabilityBooleanType;
 import com.owncloud.android.lib.resources.status.OCCapability;
 import com.owncloud.android.services.OperationsService.OperationsServiceBinder;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * Filters out the file actions available in a given {@link Menu} for a given {@link OCFile}
  * according to the current state of the latest. 

+ 4 - 5
src/com/owncloud/android/files/InstantUploadBroadcastReceiver.java

@@ -32,7 +32,6 @@ import android.provider.MediaStore.Video;
 
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.files.services.FileUploadService;
-import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.utils.FileStorageUtils;
 
@@ -117,7 +116,7 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         i.putExtra(FileUploadService.KEY_ACCOUNT, account);
         i.putExtra(FileUploadService.KEY_LOCAL_FILE, file_path);
         i.putExtra(FileUploadService.KEY_REMOTE_FILE, FileStorageUtils.getInstantUploadFilePath(context, file_name));
-        i.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UploadQuantity.UPLOAD_SINGLE_FILE);
+        i.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UPLOAD_SINGLE_FILE);
         i.putExtra(FileUploadService.KEY_MIME_TYPE, mime_type);
         i.putExtra(FileUploadService.KEY_CREATE_REMOTE_FOLDER, true);
         i.putExtra(FileUploadService.KEY_WIFI_ONLY, instantPictureUploadViaWiFiOnly(context));
@@ -143,9 +142,9 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
 
         if (behaviour.equalsIgnoreCase("NOTHING")) {
             Log_OC.d(TAG, "upload file and do nothing");
-            i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_FORGET);
+            i.putExtra(FileUploadService.KEY_LOCAL_BEHAVIOUR, FileUploadService.LOCAL_BEHAVIOUR_FORGET);
         } else if (behaviour.equalsIgnoreCase("MOVE")) {
-            i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE);
+            i.putExtra(FileUploadService.KEY_LOCAL_BEHAVIOUR, FileUploadService.LOCAL_BEHAVIOUR_MOVE);
             Log_OC.d(TAG, "upload file and move file to oc folder");
         }
         return i;
@@ -187,7 +186,7 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         i.putExtra(FileUploadService.KEY_ACCOUNT, account);
         i.putExtra(FileUploadService.KEY_LOCAL_FILE, file_path);
         i.putExtra(FileUploadService.KEY_REMOTE_FILE, FileStorageUtils.getInstantUploadFilePath(context, file_name));
-        i.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UploadQuantity.UPLOAD_SINGLE_FILE);
+        i.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UPLOAD_SINGLE_FILE);
         i.putExtra(FileUploadService.KEY_MIME_TYPE, mime_type);
         i.putExtra(FileUploadService.KEY_CREATE_REMOTE_FOLDER, true);
         i.putExtra(FileUploadService.KEY_WIFI_ONLY, instantVideoUploadViaWiFiOnly(context));

+ 27 - 27
src/com/owncloud/android/files/services/FileDownloader.java

@@ -20,28 +20,39 @@
 
 package com.owncloud.android.files.services;
 
-import java.io.File;
-import java.util.AbstractList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Vector;
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.OnAccountsUpdateListener;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.app.Service;
+import android.content.Intent;
+import android.os.Binder;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.Message;
+import android.os.Parcelable;
+import android.os.Process;
+import android.support.v4.app.NotificationCompat;
+import android.util.Pair;
 
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.authentication.AuthenticatorActivity;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
 import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
-import com.owncloud.android.notifications.NotificationBuilderWithProgressBar;
-import com.owncloud.android.notifications.NotificationDelayer;
+import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.files.FileUtils;
+import com.owncloud.android.notifications.NotificationBuilderWithProgressBar;
+import com.owncloud.android.notifications.NotificationDelayer;
 import com.owncloud.android.operations.DownloadFileOperation;
 import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
@@ -49,23 +60,12 @@ import com.owncloud.android.ui.preview.PreviewImageActivity;
 import com.owncloud.android.ui.preview.PreviewImageFragment;
 import com.owncloud.android.utils.ErrorMessageAdapter;
 
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.accounts.OnAccountsUpdateListener;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.app.Service;
-import android.content.Intent;
-import android.os.Binder;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.Message;
-import android.os.Parcelable;
-import android.os.Process;
-import android.support.v4.app.NotificationCompat;
-import android.util.Pair;
+import java.io.File;
+import java.util.AbstractList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Vector;
 
 public class FileDownloader extends Service
         implements OnDatatransferProgressListener, OnAccountsUpdateListener {
@@ -353,7 +353,7 @@ public class FileDownloader extends Service
     /**
      * Download worker. Performs the pending downloads in the order they were requested.
 
-     * Created with the Looper of a new thread, started in {@link FileUploader#onCreate()}.
+     * Created with the Looper of a new thread, started in {@link FileUploadService#onCreate()}.
      */
     private static class ServiceHandler extends Handler {
         // don't make it a final class, and don't remove the static ; lint will warn about a

+ 30 - 31
src/com/owncloud/android/files/services/FileUploadService.java

@@ -21,6 +21,8 @@
 package com.owncloud.android.files.services;
 
 import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.OnAccountsUpdateListener;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.app.Service;
@@ -93,7 +95,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
  * However, Intent keys (e.g., KEY_WIFI_ONLY) are obeyed.
  * 
  */
-public class FileUploadService extends Service implements OnDatatransferProgressListener {
+public class FileUploadService extends Service implements OnDatatransferProgressListener,
+        OnAccountsUpdateListener {
 
     private static final String TAG = FileUploadService.class.getSimpleName();
 
@@ -203,18 +206,18 @@ public class FileUploadService extends Service implements OnDatatransferProgress
         }
     }
     
-    public enum UploadQuantity {
-        UPLOAD_SINGLE_FILE(0), UPLOAD_MULTIPLE_FILES(1);
-        private final int value;
-
-        UploadQuantity(int value) {
-            this.value = value;
-        }
-
-        public int getValue() {
-            return value;
-        }
-    };
+//    public enum UploadQuantity {
+//        UPLOAD_SINGLE_FILE(0), UPLOAD_MULTIPLE_FILES(1);
+//        private final int value;
+//
+//        UploadQuantity(int value) {
+//            this.value = value;
+//        }
+//
+//        public int getValue() {
+//            return value;
+//        }
+//    };
 
     private volatile Looper mServiceLooper;
     private volatile ServiceHandler mServiceHandler;
@@ -321,10 +324,8 @@ public class FileUploadService extends Service implements OnDatatransferProgress
         Log_OC.d(TAG, "FileUploadService.retry() called by onCreate()");
         FileUploadService.retry(getApplicationContext());
 
-        // From Uploader
-        // add AccountsUpdatedListener
-//        AccountManager am = AccountManager.get(getApplicationContext());
-//        am.addOnAccountsUpdatedListener(this, null, false);
+        AccountManager am = AccountManager.get(getApplicationContext());
+        am.addOnAccountsUpdatedListener(this, null, false);
     }
 
     /**
@@ -345,10 +346,8 @@ public class FileUploadService extends Service implements OnDatatransferProgress
         //mServiceLooper.quit();
         mUploadExecutor.shutdown();
 
-        // From Uploader
-        // remove AccountsUpdatedListener
-//        AccountManager am = AccountManager.get(getApplicationContext());
-//        am.removeOnAccountsUpdatedListener(this);
+        AccountManager am = AccountManager.get(getApplicationContext());
+        am.removeOnAccountsUpdatedListener(this);
 
         super.onDestroy();
 
@@ -509,15 +508,15 @@ public class FileUploadService extends Service implements OnDatatransferProgress
         return Service.START_NOT_STICKY;
     }
 
-    //    @Override
-//    public void onAccountsUpdated(Account[] accounts) {
-//        // Review current upload, and cancel it if its account doen't exist
-//        if (mCurrentUpload != null &&
-//                !AccountUtils.exists(mCurrentUpload.getAccount(), getApplicationContext())) {
-//            mCurrentUpload.cancel();
-//        }
-//        // The rest of uploads are cancelled when they try to start
-//    }
+    @Override
+    public void onAccountsUpdated(Account[] accounts) {
+        // Review current upload, and cancel it if its account doen't exist
+        if (mCurrentUpload != null &&
+                !AccountUtils.exists(mCurrentUpload.getAccount(), getApplicationContext())) {
+            mCurrentUpload.cancel();
+        }
+        // The rest of uploads are cancelled when they try to start
+    }
 
     /**
      * Provides a binder object that clients can use to perform operations on
@@ -761,7 +760,7 @@ public class FileUploadService extends Service implements OnDatatransferProgress
      * requested.
      *
      * Created with the Looper of a new thread, started in
-     * {@link FileUploader#onCreate()}.
+     * {@link FileUploadService#onCreate()}.
      */
     private static class ServiceHandler extends Handler {
         // don't make it a final class, and don't remove the static ; lint will

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

@@ -22,23 +22,23 @@
 
 package com.owncloud.android.operations;
 
+import android.accounts.Account;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Parcelable;
+
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.files.services.FileUploadService;
 import com.owncloud.android.lib.common.OwnCloudClient;
-import com.owncloud.android.lib.resources.files.RemoteFile;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation;
+import com.owncloud.android.lib.resources.files.RemoteFile;
 import com.owncloud.android.operations.common.SyncOperation;
 import com.owncloud.android.utils.FileStorageUtils;
 
-import android.accounts.Account;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Parcelable;
-
 /**
  * Remote operation performing the read of remote file in the ownCloud server.
  */
@@ -293,7 +293,7 @@ public class SynchronizeFileOperation extends SyncOperation {
         in the database when the FileUploader service gets it!
         i.putExtra(FileUploader.KEY_LOCAL_FILE, localFile.getStoragePath());*/
         i.putExtra(FileUploadService.KEY_UPLOAD_TYPE,
-                FileUploadService.UploadQuantity.UPLOAD_SINGLE_FILE);
+                FileUploadService.UPLOAD_SINGLE_FILE);
         i.putExtra(FileUploadService.KEY_FORCE_OVERWRITE, true);
         mContext.startService(i);
         mTransferWasRequested = true;

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

@@ -67,7 +67,7 @@ public class ConflictsResolveActivity extends FileActivity implements OnConflict
                 // use server version -> delete local, request download
                 Intent intent = new Intent(this, FileDownloader.class);
                 intent.putExtra(FileDownloader.EXTRA_ACCOUNT, getAccount());
-                intent.putExtra(FileDownloader.EXTRA_FILE, (Parcelable) getFile());
+                intent.putExtra(FileDownloader.EXTRA_FILE, getFile());
                 startService(intent);
                 finish();
                 return;
@@ -76,8 +76,8 @@ public class ConflictsResolveActivity extends FileActivity implements OnConflict
                 return;
         }
         i.putExtra(FileUploadService.KEY_ACCOUNT, getAccount());
-        i.putExtra(FileUploadService.KEY_FILE, (Parcelable)getFile());
-        i.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UploadQuantity.UPLOAD_SINGLE_FILE);
+        i.putExtra(FileUploadService.KEY_FILE, getFile());
+        i.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UPLOAD_SINGLE_FILE);
         
         startService(i);
         finish();

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

@@ -66,7 +66,6 @@ import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.files.services.FileUploadService;
 import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
-import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
@@ -688,7 +687,7 @@ public class FileDisplayActivity extends HookActivity implements
             i.putExtra(FileUploadService.KEY_LOCAL_FILE, filePaths);
             i.putExtra(FileUploadService.KEY_REMOTE_FILE, remotePaths);
             i.putExtra(FileUploadService.KEY_UPLOAD_TYPE,
-                    FileUploadService.UploadQuantity.UPLOAD_MULTIPLE_FILES);
+                    FileUploadService.UPLOAD_MULTIPLE_FILES);
             if (resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)
                 i.putExtra(FileUploadService.KEY_LOCAL_BEHAVIOUR, FileUploadService.LocalBehaviour.LOCAL_BEHAVIOUR_MOVE);
             startService(i);
@@ -768,7 +767,7 @@ public class FileDisplayActivity extends HookActivity implements
         i.putExtra(FileUploadService.KEY_REMOTE_FILE, remotePath);
         i.putExtra(FileUploadService.KEY_MIME_TYPE, mimeType);
         i.putExtra(FileUploadService.KEY_UPLOAD_TYPE,
-                FileUploadService.UploadQuantity.UPLOAD_SINGLE_FILE);
+                FileUploadService.UPLOAD_SINGLE_FILE);
         if (resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE) {
             i.putExtra(FileUploadService.KEY_LOCAL_BEHAVIOUR,
                     FileUploadService.LocalBehaviour.LOCAL_BEHAVIOUR_MOVE);
@@ -1077,7 +1076,7 @@ public class FileDisplayActivity extends HookActivity implements
 
                 if (sameAccount && isDescendant) {
                     String linkedToRemotePath =
-                            intent.getStringExtra(FileUploader.EXTRA_LINKED_TO_PATH);
+                            intent.getStringExtra(FileUploadService.EXTRA_LINKED_TO_PATH);
                     if (linkedToRemotePath == null || isAscendant(linkedToRemotePath)) {
                         refreshListOfFilesFragment();
                     }

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

@@ -19,8 +19,6 @@
  */
 package com.owncloud.android.ui.activity;
 
-import java.io.File;
-
 import android.content.ActivityNotFoundException;
 import android.content.ComponentName;
 import android.content.Intent;
@@ -34,7 +32,6 @@ import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.widget.Toast;
 
-
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.UploadsStorageManager;
@@ -45,6 +42,8 @@ import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.fragment.UploadListFragment;
 import com.owncloud.android.ui.preview.PreviewImageActivity;
 
+import java.io.File;
+
 /**
  * Activity listing pending, active, and completed uploads. User can delete
  * completed uploads from view. Content of this list of coming from

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

@@ -569,7 +569,7 @@ public class Uploader extends FileActivity
 
                 Intent intent = new Intent(getApplicationContext(), FileUploadService.class);
                 intent.putExtra(FileUploadService.KEY_UPLOAD_TYPE,
-                        FileUploadService.UploadQuantity.UPLOAD_MULTIPLE_FILES);
+                        FileUploadService.UPLOAD_MULTIPLE_FILES);
                 intent.putExtra(FileUploadService.KEY_LOCAL_FILE,
                         local.toArray(new String[local.size()]));
                 intent.putExtra(FileUploadService.KEY_REMOTE_FILE,
@@ -705,7 +705,7 @@ public class Uploader extends FileActivity
         if (result != null) {
             Intent intent = new Intent(getApplicationContext(), FileUploadService.class);
             intent.putExtra(FileUploadService.KEY_UPLOAD_TYPE,
-                    FileUploadService.UploadQuantity.UPLOAD_SINGLE_FILE);
+                    FileUploadService.UPLOAD_SINGLE_FILE);
             intent.putExtra(FileUploadService.KEY_LOCAL_FILE, result);
             intent.putExtra(FileUploadService.KEY_REMOTE_FILE, mRemoteCacheData.get(index));
             intent.putExtra(FileUploadService.KEY_ACCOUNT, getAccount());