Просмотр исходного кода

refactoring, commenting, understanding code. added TODO for FileUploadService.

Luke Owncloud 10 лет назад
Родитель
Сommit
64827cf4ad

+ 0 - 3
AndroidManifest.xml

@@ -174,9 +174,6 @@
                 <action android:name="android.hardware.action.NEW_VIDEO" />
                 <data android:mimeType="video/*" />
             </intent-filter>
-            <intent-filter>
-                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
-            </intent-filter>
         </receiver>
         <receiver android:name=".files.BootupBroadcastReceiver">
             <intent-filter>

+ 4 - 4
src/com/owncloud/android/db/UploadDbHandler.java

@@ -37,7 +37,7 @@ public class UploadDbHandler {
     private SQLiteDatabase mDB;
     private OpenerHelper mHelper;
     private final String mDatabaseName;
-    private final int mDatabaseVersion = 4;
+    private final int mDatabaseVersion = 3;
 
     static private final String TABLE_UPLOAD = "list_of_uploads";
 
@@ -63,13 +63,13 @@ public class UploadDbHandler {
     }
 
     /**
-     * Store a file persistently for upload.
+     * Store a file persistently (to be uploaded later).
      * @param filepath local file path to file
      * @param account account for uploading
      * @param message optional message. can be null.
      * @return false if an error occurred, else true. 
      */
-    public boolean putFileForLater(String filepath, String account, String message) {
+    public boolean storeFile(String filepath, String account, String message) {
         ContentValues cv = new ContentValues();
         cv.put("path", filepath);
         cv.put("account", account);
@@ -120,7 +120,7 @@ public class UploadDbHandler {
      * @param localPath
      * @return true when one or more pending files was removed
      */
-    public boolean removePendingFile(String localPath) {
+    public boolean removeFile(String localPath) {
         long result = mDB.delete(TABLE_UPLOAD, "path = ?", new String[] { localPath });
         Log_OC.d(TABLE_UPLOAD, "delete returns with: " + result + " for file: " + localPath);
         return result != 0;

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

@@ -29,8 +29,8 @@ import com.owncloud.android.R;
 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.FileUploader;
-import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
+import com.owncloud.android.files.services.FileUploadService;
+import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 
 /**
@@ -52,7 +52,7 @@ public class FileMenuFilter {
      * @param targetFile        {@link OCFile} target of the action to filter in the {@link Menu}.
      * @param account           ownCloud {@link Account} holding targetFile.
      * @param cg                Accessor to app components, needed to get access the 
-     *                          {@link FileUploader} and {@link FileDownloader} services.
+     *                          {@link FileUploadService} and {@link FileDownloader} services.
      * @param context           Android {@link Context}, needed to access build setup resources.
      */
     public FileMenuFilter(OCFile targetFile, Account account, ComponentsGetter cg, Context context) {

+ 1 - 1
src/com/owncloud/android/files/FileOperationsHelper.java

@@ -30,7 +30,7 @@ import android.widget.Toast;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
-import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
+import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
 
 import com.owncloud.android.lib.common.accounts.AccountUtils.Constants;
 import com.owncloud.android.lib.common.network.WebdavUtils;

+ 73 - 90
src/com/owncloud/android/files/InstantUploadBroadcastReceiver.java

@@ -18,16 +18,6 @@
 
 package com.owncloud.android.files;
 
-import java.io.File;
-
-import com.owncloud.android.MainApp;
-import com.owncloud.android.authentication.AccountUtils;
-import com.owncloud.android.db.UploadDbHandler;
-import com.owncloud.android.files.services.FileUploader;
-import com.owncloud.android.lib.common.utils.Log_OC;
-import com.owncloud.android.utils.FileStorageUtils;
-
-
 import android.accounts.Account;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -38,7 +28,12 @@ import android.net.NetworkInfo.State;
 import android.preference.PreferenceManager;
 import android.provider.MediaStore.Images;
 import android.provider.MediaStore.Video;
-import android.webkit.MimeTypeMap;
+
+import com.owncloud.android.authentication.AccountUtils;
+import com.owncloud.android.db.UploadDbHandler;
+import com.owncloud.android.files.services.FileUploadService;
+import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.utils.FileStorageUtils;
 
 
 public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
@@ -56,9 +51,7 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
     @Override
     public void onReceive(Context context, Intent intent) {
         Log_OC.d(TAG, "Received: " + intent.getAction());
-        if (intent.getAction().equals(android.net.ConnectivityManager.CONNECTIVITY_ACTION)) {
-            handleConnectivityAction(context, intent);
-        }else if (intent.getAction().equals(NEW_PHOTO_ACTION_UNOFFICIAL)) {
+        if (intent.getAction().equals(NEW_PHOTO_ACTION_UNOFFICIAL)) {
             handleNewPictureAction(context, intent); 
             Log_OC.d(TAG, "UNOFFICIAL processed: com.android.camera.NEW_PICTURE");
         } else if (intent.getAction().equals(NEW_PHOTO_ACTION)) {
@@ -104,22 +97,14 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         
         Log_OC.d(TAG, file_path + "");
 
-        // save always temporally the picture to upload
-        UploadDbHandler db = new UploadDbHandler(context);
-        db.putFileForLater(file_path, account.name, null);
-        db.close();
-
-        if (!isOnline(context) || (instantPictureUploadViaWiFiOnly(context) && !isConnectedViaWiFi(context))) {
-            return;
-        }
-
-        Intent i = new Intent(context, FileUploader.class);
-        i.putExtra(FileUploader.KEY_ACCOUNT, account);
-        i.putExtra(FileUploader.KEY_LOCAL_FILE, file_path);
-        i.putExtra(FileUploader.KEY_REMOTE_FILE, FileStorageUtils.getInstantUploadFilePath(context, file_name));
-        i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
-        i.putExtra(FileUploader.KEY_MIME_TYPE, mime_type);
-        i.putExtra(FileUploader.KEY_INSTANT_UPLOAD, true);
+        Intent i = new Intent(context, FileUploadService.class);
+        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.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));
         context.startService(i);
     }
 
@@ -154,69 +139,67 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         c.close();
         Log_OC.d(TAG, file_path + "");
 
-        if (!isOnline(context) || (instantVideoUploadViaWiFiOnly(context) && !isConnectedViaWiFi(context))) {
-            return;
-        }
-
-        Intent i = new Intent(context, FileUploader.class);
-        i.putExtra(FileUploader.KEY_ACCOUNT, account);
-        i.putExtra(FileUploader.KEY_LOCAL_FILE, file_path);
-        i.putExtra(FileUploader.KEY_REMOTE_FILE, FileStorageUtils.getInstantUploadFilePath(context, file_name));
-        i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
-        i.putExtra(FileUploader.KEY_MIME_TYPE, mime_type);
-        i.putExtra(FileUploader.KEY_INSTANT_UPLOAD, true);
+        Intent i = new Intent(context, FileUploadService.class);
+        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.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));
         context.startService(i);
-
     }
 
-    private void handleConnectivityAction(Context context, Intent intent) {
-        if (!instantPictureUploadEnabled(context)) {
-            Log_OC.d(TAG, "Instant upload disabled, don't upload anything");
-            return;
-        }
-
-        if (!intent.hasExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY)
-                && isOnline(context)
-                && (!instantPictureUploadViaWiFiOnly(context) || (instantPictureUploadViaWiFiOnly(context) == isConnectedViaWiFi(context) == true))) {
-            UploadDbHandler db = new UploadDbHandler(context);
-            Cursor c = db.getAwaitingFiles();
-            if (c.moveToFirst()) {
-                do {
-                    String account_name = c.getString(c.getColumnIndex("account"));
-                    String file_path = c.getString(c.getColumnIndex("path"));
-                    File f = new File(file_path);
-                    if (f.exists()) {
-                        Account account = new Account(account_name, MainApp.getAccountType());
-
-                        String mimeType = null;
-                        try {
-                            mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
-                                    f.getName().substring(f.getName().lastIndexOf('.') + 1));
-
-                        } catch (Throwable e) {
-                            Log_OC.e(TAG, "Trying to find out MIME type of a file without extension: " + f.getName());
-                        }
-                        if (mimeType == null)
-                            mimeType = "application/octet-stream";
-
-                        Intent i = new Intent(context, FileUploader.class);
-                        i.putExtra(FileUploader.KEY_ACCOUNT, account);
-                        i.putExtra(FileUploader.KEY_LOCAL_FILE, file_path);
-                        i.putExtra(FileUploader.KEY_REMOTE_FILE, FileStorageUtils.getInstantUploadFilePath(context, f.getName()));
-                        i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
-                        i.putExtra(FileUploader.KEY_INSTANT_UPLOAD, true);
-                        context.startService(i);
-
-                    } else {
-                        Log_OC.w(TAG, "Instant upload file " + f.getAbsolutePath() + " dont exist anymore");
-                    }
-                } while (c.moveToNext());
-            }
-            c.close();
-            db.close();
-        }
-
-    }
+    //obsolete. delete.
+//    private void handleConnectivityAction(Context context, Intent intent) {
+//        if (!instantPictureUploadEnabled(context)) {
+//            Log_OC.d(TAG, "Instant upload disabled, don't upload anything");
+//            return;
+//        }
+//
+//        if (!intent.hasExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY)
+//                && isOnline(context)
+//                && (!instantPictureUploadViaWiFiOnly(context) || (instantPictureUploadViaWiFiOnly(context) == isConnectedViaWiFi(context) == true))) {
+//            UploadDbHandler db = new UploadDbHandler(context);
+//            Cursor c = db.getAwaitingFiles();
+//            if (c.moveToFirst()) {
+//                do {
+//                    String account_name = c.getString(c.getColumnIndex("account"));
+//                    String file_path = c.getString(c.getColumnIndex("path"));
+//                    File f = new File(file_path);
+//                    if (f.exists()) {
+//                        Account account = new Account(account_name, MainApp.getAccountType());
+//
+//                        String mimeType = null;
+//                        try {
+//                            mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
+//                                    f.getName().substring(f.getName().lastIndexOf('.') + 1));
+//
+//                        } catch (Throwable e) {
+//                            Log_OC.e(TAG, "Trying to find out MIME type of a file without extension: " + f.getName());
+//                        }
+//                        if (mimeType == null)
+//                            mimeType = "application/octet-stream";
+//
+//                        Intent i = new Intent(context, FileUploader.class);
+//                        i.putExtra(FileUploader.KEY_ACCOUNT, account);
+//                        i.putExtra(FileUploader.KEY_LOCAL_FILE, file_path);
+//                        i.putExtra(FileUploader.KEY_REMOTE_FILE, FileStorageUtils.getInstantUploadFilePath(context, f.getName()));
+//                        i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
+//                        i.putExtra(FileUploader.KEY_CREATE_REMOTE_FOLDER, true);
+//                        i.putExtra(FileUploader.KEY_WIFI_ONLY, instantPictureUploadViaWiFiOnly(context));
+//                        context.startService(i);
+//
+//                    } else {
+//                        Log_OC.w(TAG, "Instant upload file " + f.getAbsolutePath() + " dont exist anymore");
+//                    }
+//                } while (c.moveToNext());
+//            }
+//            c.close();
+//            db.close();
+//        }
+//
+//    }
 
     public static boolean isOnline(Context context) {
         ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

+ 92 - 41
src/com/owncloud/android/files/services/FileUploader.java → src/com/owncloud/android/files/services/FileUploadService.java

@@ -34,7 +34,11 @@ import android.accounts.AccountsException;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.app.Service;
+import android.content.BroadcastReceiver;
+import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
 import android.os.Binder;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -61,7 +65,6 @@ 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.ExistenceCheckRemoteOperation;
-import com.owncloud.android.lib.resources.files.FileUtils;
 import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation;
 import com.owncloud.android.lib.resources.files.RemoteFile;
 import com.owncloud.android.lib.resources.status.OwnCloudVersion;
@@ -75,8 +78,14 @@ import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.utils.ErrorMessageAdapter;
 
 
-
-public class FileUploader extends Service {
+/**
+ * Service for uploading files. Invoke using context.startService(...).
+ * This service retries until upload succeeded. Files to be uploaded are stored persistent using {@link UploadDbHandler}.
+ * 
+ * @author LukeOwncloud
+ *
+ */
+public class FileUploadService extends Service {
 
     private static final String UPLOAD_FINISH_MESSAGE = "UPLOAD_FINISH";
     public static final String EXTRA_UPLOAD_RESULT = "RESULT";
@@ -94,7 +103,8 @@ public class FileUploader extends Service {
 
     public static final String KEY_UPLOAD_TYPE = "UPLOAD_TYPE";
     public static final String KEY_FORCE_OVERWRITE = "KEY_FORCE_OVERWRITE";
-    public static final String KEY_INSTANT_UPLOAD = "INSTANT_UPLOAD";
+    public static final String KEY_CREATE_REMOTE_FOLDER = "CREATE_REMOTE_FOLDER";
+    public static final String KEY_WIFI_ONLY = "WIFI_ONLY";
     public static final String KEY_LOCAL_BEHAVIOUR = "BEHAVIOUR";
 
     public static final int LOCAL_BEHAVIOUR_COPY = 0;
@@ -104,11 +114,12 @@ public class FileUploader extends Service {
     public static final int UPLOAD_SINGLE_FILE = 0;
     public static final int UPLOAD_MULTIPLE_FILES = 1;
 
-    private static final String TAG = FileUploader.class.getSimpleName();
+    private static final String TAG = FileUploadService.class.getSimpleName();
 
     private Looper mServiceLooper;
     private ServiceHandler mServiceHandler;
     private IBinder mBinder;
+    private ConnectivityChangeReceiver mConnectivityChangeReceiver;
     private OwnCloudClient mUploadClient = null;
     private Account mLastAccount = null;
     private FileDataStorageManager mStorageManager;
@@ -118,11 +129,10 @@ public class FileUploader extends Service {
 
     private NotificationManager mNotificationManager;
     private NotificationCompat.Builder mNotificationBuilder;
-    private int mLastPercent;
 
     
     public static String getUploadFinishMessage() {
-        return FileUploader.class.getName().toString() + UPLOAD_FINISH_MESSAGE;
+        return FileUploadService.class.getName().toString() + UPLOAD_FINISH_MESSAGE;
     }
     
     /**
@@ -164,8 +174,29 @@ public class FileUploader extends Service {
         mServiceLooper = thread.getLooper();
         mServiceHandler = new ServiceHandler(mServiceLooper, this);
         mBinder = new FileUploaderBinder();
+        mConnectivityChangeReceiver = new ConnectivityChangeReceiver();
+        registerReceiver(
+                         mConnectivityChangeReceiver,
+                         new IntentFilter(
+                               ConnectivityManager.CONNECTIVITY_ACTION));
     }
 
+    public class ConnectivityChangeReceiver
+                     extends BroadcastReceiver {
+
+        @Override
+        public void onReceive(Context arg0, Intent arg1) {
+            //upload pending wifi only files.
+            onStartCommand(null, 0, 0);
+        }
+        
+    }
+    @Override
+    public void onDestroy() {
+        unregisterReceiver(mConnectivityChangeReceiver);
+        super.onDestroy();
+    }
+    
     /**
      * Entry point to add one or several files to the queue of uploads.
      * 
@@ -175,6 +206,23 @@ public class FileUploader extends Service {
      */
     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {
+        if(intent == null) {
+            //service was restarted by OS (after return START_STICKY and kill service)
+            //or connectivity change was detected. ==> check persistent upload list.
+        }
+        
+        //TODO:
+//        if (intent.hasExtra(KEY_FILE)) {
+//            files = (OCFile[]) intent.getParcelableArrayExtra(KEY_FILE); 
+//
+//        } else {
+//            localPaths = intent.getStringArrayExtra(KEY_LOCAL_FILE);
+//            remotePaths = intent.getStringArrayExtra(KEY_REMOTE_FILE);
+//            mimeTypes = intent.getStringArrayExtra(KEY_MIME_TYPE);
+//        CREATE files from there values!
+//        }
+        //now work with files.
+            
         if (!intent.hasExtra(KEY_ACCOUNT) || !intent.hasExtra(KEY_UPLOAD_TYPE)
                 || !(intent.hasExtra(KEY_LOCAL_FILE) || intent.hasExtra(KEY_FILE))) {
             Log_OC.e(TAG, "Not enough information provided in intent");
@@ -223,7 +271,8 @@ public class FileUploader extends Service {
         FileDataStorageManager storageManager = new FileDataStorageManager(account, getContentResolver());
 
         boolean forceOverwrite = intent.getBooleanExtra(KEY_FORCE_OVERWRITE, false);
-        boolean isInstant = intent.getBooleanExtra(KEY_INSTANT_UPLOAD, false);
+        boolean isCreateRemoteFolder = intent.getBooleanExtra(KEY_CREATE_REMOTE_FOLDER, false);
+        boolean isUseWifiOnly = intent.getBooleanExtra(KEY_WIFI_ONLY, true);
         int localAction = intent.getIntExtra(KEY_LOCAL_BEHAVIOUR, LOCAL_BEHAVIOUR_COPY);
         
         if (intent.hasExtra(KEY_FILE) && files == null) {
@@ -243,7 +292,7 @@ public class FileUploader extends Service {
                 Log_OC.e(TAG, "Different number of remote paths and local paths!");
                 return Service.START_NOT_STICKY;
             }
-
+            
             files = new OCFile[localPaths.length];
             for (int i = 0; i < localPaths.length; i++) {
                 files[i] = obtainNewOCFileToUpload(remotePaths[i], localPaths[i], ((mimeTypes != null) ? mimeTypes[i]
@@ -254,21 +303,28 @@ public class FileUploader extends Service {
                 }
             }
         }
+        
+        // save always persistently path of upload, so it can be retried if failed.
+        UploadDbHandler db = new UploadDbHandler(this.getBaseContext());
+        for (int i = 0; i < localPaths.length; i++) {
+            db.storeFile(localPaths[i], account.name, null);                    
+        }
+        db.close();
 
         AccountManager aMgr = AccountManager.get(this);
         String version = aMgr.getUserData(account, Constants.KEY_OC_VERSION);
         OwnCloudVersion ocv = new OwnCloudVersion(version);
         
-        boolean chunked = FileUploader.chunkedUploadIsSupported(ocv);
+        boolean chunked = FileUploadService.chunkedUploadIsSupported(ocv);
         AbstractList<String> requestedUploads = new Vector<String>();
         String uploadKey = null;
         UploadFileOperation newUpload = null;
         try {
             for (int i = 0; i < files.length; i++) {
                 uploadKey = buildRemoteName(account, files[i].getRemotePath());
-                newUpload = new UploadFileOperation(account, files[i], chunked, isInstant, forceOverwrite, localAction, 
+                newUpload = new UploadFileOperation(account, files[i], chunked, forceOverwrite, localAction, 
                         getApplicationContext());
-                if (isInstant) {
+                if (isCreateRemoteFolder) {
                     newUpload.setRemoteFolderToBeCreated();
                 }
                 mPendingUploads.putIfAbsent(uploadKey, newUpload); // Grants that the file only upload once time
@@ -438,14 +494,14 @@ public class FileUploader extends Service {
      * 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
         // warn about a possible memory leak
-        FileUploader mService;
+        FileUploadService mService;
 
-        public ServiceHandler(Looper looper, FileUploader service) {
+        public ServiceHandler(Looper looper, FileUploadService service) {
             super(looper);
             if (service == null)
                 throw new IllegalArgumentException("Received invalid NULL in parameter 'service'");
@@ -682,7 +738,6 @@ public class FileUploader extends Service {
      */
     private void notifyUploadStart(UploadFileOperation upload) {
         // / create status notification with a progress bar
-        mLastPercent = 0;
         mNotificationBuilder = 
                 NotificationBuilderWithProgressBar.newNotificationBuilderWithProgressBar(this);
         mNotificationBuilder
@@ -768,33 +823,29 @@ public class FileUploader extends Service {
                     // grant that future retries on the same account will get the fresh credentials
             } else {
                 mNotificationBuilder.setContentText(content);
-    
-                if (upload.isInstant()) {
-                    UploadDbHandler db = null;
-                    try {
-                        db = new UploadDbHandler(this.getBaseContext());
-                        String message = uploadResult.getLogMessage() + " errorCode: " +
-                                uploadResult.getCode();
-                        Log_OC.e(TAG, message + " Http-Code: " + uploadResult.getHttpCode());
-                        if (uploadResult.getCode() == ResultCode.QUOTA_EXCEEDED) {
-                            //message = getString(R.string.failed_upload_quota_exceeded_text);
-                            if (db.updateFileState(
-                                    upload.getOriginalStoragePath(), 
-                                    UploadDbHandler.UploadStatus.UPLOAD_STATUS_UPLOAD_FAILED,
-                                    message) == 0) {
-                                db.putFileForLater(
-                                        upload.getOriginalStoragePath(), 
-                                        upload.getAccount().name, 
-                                        message
-                                );
-                            }
-                        }
-                    } finally {
-                        if (db != null) {
-                            db.close();
+
+                UploadDbHandler db = null;
+                try {
+                    db = new UploadDbHandler(this.getBaseContext());
+                    String message = uploadResult.getLogMessage() + " errorCode: " + uploadResult.getCode();
+                    Log_OC.e(TAG, message + " Http-Code: " + uploadResult.getHttpCode());
+                    if (uploadResult.getCode() == ResultCode.QUOTA_EXCEEDED) {
+                        // message =
+                        // getString(R.string.failed_upload_quota_exceeded_text);
+                        int updatedFiles = db.updateFileState(upload.getOriginalStoragePath(),
+                                UploadDbHandler.UploadStatus.UPLOAD_STATUS_UPLOAD_FAILED, message);
+                        if (updatedFiles == 0) { // update failed
+                            db.storeFile(upload.getOriginalStoragePath(), upload.getAccount().name, message);
                         }
+                    } else {
+                        // TODO: handle other results
+                    }
+                } finally {
+                    if (db != null) {
+                        db.close();
                     }
                 }
+
             }
             
             mNotificationBuilder.setContentText(content);
@@ -803,7 +854,7 @@ public class FileUploader extends Service {
             if (uploadResult.isSuccess()) {
                 
                 UploadDbHandler db = new UploadDbHandler(this.getBaseContext());
-                db.removePendingFile(mCurrentUpload.getOriginalStoragePath());
+                db.removeFile(mCurrentUpload.getOriginalStoragePath());
                 db.close();
 
                 // remove success notification, with a delay of 2 seconds

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

@@ -20,7 +20,7 @@ package com.owncloud.android.operations;
 
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
-import com.owncloud.android.files.services.FileUploader;
+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;
@@ -207,13 +207,13 @@ public class SynchronizeFileOperation extends SyncOperation {
      * @param file     OCFile object representing the file to upload
      */
     private void requestForUpload(OCFile file) {
-        Intent i = new Intent(mContext, FileUploader.class);
-        i.putExtra(FileUploader.KEY_ACCOUNT, mAccount);
-        i.putExtra(FileUploader.KEY_FILE, file);
+        Intent i = new Intent(mContext, FileUploadService.class);
+        i.putExtra(FileUploadService.KEY_ACCOUNT, mAccount);
+        i.putExtra(FileUploadService.KEY_FILE, file);
         /*i.putExtra(FileUploader.KEY_REMOTE_FILE, mRemotePath);    // doing this we would lose the value of keepInSync in the road, and maybe it's not updated in the database when the FileUploader service gets it!  
         i.putExtra(FileUploader.KEY_LOCAL_FILE, localFile.getStoragePath());*/
-        i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
-        i.putExtra(FileUploader.KEY_FORCE_OVERWRITE, true);
+        i.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UPLOAD_SINGLE_FILE);
+        i.putExtra(FileUploadService.KEY_FORCE_OVERWRITE, true);
         mContext.startService(i);
         mTransferWasRequested = true;
     }

+ 6 - 12
src/com/owncloud/android/operations/UploadFileOperation.java

@@ -32,7 +32,7 @@ import org.apache.commons.httpclient.methods.PutMethod;
 import org.apache.commons.httpclient.methods.RequestEntity;
 
 import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.files.services.FileUploader;
+import com.owncloud.android.files.services.FileUploadService;
 import com.owncloud.android.lib.common.network.ProgressiveDataTransferer;
 import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
 import com.owncloud.android.lib.common.OwnCloudClient;
@@ -51,7 +51,8 @@ import android.content.Context;
 
 
 /**
- * Remote operation performing the upload of a file to an ownCloud server
+ * Remote operation performing the upload of a file to an ownCloud server.
+ * No conditions are checked, just upload performed, which might fail.
  * 
  * @author David A. Velasco
  */
@@ -64,10 +65,9 @@ public class UploadFileOperation extends RemoteOperation {
     private OCFile mOldFile;
     private String mRemotePath = null;
     private boolean mChunked = false;
-    private boolean mIsInstant = false;
     private boolean mRemoteFolderToBeCreated = false;
     private boolean mForceOverwrite = false;
-    private int mLocalBehaviour = FileUploader.LOCAL_BEHAVIOUR_COPY;
+    private int mLocalBehaviour = FileUploadService.LOCAL_BEHAVIOUR_COPY;
     private boolean mWasRenamed = false;
     private String mOriginalFileName = null;
     private String mOriginalStoragePath = null;
@@ -84,7 +84,6 @@ public class UploadFileOperation extends RemoteOperation {
     public UploadFileOperation( Account account,
                                 OCFile file,
                                 boolean chunked,
-                                boolean isInstant, 
                                 boolean forceOverwrite,
                                 int localBehaviour, 
                                 Context context) {
@@ -103,7 +102,6 @@ public class UploadFileOperation extends RemoteOperation {
         mFile = file;
         mRemotePath = file.getRemotePath();
         mChunked = chunked;
-        mIsInstant = isInstant;
         mForceOverwrite = forceOverwrite;
         mLocalBehaviour = localBehaviour;
         mOriginalStoragePath = mFile.getStoragePath();
@@ -143,10 +141,6 @@ public class UploadFileOperation extends RemoteOperation {
         return mFile.getMimetype();
     }
 
-    public boolean isInstant() {
-        return mIsInstant;
-    }
-
     public boolean isRemoteFolderToBeCreated() {
         return mRemoteFolderToBeCreated;
     }
@@ -210,7 +204,7 @@ public class UploadFileOperation extends RemoteOperation {
 
             // check location of local file; if not the expected, copy to a
             // temporal file before upload (if COPY is the expected behaviour)
-            if (!mOriginalStoragePath.equals(expectedPath) && mLocalBehaviour == FileUploader.LOCAL_BEHAVIOUR_COPY) {
+            if (!mOriginalStoragePath.equals(expectedPath) && mLocalBehaviour == FileUploadService.LOCAL_BEHAVIOUR_COPY) {
 
                 if (FileStorageUtils.getUsableSpace(mAccount.name) < originalFile.length()) {
                     result = new RemoteOperationResult(ResultCode.LOCAL_STORAGE_FULL);
@@ -286,7 +280,7 @@ public class UploadFileOperation extends RemoteOperation {
             /// move local temporal file or original file to its corresponding
             // location in the ownCloud local folder
             if (result.isSuccess()) {
-                if (mLocalBehaviour == FileUploader.LOCAL_BEHAVIOUR_FORGET) {
+                if (mLocalBehaviour == FileUploadService.LOCAL_BEHAVIOUR_FORGET) {
                     mFile.setStoragePath(null);
 
                 } else {

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

@@ -21,7 +21,7 @@ package com.owncloud.android.ui.activity;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.files.FileOperationsHelper;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
-import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
+import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
 
 public interface ComponentsGetter {
 

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

@@ -20,7 +20,7 @@ package com.owncloud.android.ui.activity;
 
 import com.actionbarsherlock.app.ActionBar;
 import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.files.services.FileUploader;
+import com.owncloud.android.files.services.FileUploadService;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog;
 import com.owncloud.android.ui.dialog.ConflictsResolveDialog.Decision;
@@ -50,25 +50,25 @@ public class ConflictsResolveActivity extends FileActivity implements OnConflict
 
     @Override
     public void conflictDecisionMade(Decision decision) {
-        Intent i = new Intent(getApplicationContext(), FileUploader.class);
+        Intent i = new Intent(getApplicationContext(), FileUploadService.class);
         
         switch (decision) {
             case CANCEL:
                 finish();
                 return;
             case OVERWRITE:
-                i.putExtra(FileUploader.KEY_FORCE_OVERWRITE, true);
+                i.putExtra(FileUploadService.KEY_FORCE_OVERWRITE, true);
                 break;
             case KEEP_BOTH:
-                i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE);
+                i.putExtra(FileUploadService.KEY_LOCAL_BEHAVIOUR, FileUploadService.LOCAL_BEHAVIOUR_MOVE);
                 break;
             default:
                 Log_OC.wtf(TAG, "Unhandled conflict decision " + decision);
                 return;
         }
-        i.putExtra(FileUploader.KEY_ACCOUNT, getAccount());
-        i.putExtra(FileUploader.KEY_FILE, getFile());
-        i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
+        i.putExtra(FileUploadService.KEY_ACCOUNT, getAccount());
+        i.putExtra(FileUploadService.KEY_FILE, getFile());
+        i.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UPLOAD_SINGLE_FILE);
         
         startService(i);
         finish();

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

@@ -45,9 +45,9 @@ import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.FileOperationsHelper;
 import com.owncloud.android.files.services.FileDownloader;
-import com.owncloud.android.files.services.FileUploader;
+import com.owncloud.android.files.services.FileUploadService;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
-import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
+import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
 import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
@@ -155,7 +155,7 @@ implements OnRemoteOperationListener, ComponentsGetter {
         }
         mUploadServiceConnection = newTransferenceServiceConnection();
         if (mUploadServiceConnection != null) {
-            bindService(new Intent(this, FileUploader.class), mUploadServiceConnection, Context.BIND_AUTO_CREATE);
+            bindService(new Intent(this, FileUploadService.class), mUploadServiceConnection, Context.BIND_AUTO_CREATE);
         }
         
     }

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

@@ -66,8 +66,8 @@ import com.owncloud.android.R;
 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.FileUploader;
-import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
+import com.owncloud.android.files.services.FileUploadService;
+import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
 import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.OwnCloudClientManagerFactory;
@@ -634,13 +634,13 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
                 remotePaths[j] = remotePathBase + (new File(filePaths[j])).getName();
             }
 
-            Intent i = new Intent(this, FileUploader.class);
-            i.putExtra(FileUploader.KEY_ACCOUNT, getAccount());
-            i.putExtra(FileUploader.KEY_LOCAL_FILE, filePaths);
-            i.putExtra(FileUploader.KEY_REMOTE_FILE, remotePaths);
-            i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_MULTIPLE_FILES);
+            Intent i = new Intent(this, FileUploadService.class);
+            i.putExtra(FileUploadService.KEY_ACCOUNT, getAccount());
+            i.putExtra(FileUploadService.KEY_LOCAL_FILE, filePaths);
+            i.putExtra(FileUploadService.KEY_REMOTE_FILE, remotePaths);
+            i.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UPLOAD_MULTIPLE_FILES);
             if (resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)
-                i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE);
+                i.putExtra(FileUploadService.KEY_LOCAL_BEHAVIOUR, FileUploadService.LOCAL_BEHAVIOUR_MOVE);
             startService(i);
 
         } else {
@@ -678,8 +678,8 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
             }
         }
 
-        Intent i = new Intent(this, FileUploader.class);
-        i.putExtra(FileUploader.KEY_ACCOUNT,
+        Intent i = new Intent(this, FileUploadService.class);
+        i.putExtra(FileUploadService.KEY_ACCOUNT,
                 getAccount());
         String remotepath = new String();
         for (int j = mDirectories.getCount() - 2; j >= 0; --j) {
@@ -689,11 +689,11 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
             remotepath += OCFile.PATH_SEPARATOR;
         remotepath += new File(filepath).getName();
 
-        i.putExtra(FileUploader.KEY_LOCAL_FILE, filepath);
-        i.putExtra(FileUploader.KEY_REMOTE_FILE, remotepath);
-        i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
+        i.putExtra(FileUploadService.KEY_LOCAL_FILE, filepath);
+        i.putExtra(FileUploadService.KEY_REMOTE_FILE, remotepath);
+        i.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UPLOAD_SINGLE_FILE);
         if (resultCode == UploadFilesActivity.RESULT_OK_AND_MOVE)
-            i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE);
+            i.putExtra(FileUploadService.KEY_LOCAL_BEHAVIOUR, FileUploadService.LOCAL_BEHAVIOUR_MOVE);
         startService(i);
     }
 
@@ -765,7 +765,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
         //LocalBroadcastManager.getInstance(this).registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);
 
         // Listen for upload messages
-        IntentFilter uploadIntentFilter = new IntentFilter(FileUploader.getUploadFinishMessage());
+        IntentFilter uploadIntentFilter = new IntentFilter(FileUploadService.getUploadFinishMessage());
         mUploadFinishReceiver = new UploadFinishReceiver();
         registerReceiver(mUploadFinishReceiver, uploadIntentFilter);
 
@@ -1090,7 +1090,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
         public void onReceive(Context context, Intent intent) {
             try {
                 String uploadedRemotePath = intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH);
-                String accountName = intent.getStringExtra(FileUploader.ACCOUNT_NAME);
+                String accountName = intent.getStringExtra(FileUploadService.ACCOUNT_NAME);
                 boolean sameAccount = getAccount() != null && accountName.equals(getAccount().name);
                 OCFile currentDir = getCurrentDir();
                 boolean isDescendant = (currentDir != null) && (uploadedRemotePath != null) && 
@@ -1100,9 +1100,9 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
                     refreshListOfFilesFragment();
                 }
                 
-                boolean uploadWasFine = intent.getBooleanExtra(FileUploader.EXTRA_UPLOAD_RESULT, false);
+                boolean uploadWasFine = intent.getBooleanExtra(FileUploadService.EXTRA_UPLOAD_RESULT, false);
                 boolean renamedInUpload = getFile().getRemotePath().
-                        equals(intent.getStringExtra(FileUploader.EXTRA_OLD_REMOTE_PATH));
+                        equals(intent.getStringExtra(FileUploadService.EXTRA_OLD_REMOTE_PATH));
                 boolean sameFile = getFile().getRemotePath().equals(uploadedRemotePath) || 
                         renamedInUpload;
                 FileFragment details = getSecondFragment();
@@ -1301,7 +1301,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
                         }
                 }
 
-            } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploader.class))) {
+            } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploadService.class))) {
                 Log_OC.d(TAG, "Upload service connected");
                 mUploaderBinder = (FileUploaderBinder) service;
             } else {
@@ -1325,7 +1325,7 @@ OnSslUntrustedCertListener, OnEnforceableRefreshListener {
             if (component.equals(new ComponentName(FileDisplayActivity.this, FileDownloader.class))) {
                 Log_OC.d(TAG, "Download service disconnected");
                 mDownloaderBinder = null;
-            } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploader.class))) {
+            } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploadService.class))) {
                 Log_OC.d(TAG, "Upload service disconnected");
                 mUploaderBinder = null;
             }

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

@@ -31,7 +31,7 @@ import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountAuthenticator;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.files.services.FileUploader;
+import com.owncloud.android.files.services.FileUploadService;
 import com.owncloud.android.lib.common.utils.Log_OC;
 
 import android.accounts.Account;
@@ -402,11 +402,11 @@ public class Uploader extends ListActivity implements OnItemClickListener, andro
                     throw new SecurityException();
                 }
            
-            Intent intent = new Intent(getApplicationContext(), FileUploader.class);
-            intent.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_MULTIPLE_FILES);
-            intent.putExtra(FileUploader.KEY_LOCAL_FILE, local.toArray(new String[local.size()]));
-            intent.putExtra(FileUploader.KEY_REMOTE_FILE, remote.toArray(new String[remote.size()]));
-            intent.putExtra(FileUploader.KEY_ACCOUNT, mAccount);
+            Intent intent = new Intent(getApplicationContext(), FileUploadService.class);
+            intent.putExtra(FileUploadService.KEY_UPLOAD_TYPE, FileUploadService.UPLOAD_MULTIPLE_FILES);
+            intent.putExtra(FileUploadService.KEY_LOCAL_FILE, local.toArray(new String[local.size()]));
+            intent.putExtra(FileUploadService.KEY_REMOTE_FILE, remote.toArray(new String[remote.size()]));
+            intent.putExtra(FileUploadService.KEY_ACCOUNT, mAccount);
             startService(intent);
             finish();
             }

+ 1 - 1
src/com/owncloud/android/ui/adapter/FileListListAdapter.java

@@ -45,7 +45,7 @@ import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager.AsyncDrawable;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
-import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
+import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FileStorageUtils;

+ 1 - 1
src/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -39,7 +39,7 @@ import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.FileMenuFilter;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
-import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
+import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
 import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.services.observer.FileObserverService;

+ 1 - 1
src/com/owncloud/android/ui/fragment/FileFragment.java

@@ -24,7 +24,7 @@ import android.support.v4.app.Fragment;
 import com.actionbarsherlock.app.SherlockFragment;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
-import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
+import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 
 

+ 4 - 4
src/com/owncloud/android/ui/preview/PreviewImageActivity.java

@@ -43,8 +43,8 @@ import com.owncloud.android.datamodel.FileDataStorageManager;
 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.FileUploader;
-import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
+import com.owncloud.android.files.services.FileUploadService;
+import com.owncloud.android.files.services.FileUploadService.FileUploaderBinder;
 import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
 import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
@@ -267,7 +267,7 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener {
                     onPageSelected(mViewPager.getCurrentItem());
                 }
 
-            } else if (component.equals(new ComponentName(PreviewImageActivity.this, FileUploader.class))) {
+            } else if (component.equals(new ComponentName(PreviewImageActivity.this, FileUploadService.class))) {
                 Log_OC.d(TAG, "Upload service connected");
                 mUploaderBinder = (FileUploaderBinder) service;
             } else {
@@ -281,7 +281,7 @@ ViewPager.OnPageChangeListener, OnRemoteOperationListener {
             if (component.equals(new ComponentName(PreviewImageActivity.this, FileDownloader.class))) {
                 Log_OC.d(TAG, "Download service suddenly disconnected");
                 mDownloaderBinder = null;
-            } else if (component.equals(new ComponentName(PreviewImageActivity.this, FileUploader.class))) {
+            } else if (component.equals(new ComponentName(PreviewImageActivity.this, FileUploadService.class))) {
                 Log_OC.d(TAG, "Upload service suddenly disconnected");
                 mUploaderBinder = null;
             }