X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/055be963861b3c5bdd2fa1d656f20f0587b5e3ad..766b51f497971141da27ed16a11413d1bf590529:/src/com/owncloud/android/files/services/FileUploader.java diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index 535ab131..ad2a2cbe 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -46,6 +46,7 @@ import android.support.v4.app.NotificationCompat; import android.webkit.MimeTypeMap; 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; @@ -58,6 +59,7 @@ import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; import com.owncloud.android.lib.common.operations.RemoteOperation; 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; @@ -71,7 +73,6 @@ import com.owncloud.android.operations.common.SyncOperation; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; import com.owncloud.android.utils.ErrorMessageAdapter; -import com.owncloud.android.utils.Log_OC; @@ -185,6 +186,9 @@ public class FileUploader extends Service implements OnDatatransferProgressListe return Service.START_NOT_STICKY; } Account account = intent.getParcelableExtra(KEY_ACCOUNT); + if (!AccountUtils.exists(account, getApplicationContext())) { + return Service.START_NOT_STICKY; + } String[] localPaths = null, remotePaths = null, mimeTypes = null; OCFile[] files = null; @@ -626,7 +630,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe // coincidence; nothing else is needed, the storagePath is right // in the instance returned by mCurrentUpload.getFile() } - + file.setNeedsUpdateThumbnail(true); mStorageManager.saveFile(file); } @@ -637,6 +641,7 @@ public class FileUploader extends Service implements OnDatatransferProgressListe file.setModificationTimestamp(remoteFile.getModifiedTimestamp()); file.setModificationTimestampAtLastSyncForData(remoteFile.getModifiedTimestamp()); // file.setEtag(remoteFile.getEtag()); // TODO Etag, where available + file.setRemoteId(remoteFile.getRemoteId()); } private OCFile obtainNewOCFileToUpload(String remotePath, String localPath, String mimeType, @@ -724,7 +729,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe * @param uploadResult Result of the upload operation. * @param upload Finished upload operation */ - private void notifyUploadResult(RemoteOperationResult uploadResult, UploadFileOperation upload) { + private void notifyUploadResult( + RemoteOperationResult uploadResult, UploadFileOperation upload) { Log_OC.d(TAG, "NotifyUploadResult with resultCode: " + uploadResult.getCode()); // / cancelled operation or success -> silent removal of progress notification mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker); @@ -734,8 +740,6 @@ public class FileUploader extends Service implements OnDatatransferProgressListe int tickerId = (uploadResult.isSuccess()) ? R.string.uploader_upload_succeeded_ticker : R.string.uploader_upload_failed_ticker; - NotificationCompat.Builder resultBuilder = new NotificationCompat.Builder(this); - String content = null; // check credentials error @@ -746,41 +750,60 @@ public class FileUploader extends Service implements OnDatatransferProgressListe tickerId = (needsToUpdateCredentials) ? R.string.uploader_upload_failed_credentials_error : tickerId; - resultBuilder - .setSmallIcon(R.drawable.notification_icon) + mNotificationBuilder .setTicker(getString(tickerId)) .setContentTitle(getString(tickerId)) - .setAutoCancel(true); + .setAutoCancel(true) + .setOngoing(false) + .setProgress(0, 0, false); - content = ErrorMessageAdapter.getErrorCauseMessage(uploadResult, upload, getResources()); + content = ErrorMessageAdapter.getErrorCauseMessage( + uploadResult, upload, getResources() + ); if (needsToUpdateCredentials) { // let the user update credentials with one click Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class); - updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, upload.getAccount()); - updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION, AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN); + updateAccountCredentials.putExtra( + AuthenticatorActivity.EXTRA_ACCOUNT, upload.getAccount() + ); + updateAccountCredentials.putExtra( + AuthenticatorActivity.EXTRA_ACTION, + AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN + ); updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); updateAccountCredentials.addFlags(Intent.FLAG_FROM_BACKGROUND); - resultBuilder.setContentIntent(PendingIntent.getActivity( - this, (int) System.currentTimeMillis(), updateAccountCredentials, PendingIntent.FLAG_ONE_SHOT + mNotificationBuilder.setContentIntent(PendingIntent.getActivity( + this, + (int) System.currentTimeMillis(), + updateAccountCredentials, + PendingIntent.FLAG_ONE_SHOT )); - mUploadClient = null; // grant that future retries on the same account will get the fresh credentials + mUploadClient = null; + // grant that future retries on the same account will get the fresh credentials } else { - resultBuilder.setContentText(content); + mNotificationBuilder.setContentText(content); if (upload.isInstant()) { DbHandler db = null; try { db = new DbHandler(this.getBaseContext()); - String message = uploadResult.getLogMessage() + " errorCode: " + uploadResult.getCode(); + 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(), DbHandler.UPLOAD_STATUS_UPLOAD_FAILED, + //message = getString(R.string.failed_upload_quota_exceeded_text); + if (db.updateFileState( + upload.getOriginalStoragePath(), + DbHandler.UPLOAD_STATUS_UPLOAD_FAILED, message) == 0) { - db.putFileForLater(upload.getOriginalStoragePath(), upload.getAccount().name, message); + db.putFileForLater( + upload.getOriginalStoragePath(), + upload.getAccount().name, + message + ); } } } finally { @@ -791,8 +814,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe } } - resultBuilder.setContentText(content); - mNotificationManager.notify(tickerId, resultBuilder.build()); + mNotificationBuilder.setContentText(content); + mNotificationManager.notify(tickerId, mNotificationBuilder.build()); if (uploadResult.isSuccess()) {