public BuildConfigurationManager() { BuildConfigurations = new ObservableCollection <BuildConfigurationViewModel>( BuildConfigurationHelper.LoadBuildConfigurations()?.Select(x => new BuildConfigurationViewModel(x)) ?? new BuildConfigurationViewModel[0]); }
public void UpdateBuildConfiguration(BuildConfigurationViewModel buildConfigurationViewModel, BuildConfiguration buildConfiguration) { buildConfiguration.CreationDate = buildConfigurationViewModel.BuildConfigurationInfo.BuildConfiguration.CreationDate; buildConfiguration.LastModified = DateTime.Now; var path = buildConfigurationViewModel.BuildConfigurationInfo.Path; var fileToDelete = path + $".{Guid.NewGuid().ToString("N")}.delete"; File.Move(path, fileToDelete); string newPath; if (buildConfigurationViewModel.BuildConfigurationInfo.BuildConfiguration.Name != buildConfiguration.Name) { newPath = Path.Combine(BuildConfigurationHelper.BuildConfigurationFolderName, buildConfiguration.Name.RemoveSpecialCharacters() + ".xml"); newPath = FileExtensions.MakeUnique(newPath); } else { newPath = path; } try { BuildConfigurationHelper.SaveBuildConfiguration(buildConfiguration, newPath); } catch (Exception ex) { LogManager.GetCurrentClassLogger().Error(ex, $"Error when serializing build configuration {buildConfiguration.Name}. Reverting changes"); if (File.Exists(newPath)) { File.Delete(newPath); } LogManager.GetCurrentClassLogger().Info($"File removed. Move file \"{fileToDelete}\" to \"{path}\""); File.Move(fileToDelete, path); LogManager.GetCurrentClassLogger().Info("File moved"); throw; } buildConfigurationViewModel.Update(new BuildConfigurationInfo(buildConfiguration, newPath)); }
public void AddBuildConfiguration(BuildConfiguration buildConfiguration) { buildConfiguration.CreationDate = DateTime.Now; buildConfiguration.LastModified = DateTime.Now; var path = Path.Combine(BuildConfigurationHelper.BuildConfigurationFolderName, buildConfiguration.Name.RemoveSpecialCharacters() + ".xml"); path = FileExtensions.MakeUnique(path); BuildConfigurationHelper.SaveBuildConfiguration(buildConfiguration, path); var buildConfigurationViewModel = new BuildConfigurationViewModel(new BuildConfigurationInfo(buildConfiguration, path)); BuildConfigurations.Add(buildConfigurationViewModel); CurrentBuildConfiguration = buildConfigurationViewModel; }