command.Parameters.AddWithValue("path", path);
var affected = command.ExecuteNonQuery();
+ if (affected == 0)
+ {
+ var createdState = FileState.CreateFor(FileInfoExtensions.FromPath(path));
+ createdState.FileStatus = status;
+ createdState.Create();
+ }
return affected;
}
}
}
}
- private int UpdateStatusDirect(string absolutePath, FileStatus fileStatus, FileOverlayStatus overlayStatus)
+ private int UpdateStatusDirect(string absolutePath, FileStatus fileStatus, FileOverlayStatus overlayStatus, string conflictReason)
{
using (log4net.ThreadContext.Stacks["StatusAgent"].Push("UpdateStatusDirect"))
{
using (
var command =
new SQLiteCommand(
- "update FileState set OverlayStatus= :overlayStatus, FileStatus= :fileStatus where FilePath = :path COLLATE NOCASE ",
+ "update FileState set OverlayStatus= :overlayStatus, FileStatus= :fileStatus,ConflictReason= :conflictReason where FilePath = :path COLLATE NOCASE ",
connection))
{
command.Parameters.AddWithValue("path", absolutePath);
command.Parameters.AddWithValue("fileStatus", fileStatus);
command.Parameters.AddWithValue("overlayStatus", overlayStatus);
+ command.Parameters.AddWithValue("conflictReason", conflictReason);
var affected = command.ExecuteNonQuery();
+ if (affected == 0)
+ {
+ var createdState=FileState.CreateFor(FileInfoExtensions.FromPath(absolutePath));
+ createdState.FileStatus = fileStatus;
+ createdState.OverlayStatus = overlayStatus;
+ createdState.ConflictReason = conflictReason;
+ createdState.Create();
+ }
return affected;
}
}
_persistenceAgent.Post(() =>FileState.RenameState(oldPath, newPath));
}*/
- public void SetFileState(string path, FileStatus fileStatus, FileOverlayStatus overlayStatus)
+ public void SetFileState(string path, FileStatus fileStatus, FileOverlayStatus overlayStatus, string conflictReason)
{
if (String.IsNullOrWhiteSpace(path))
throw new ArgumentNullException("path");
Debug.Assert(!path.Contains(FolderConstants.CacheFolder));
Debug.Assert(!path.EndsWith(".ignore"));
- _persistenceAgent.Post(() => UpdateStatusDirect(path, fileStatus, overlayStatus));
+ _persistenceAgent.Post(() => UpdateStatusDirect(path, fileStatus, overlayStatus, conflictReason));
}
/*
//Stale states are those that have no corresponding local or server file
-
+
var agent=FileAgent.GetFileAgent(accountInfo);
var localFiles=agent.EnumerateFiles();
var localSet = new HashSet<string>(localFiles);
+ //RelativeUrlToFilePath will fail for
+ //infos of accounts, containers which have no Name
+
var serverFiles = from info in objectInfos
+ where info.Name != null
select Path.Combine(accountInfo.AccountPath,info.RelativeUrlToFilePath(accountInfo.UserName));
var serverSet = new HashSet<string>(serverFiles);