-/* ownCloud Android client application
+/**
+ * ownCloud Android client application
+ *
* Copyright (C) 2015 ownCloud Inc.
*
* This program is free software: you can redistribute it and/or modify
import android.os.Message;
import android.util.Pair;
+import com.owncloud.android.MainApp;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.files.services.FileDownloader;
public void handleMessage(Message msg) {
Pair<Account, String> itemSyncKey = (Pair<Account, String>) msg.obj;
doOperation(itemSyncKey.first, itemSyncKey.second);
+ Log_OC.d(TAG, "Stopping after command with id " + msg.arg1);
mService.stopSelf(msg.arg1);
}
RemoteOperationResult result = null;
try {
- if (mOwnCloudClient == null || !account.equals(mCurrentAccount)) {
- /// get client object to send the request to the ownCloud server, if cannot
+
+ if (mCurrentAccount == null || !mCurrentAccount.equals(account)) {
mCurrentAccount = account;
mStorageManager = new FileDataStorageManager(
account,
mService.getContentResolver()
);
- OwnCloudAccount ocAccount = new OwnCloudAccount(account, mService);
- mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton().
- getClientFor(ocAccount, mService);
+ } // else, reuse storage manager from previous operation
- } // else, reuse client from previous operation
+ // always get client from client manager, to get fresh credentials in case of update
+ OwnCloudAccount ocAccount = new OwnCloudAccount(account, mService);
+ mOwnCloudClient = OwnCloudClientManagerFactory.getDefaultSingleton().
+ getClientFor(ocAccount, mService);
result = mCurrentSyncOperation.execute(mOwnCloudClient, mStorageManager);
} catch (AccountsException e) {
- Log_OC.e(TAG, "Error while trying to get autorization", e);
+ Log_OC.e(TAG, "Error while trying to get authorization", e);
} catch (IOException e) {
- Log_OC.e(TAG, "Error while trying to get autorization", e);
+ Log_OC.e(TAG, "Error while trying to get authorization", e);
} finally {
mPendingOperations.removePayload(account, remotePath);
- mService.dispatchResultToOperationListeners(null, mCurrentSyncOperation, result);
+ mService.dispatchResultToOperationListeners(mCurrentSyncOperation, result);
sendBroadcastFinishedSyncFolder(account, remotePath, result.isSuccess());
}
}
}
- public void add(Account account, String remotePath, SynchronizeFolderOperation syncFolderOperation){
+ public void add(Account account, String remotePath,
+ SynchronizeFolderOperation syncFolderOperation){
mPendingOperations.putIfAbsent(account, remotePath, syncFolderOperation);
sendBroadcastNewSyncFolder(account, remotePath); // TODO upgrade!
}
if (synchronization != null) {
synchronization.cancel();
} else {
- // TODO synchronize
+ // TODO synchronize?
if (mCurrentSyncOperation != null && mCurrentAccount != null &&
- mCurrentSyncOperation.getFolderPath().startsWith(file.getRemotePath()) &&
+ mCurrentSyncOperation.getRemotePath().startsWith(file.getRemotePath()) &&
account.name.equals(mCurrentAccount.name)) {
mCurrentSyncOperation.cancel();
}
}
/**
- * TODO review this method when "folder synchronization" replaces "folder download"; this is a fast and ugly
- * patch.
+ * TODO review this method when "folder synchronization" replaces "folder download";
+ * this is a fast and ugly patch.
*/
private void sendBroadcastNewSyncFolder(Account account, String remotePath) {
Intent added = new Intent(FileDownloader.getDownloadAddedMessage());
added.putExtra(FileDownloader.ACCOUNT_NAME, account.name);
added.putExtra(FileDownloader.EXTRA_REMOTE_PATH, remotePath);
- added.putExtra(FileDownloader.EXTRA_FILE_PATH, FileStorageUtils.getSavePath(account.name) + remotePath);
+ added.putExtra(FileDownloader.EXTRA_FILE_PATH, FileStorageUtils.getSavePath(account.name)
+ + remotePath);
mService.sendStickyBroadcast(added);
}
/**
- * TODO review this method when "folder synchronization" replaces "folder download"; this is a fast and ugly
- * patch.
+ * TODO review this method when "folder synchronization" replaces "folder download";
+ * this is a fast and ugly patch.
*/
- private void sendBroadcastFinishedSyncFolder(Account account, String remotePath, boolean success) {
+ private void sendBroadcastFinishedSyncFolder(Account account, String remotePath,
+ boolean success) {
Intent finished = new Intent(FileDownloader.getDownloadFinishMessage());
finished.putExtra(FileDownloader.ACCOUNT_NAME, account.name);
finished.putExtra(FileDownloader.EXTRA_REMOTE_PATH, remotePath);
- finished.putExtra(FileDownloader.EXTRA_FILE_PATH, FileStorageUtils.getSavePath(account.name) + remotePath);
+ finished.putExtra(FileDownloader.EXTRA_FILE_PATH,
+ FileStorageUtils.getSavePath(account.name) + remotePath);
finished.putExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, success);
mService.sendStickyBroadcast(finished);
}