mConflictsFound = 0;
mForgottenLocalFiles.clear();
boolean fileChanged = false;
+ boolean dirChanged = true;
// code before in FileSyncAdapter.fetchData
PropFindMethod query = null;
// synchronize properties of the parent folder, if necessary
if (mParentId == DataStorageManager.ROOT_PARENT_ID) {
+ dirChanged = false;
WebdavEntry we = new WebdavEntry(resp.getResponses()[0], client.getBaseUri().getPath());
// Properties of server folder
OCFile parent = fillOCFile(we);
// Properties of local folder
OCFile localParent = mStorageManager.getFileById(1);
- if (localParent == null || parent.getEtag() != localParent.getEtag()) {
+ if (localParent == null || !(parent.getEtag().equalsIgnoreCase(localParent.getEtag()))) {
mStorageManager.saveFile(parent);
mParentId = parent.getFileId();
+ dirChanged = true;
}
+ }
+ else if (! mRemotePath.equalsIgnoreCase(OCFile.PATH_SEPARATOR)){
+ dirChanged = false;
+ WebdavEntry we = new WebdavEntry(resp.getResponses()[0], client.getBaseUri().getPath());
+
+ // Properties of server folder
+ OCFile parent = fillOCFile(we);
+ // Properties of local folder
+ OCFile localParent = mStorageManager.getFileByPath(mRemotePath);
+ if (localParent == null || !(parent.getEtag().equalsIgnoreCase(localParent.getEtag()))) {
+ dirChanged = true;
+ }
}
-
+ if (dirChanged) {
// read contents in folder
List<String> filesOnServer = new ArrayList<String> (); // Contains the lists of files on server
List<OCFile> updatedFiles = new Vector<OCFile>(resp.getResponses().length - 1);
fileChanged = false;
if (oldFile != null) {
if (!file.getEtag().equalsIgnoreCase(oldFile.getEtag())) {
- fileChanged = true;
+ fileChanged = true;
}
} else
fileChanged= true;
- if (fileChanged){
+ if (fileChanged){
+ if (file.isDirectory())
+ file.setEtag("");
if (oldFile != null) {
file.setKeepInSync(oldFile.keepInSync());
file.setLastSyncDateForData(oldFile.getLastSyncDateForData());
mStorageManager.saveFiles(updatedFiles);
// request for the synchronization of files AFTER saving last properties
- //SynchronizeFileOperation op = null;
RemoteOperationResult contentsResult = null;
for (SynchronizeFileOperation op: filesToSyncContents) {//int i=0; i < filesToSyncContents.size(); i++) {
- //op = filesToSyncContents.get(i);
contentsResult = op.execute(client); // returns without waiting for upload or download finishes
if (!contentsResult.isSuccess()) {
if (contentsResult.getCode() == ResultCode.SYNC_CONFLICT) {
//OCFile file;
String currentSavePath = FileStorageUtils.getSavePath(mAccount.name);
for (OCFile fileChild: mChildren) {
- //file = mChildren.get(i);
- //if (file.getLastSyncDateForProperties() != mCurrentSyncTime) {
if (!filesOnServer.contains(fileChild.getRemotePath())) {
Log_OC.d(TAG, "removing file: " + fileChild.getFileName());
mStorageManager.removeFile(fileChild, (fileChild.isDown() && fileChild.getStoragePath().startsWith(currentSavePath)));
- mChildren.remove(fileChild); //.remove(i);
+ // mChildren.remove(fileChild); //.remove(i);
}
- // } else {
- // i++;
- // }
}
- // }
- //}
} else {
client.exhaustResponse(query.getResponseBodyAsStream());
}
-
+ }
+
// prepare result object
- if (!fileChanged) {
+ if (!dirChanged) {
result = new RemoteOperationResult(ResultCode.OK_NO_CHANGES_ON_DIR);
+ mChildren = mStorageManager.getDirectoryContent(mStorageManager.getFileById(mParentId));
} else if (isMultiStatus(status)) {
if (mConflictsFound > 0 || mFailsInFavouritesFound > 0) {