X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/56fa4445e857d224398b2ebb8fadb37c6f1325c8..cea1a76f48ceb400136e64b4fb921a3f92aee6e4:/src/com/owncloud/android/operations/SynchronizeFolderOperation.java diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index ff387c0f..97c7a083 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -33,17 +33,18 @@ import org.apache.http.HttpStatus; import android.accounts.Account; import android.content.Context; import android.content.Intent; +import android.support.v4.content.LocalBroadcastManager; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.oc_framework.network.webdav.WebdavClient; -import com.owncloud.android.oc_framework.operations.RemoteOperation; -import com.owncloud.android.oc_framework.operations.RemoteOperationResult; -import com.owncloud.android.oc_framework.operations.RemoteOperationResult.ResultCode; -import com.owncloud.android.oc_framework.operations.remote.ReadRemoteFileOperation; -import com.owncloud.android.oc_framework.operations.remote.ReadRemoteFolderOperation; -import com.owncloud.android.oc_framework.operations.RemoteFile; -import com.owncloud.android.syncadapter.FileSyncService; +import com.owncloud.android.lib.network.OwnCloudClient; +import com.owncloud.android.lib.operations.common.RemoteOperation; +import com.owncloud.android.lib.operations.common.RemoteOperationResult; +import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; +import com.owncloud.android.lib.operations.remote.ReadRemoteFileOperation; +import com.owncloud.android.lib.operations.remote.ReadRemoteFolderOperation; +import com.owncloud.android.lib.operations.common.RemoteFile; +import com.owncloud.android.syncadapter.FileSyncAdapter; import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.Log_OC; @@ -64,6 +65,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { private static final String TAG = SynchronizeFolderOperation.class.getSimpleName(); + public static final String EVENT_SINGLE_FOLDER_SYNCED = SynchronizeFolderOperation.class.getName() + ".EVENT_SINGLE_FOLDER_SYNCED"; /** Time stamp for the synchronization process in progress */ private long mCurrentSyncTime; @@ -155,7 +157,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { * {@inheritDoc} */ @Override - protected RemoteOperationResult run(WebdavClient client) { + protected RemoteOperationResult run(OwnCloudClient client) { RemoteOperationResult result = null; mFailsInFavouritesFound = 0; mConflictsFound = 0; @@ -172,7 +174,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { } if (!mSyncFullAccount) { - sendStickyBroadcast(false, mLocalFolder.getRemotePath(), result); + sendLocalBroadcast(mLocalFolder.getRemotePath(), result); } return result; @@ -180,7 +182,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { } - private RemoteOperationResult checkForChanges(WebdavClient client) { + private RemoteOperationResult checkForChanges(OwnCloudClient client) { mRemoteFolderChanged = false; RemoteOperationResult result = null; String remotePath = null; @@ -192,7 +194,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { ReadRemoteFileOperation operation = new ReadRemoteFileOperation(remotePath); result = operation.execute(client); if (result.isSuccess()){ - OCFile remoteFolder = FileStorageUtils.fillOCFile(result.getData().get(0)); + OCFile remoteFolder = FileStorageUtils.fillOCFile((RemoteFile) result.getData().get(0)); // check if remote and local folder are different mRemoteFolderChanged = !(remoteFolder.getEtag().equalsIgnoreCase(mLocalFolder.getEtag())); @@ -216,7 +218,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { } - private RemoteOperationResult fetchAndSyncRemoteFolder(WebdavClient client) { + private RemoteOperationResult fetchAndSyncRemoteFolder(OwnCloudClient client) { String remotePath = mLocalFolder.getRemotePath(); ReadRemoteFolderOperation operation = new ReadRemoteFolderOperation(remotePath); RemoteOperationResult result = operation.execute(client); @@ -256,12 +258,12 @@ public class SynchronizeFolderOperation extends RemoteOperation { * retrieved. * @return 'True' when any change was made in the local data, 'false' otherwise. */ - private void synchronizeData(ArrayList folderAndFiles, WebdavClient client) { + private void synchronizeData(ArrayList folderAndFiles, OwnCloudClient client) { // get 'fresh data' from the database mLocalFolder = mStorageManager.getFileByPath(mLocalFolder.getRemotePath()); // parse data from remote folder - OCFile remoteFolder = fillOCFile(folderAndFiles.get(0)); + OCFile remoteFolder = fillOCFile((RemoteFile)folderAndFiles.get(0)); remoteFolder.setParentId(mLocalFolder.getParentId()); remoteFolder.setFileId(mLocalFolder.getFileId()); @@ -281,7 +283,7 @@ public class SynchronizeFolderOperation extends RemoteOperation { OCFile remoteFile = null, localFile = null; for (int i=1; i filesToSyncContents, WebdavClient client) { + private void startContentSynchronizations(List filesToSyncContents, OwnCloudClient client) { RemoteOperationResult contentsResult = null; for (SynchronizeFileOperation op: filesToSyncContents) { contentsResult = op.execute(client); // returns without waiting for upload or download finishes @@ -476,17 +478,15 @@ public class SynchronizeFolderOperation extends RemoteOperation { * @param inProgress 'True' when the synchronization progress is not finished. * @param dirRemotePath Remote path of a folder that was just synchronized (with or without success) */ - private void sendStickyBroadcast(boolean inProgress, String dirRemotePath, RemoteOperationResult result) { - Intent i = new Intent(FileSyncService.getSyncMessage()); - i.putExtra(FileSyncService.IN_PROGRESS, inProgress); - i.putExtra(FileSyncService.ACCOUNT_NAME, mAccount.name); + private void sendLocalBroadcast(String dirRemotePath, RemoteOperationResult result) { + Intent intent = new Intent(EVENT_SINGLE_FOLDER_SYNCED); + intent.putExtra(FileSyncAdapter.EXTRA_ACCOUNT_NAME, mAccount.name); if (dirRemotePath != null) { - i.putExtra(FileSyncService.SYNC_FOLDER_REMOTE_PATH, dirRemotePath); + intent.putExtra(FileSyncAdapter.EXTRA_FOLDER_PATH, dirRemotePath); } - if (result != null) { - i.putExtra(FileSyncService.SYNC_RESULT, result); - } - mContext.sendStickyBroadcast(i); + intent.putExtra(FileSyncAdapter.EXTRA_RESULT, result); + //mContext.sendStickyBroadcast(intent); + LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent); }