X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/c301865c351da2c46c82cca268c0d7e32bc2fd83..e4bc3bdadc47c01e88dd1de94a4666d3753ee90e:/src/com/owncloud/android/operations/SynchronizeFolderOperation.java?ds=inline diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index 12e7f3f0..bfff6800 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -18,6 +18,7 @@ package com.owncloud.android.operations; +import java.io.File; import java.util.List; import java.util.Vector; @@ -138,27 +139,40 @@ public class SynchronizeFolderOperation extends RemoteOperation { List updatedFiles = new Vector(resp.getResponses().length - 1); List filesToSyncContents = new Vector(); for (int i = 1; i < resp.getResponses().length; ++i) { + /// new OCFile instance with the data from the server WebdavEntry we = new WebdavEntry(resp.getResponses()[i], client.getBaseUri().getPath()); OCFile file = fillOCFile(we); + + /// set data about local state, keeping unchanged former data if existing + file.setLastSyncDateForProperties(mCurrentSyncTime); OCFile oldFile = mStorageManager.getFileByPath(file.getRemotePath()); if (oldFile != null) { file.setKeepInSync(oldFile.keepInSync()); file.setLastSyncDateForData(oldFile.getLastSyncDateForData()); - if (file.keepInSync()) { - //disableObservance(file); // first disable observer so we won't get file upload right after download - // // now, the FileDownloader service sends a broadcast before start a download; the FileObserverService is listening for it - //requestFileSynchronization(file, oldFile, client); - SynchronizeFileOperation operation = new SynchronizeFileOperation( oldFile, - file, - mStorageManager, - mAccount, - true, - false, - mContext - ); - filesToSyncContents.add(operation); + file.setStoragePath(oldFile.getStoragePath()); + } + + /// scan default location if local copy of file is not linked in OCFile instance + if (file.getStoragePath() == null && !file.isDirectory()) { + File f = new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, file)); + if (f.exists()) { + file.setStoragePath(f.getAbsolutePath()); + file.setLastSyncDateForData(f.lastModified()); } } + + /// prepare content synchronization for kept-in-sync files + if (file.keepInSync()) { + SynchronizeFileOperation operation = new SynchronizeFileOperation( oldFile, + file, + mStorageManager, + mAccount, + true, + false, + mContext + ); + filesToSyncContents.add(operation); + } updatedFiles.add(file); } @@ -250,7 +264,6 @@ public class SynchronizeFolderOperation extends RemoteOperation { file.setFileLength(we.contentLength()); file.setMimetype(we.contentType()); file.setModificationTimestamp(we.modifiedTimesamp()); - file.setLastSyncDateForProperties(mCurrentSyncTime); file.setParentId(mParentId); return file; }