private void UpdateProject() { try { this.Analysis.DataProviders.DatabaseLock.EnterWriteLock(); this.Analysis.DataProviders.DatasetCache.UpdateAll(this.Datasets.Select(d => d.Dataset).ToList()); this.Analysis.DataProviders.OptionsDao.AddAll(OptionsTransformer.PropertiesToList(this.Analysis.Options)); } finally { this.Analysis.DataProviders.DatabaseLock.ExitWriteLock(); } }
private void PersistProject() { if (this.Analysis.DataProviders == null) { return; } if (string.IsNullOrWhiteSpace(this.projectDirectory)) { this.projectDirectory = Path.GetDirectoryName(this.ProjectPath) + Path.DirectorySeparatorChar; } // Get the relative paths set up. foreach (var dataset in this.Datasets.Select(d => d.Dataset)) { foreach (var file in dataset.InputFiles) { file.RelativePath = PathUtils.MakeRelativePath(this.projectDirectory, file.Path); } } // Persist try { this.Analysis.DataProviders.DatabaseLock.EnterWriteLock(); this.Analysis.DataProviders.DatasetCache.AddAll(this.Datasets.Select(d => d.Dataset).ToList()); this.Analysis.DataProviders.DatasetCache.DeleteAll(this.deletedDatasets); // TODO: remove features and such from the database as well. this.deletedDatasets.Clear(); this.Analysis.DataProviders.OptionsDao.AddAll( OptionsTransformer.PropertiesToList(this.Analysis.Options)); } finally { this.Analysis.DataProviders.DatabaseLock.ExitWriteLock(); } }