* Useful to include this operation as part of the synchronization of a folder (or a full account), avoiding the
* repetition of fetch operations (both in local database or remote server).
*
- * At least data from local cache must be provided. If you don't have them, use the other constructor.
+ * At least one of localFile or serverFile MUST NOT BE NULL. If you don't have none of them, use the other
+ * constructor.
*
- * @param localFile Data of file (just) retrieved from local cache/database. MUSTN't be null.
+ * @param localFile Data of file (just) retrieved from local cache/database.
* @param serverFile Data of file (just) retrieved from a remote server. If null, will be
* retrieved from network by the operation when executed.
* @param account ownCloud account holding the file.
mLocalFile = localFile;
mServerFile = serverFile;
- mRemotePath = localFile.getRemotePath(); // this will crash if localFile == null; use the other constructor
+ if (mLocalFile != null) {
+ mRemotePath = mLocalFile.getRemotePath();
+ if (mServerFile != null && !mServerFile.getRemotePath().equals(mRemotePath)) {
+ throw new IllegalArgumentException("serverFile and localFile do not correspond to the same OC file");
+ }
+ } else if (mServerFile != null) {
+ mRemotePath = mServerFile.getRemotePath();
+ } else {
+ throw new IllegalArgumentException("Both serverFile and localFile are NULL");
+ }
mAccount = account;
mSyncFileContents = syncFileContents;
mContext = context;
boolean allowUploads,
Context context) {
- mLocalFile = localFile;
- mServerFile = serverFile;
- mRemotePath = localFile.getRemotePath(); // this will crash if localFile == null; use the other constructor
- mAccount = account;
- mSyncFileContents = syncFileContents;
- mContext = context;
+ this(localFile, serverFile, account, syncFileContents, context);
mAllowUploads = allowUploads;
}
mAccount = account;
mContext = context;
mRemoteFolderChanged = false;
+ mFilesForDirectDownload = new Vector<OCFile>();
mFilesToSyncContentsWithoutUpload = new Vector<SyncOperation>();
mFavouriteFilesToSyncContents = new Vector<SyncOperation>();
mFoldersToWalkDown = new Vector<SyncOperation>();
+ " changed - starting update of local data ");
List<OCFile> updatedFiles = new Vector<OCFile>(folderAndFiles.size() - 1);
+ mFilesForDirectDownload.clear();
mFilesToSyncContentsWithoutUpload.clear();
mFavouriteFilesToSyncContents.clear();
mFoldersToWalkDown.clear();