private bool DownloadDirectory(IFolder remoteFolder, string remotePath, string localFolder)
{
SleepWhileSuspended();
try
{
// Create local folder.
Directory.CreateDirectory(localFolder);
if (remoteFolder.CreationDate != null)
{
Directory.SetCreationTime(localFolder, (DateTime)remoteFolder.CreationDate);
}
if (remoteFolder.LastModificationDate != null)
{
Directory.SetLastWriteTime(localFolder, (DateTime)remoteFolder.LastModificationDate);
}
}
catch (Exception e)
{
ProcessRecoverableException("Could not create directory: " + localFolder, e);
return false;
}
// Create database entry for this folder
var syncFolderItem = database.GetFolderSyncItemFromRemotePath(remoteFolder.Path);
if (null == syncFolderItem)
{
syncFolderItem = SyncItemFactory.CreateFromRemoteFolder(remoteFolder.Path, repoInfo, database);
}
database.AddFolder(syncFolderItem, remoteFolder.Id, remoteFolder.LastModificationDate);
Logger.Info("Added folder to database: " + localFolder);
// Recurse into folder.
RecursiveFolderCopy(remoteFolder, remotePath, localFolder);
return true;
}