+ }
+
+ if (!mSyncFullAccount) {
+ sendStickyBroadcast(false, remotePath, result);
+ }
+ }
+
+ return result;
+ }
+
+
+ /**
+ * Synchronizes the data retrieved from the server about the contents of the target folder
+ * with the current data in the local database.
+ *
+ * Grants that mChildren is updated with fresh data after execution.
+ *
+ * @param dataInServer Full response got from the server with the data of the target
+ * folder and its direct children.
+ * @param client Client instance to the remote server where the data were
+ * retrieved.
+ * @return 'True' when any change was made in the local data, 'false' otherwise.
+ */
+ private boolean synchronizeData(MultiStatus dataInServer, WebdavClient client) {
+ // get 'fresh data' from the database
+ mLocalFolder = mStorageManager.getFileById(mLocalFolder.getFileId());
+
+ // parse data from remote folder
+ WebdavEntry we = new WebdavEntry(dataInServer.getResponses()[0], client.getBaseUri().getPath());
+ OCFile remoteFolder = fillOCFile(we);
+ remoteFolder.setParentId(mLocalFolder.getParentId());
+ remoteFolder.setFileId(mLocalFolder.getFileId());
+
+ // check if remote and local folder are different
+ boolean folderChanged = !(remoteFolder.getEtag().equalsIgnoreCase(mLocalFolder.getEtag()));
+
+ if (!folderChanged) {
+ if (mUpdateFolderProperties) { // TODO check if this is really necessary
+ mStorageManager.saveFile(remoteFolder);
+ }
+
+ mChildren = mStorageManager.getDirectoryContent(mLocalFolder);
+
+ } else {
+ // read info of folder contents
+ List<OCFile> updatedFiles = new Vector<OCFile>(dataInServer.getResponses().length - 1);
+ List<SynchronizeFileOperation> filesToSyncContents = new Vector<SynchronizeFileOperation>();
+
+ // loop to update every child
+ OCFile remoteFile = null, localFile = null;
+ for (int i = 1; i < dataInServer.getResponses().length; ++i) {
+ /// new OCFile instance with the data from the server
+ we = new WebdavEntry(dataInServer.getResponses()[i], client.getBaseUri().getPath());
+ remoteFile = fillOCFile(we);
+ remoteFile.setParentId(mLocalFolder.getFileId());
+
+ /// retrieve local data for the read file
+ localFile = mStorageManager.getFileByPath(remoteFile.getRemotePath());