using System.Collections.Generic; using System.Linq; using Application.Ringtoets.Storage.Create; using Application.Ringtoets.Storage.DbContext; using Core.Common.Utils; namespace Application.Ringtoets.Storage.Update { public class UpdateConversionCollector : CreateConversionCollector { private readonly HashSet projects = new HashSet(new ReferenceEqualityComparer()); private readonly HashSet assessmentSections = new HashSet(new ReferenceEqualityComparer()); private readonly HashSet failureMechanisms = new HashSet(new ReferenceEqualityComparer()); private readonly HashSet hydraulicLocations = new HashSet(new ReferenceEqualityComparer()); private readonly HashSet stochasticSoilModels = new HashSet(new ReferenceEqualityComparer()); private readonly HashSet stochasticSoilProfiles = new HashSet(new ReferenceEqualityComparer()); private readonly HashSet soilProfiles = new HashSet(new ReferenceEqualityComparer()); private readonly HashSet soilLayers = new HashSet(new ReferenceEqualityComparer()); internal void Update(ProjectEntity entity) { projects.Add(entity); } internal void Update(AssessmentSectionEntity entity) { assessmentSections.Add(entity); } internal void Update(FailureMechanismEntity entity) { failureMechanisms.Add(entity); } internal void Update(HydraulicLocationEntity entity) { hydraulicLocations.Add(entity); } internal void Update(StochasticSoilModelEntity entity) { stochasticSoilModels.Add(entity); } internal void Update(StochasticSoilProfileEntity entity) { stochasticSoilProfiles.Add(entity); } internal void Update(SoilProfileEntity entity) { soilProfiles.Add(entity); } internal void Update(SoilLayerEntity entity) { soilLayers.Add(entity); } public void RemoveUntouched(IRingtoetsEntities dbContext) { var projectEntities = dbContext.ProjectEntities; projectEntities.RemoveRange(projectEntities.Local.Except(projects)); var assessmentSectionEntities = dbContext.AssessmentSectionEntities; assessmentSectionEntities.RemoveRange(assessmentSectionEntities.Local.Except(assessmentSections)); var failureMechanismEntities = dbContext.FailureMechanismEntities; failureMechanismEntities.RemoveRange(failureMechanismEntities.Local.Except(failureMechanisms)); var hydraulicLocationEntities = dbContext.HydraulicLocationEntities; hydraulicLocationEntities.RemoveRange(hydraulicLocationEntities.Local.Except(hydraulicLocations)); var stochasticSoilModelEntities = dbContext.StochasticSoilModelEntities; stochasticSoilModelEntities.RemoveRange(stochasticSoilModelEntities.Local.Except(stochasticSoilModels)); var stochasticSoilProfileEntities = dbContext.StochasticSoilProfileEntities; stochasticSoilProfileEntities.RemoveRange(stochasticSoilProfileEntities.Local.Except(stochasticSoilProfiles)); var soilProfileEntities = dbContext.SoilProfileEntities; soilProfileEntities.RemoveRange(soilProfileEntities.Local.Except(soilProfiles)); var soilLayerEntities = dbContext.SoilLayerEntities; soilLayerEntities.RemoveRange(soilLayerEntities.Local.Except(soilLayers)); } } }