void deleteJobMenuItem_Click(object sender, RoutedEventArgs e)
{
object selectedItem = this.SyncHistoryListBox.SelectedItem;
if (selectedItem != null)
{
string jobId = this.syncRecordDict[(ListBoxItem)selectedItem];
SyncSetting syncSetting = SyncRecord.LoadSyncSettingByJobId(jobId);
if (syncSetting != null)
{
MessageBoxResult mbr = MessageBox.Show(
string.Format("确认删除同步任务 {0} -> {1} 么?", syncSetting.LocalDirectory, syncSetting.TargetBucket), "删除任务",
MessageBoxButton.YesNo, MessageBoxImage.Question);
if (mbr.Equals(MessageBoxResult.Yes))
{
//delete job related files
string[] filesToDelete ={
Path.Combine(this.myAppPath,"logs",jobId,"error.log"),
Path.Combine(this.myAppPath,"logs",jobId,"exists.log"),
Path.Combine(this.myAppPath,"logs",jobId,"not_overwrite.log"),
Path.Combine(this.myAppPath,"logs",jobId,"overwrite.log"),
Path.Combine(this.myAppPath,"logs",jobId,"skipped.log"),
Path.Combine(this.myAppPath,"logs",jobId,"success.log"),
Path.Combine(this.myAppPath,"synclog",jobId+".log.db"),
Path.Combine(this.myAppPath,"dircache",jobId+".done")
};
foreach (string path in filesToDelete)
{
try
{
File.Delete(path);
}
catch (Exception ex)
{
Log.Error(string.Format("delete file {0} failed due to {1}", path, ex.Message));
}
}
string[] foldersToDelete ={
Path.Combine(this.myAppPath,"logs",jobId)
};
foreach (string path in foldersToDelete)
{
try
{
Directory.Delete(path);
}
catch (Exception ex)
{
Log.Error(string.Format("delete folder {0} failed due to {1}", path, ex.Message));
}
}
try
{
SyncRecord.DeleteSyncJobById(jobId, this.jobsDbPath);
}
catch (Exception ex)
{
Log.Error("delete sync job by id error, " + ex.Message);
}
this.SyncHistoryListBox.Items.Remove(selectedItem);
this.syncRecordDict.Remove((ListBoxItem)selectedItem);
}
}
else
{
Log.Error("load sync setting by id failed, " + jobId);
}
}
}