Esempio n. 1
0
 private void AddHydraulicBoundaryDatabaseToDataModel(ReadHydraulicBoundaryDatabase readHydraulicBoundaryDatabase,
                                                      ReadHydraulicLocationConfigurationDatabase readHydraulicLocationConfigurationDatabase,
                                                      IEnumerable <long> excludedLocationIds)
 {
     NotifyProgress(RiskeerCommonIOResources.Importer_ProgressText_Adding_imported_data_to_AssessmentSection, 4, numberOfSteps);
     changedObservables.AddRange(updateHandler.Update(ImportTarget, readHydraulicBoundaryDatabase, readHydraulicLocationConfigurationDatabase,
                                                      excludedLocationIds, FilePath, GetHlcdFilePath()));
 }
Esempio n. 2
0
        protected override bool OnImport()
        {
            ReadResult <ReadHydraulicBoundaryDatabase> readHydraulicBoundaryDatabaseResult = ReadHydraulicBoundaryDatabase();

            if (readHydraulicBoundaryDatabaseResult.CriticalErrorOccurred || Canceled)
            {
                return(false);
            }

            ReadHydraulicBoundaryDatabase readHydraulicBoundaryDatabase = readHydraulicBoundaryDatabaseResult.Items.Single();

            InquireConfirmation(readHydraulicBoundaryDatabase);

            if (Canceled)
            {
                return(false);
            }

            string hlcdFilePath = GetHlcdFilePath();

            ReadResult <ReadHydraulicLocationConfigurationDatabase> readHydraulicLocationConfigurationDatabaseResult = ReadHydraulicLocationConfigurationDatabase(
                hlcdFilePath, readHydraulicBoundaryDatabase.TrackId);

            if (readHydraulicLocationConfigurationDatabaseResult.CriticalErrorOccurred || Canceled)
            {
                return(false);
            }

            ReadHydraulicLocationConfigurationDatabase readHydraulicLocationConfigurationDatabase = readHydraulicLocationConfigurationDatabaseResult.Items.Single();
            IEnumerable <ReadHydraulicLocationConfigurationDatabaseSettings> hydraulicLocationConfigurationDatabaseSettings =
                readHydraulicLocationConfigurationDatabase.ReadHydraulicLocationConfigurationDatabaseSettings;

            if (hydraulicLocationConfigurationDatabaseSettings != null && hydraulicLocationConfigurationDatabaseSettings.Count() != 1)
            {
                Log.Error(BuildErrorMessage(hlcdFilePath, Resources.HydraulicBoundaryDatabaseImporter_HLCD_Invalid_number_of_ScenarioInformation_entries));
                return(false);
            }

            if (readHydraulicLocationConfigurationDatabase.UsePreprocessorClosure &&
                !File.Exists(HydraulicBoundaryDatabaseHelper.GetPreprocessorClosureFilePath(hlcdFilePath)))
            {
                Log.Error(BuildErrorMessage(hlcdFilePath, Resources.HydraulicBoundaryDatabaseImporter_PreprocessorClosure_sqlite_Not_Found));
                return(false);
            }

            ReadResult <IEnumerable <long> > readExcludedLocationsResult = ReadExcludedLocations();

            if (readExcludedLocationsResult.CriticalErrorOccurred || Canceled)
            {
                return(false);
            }

            AddHydraulicBoundaryDatabaseToDataModel(readHydraulicBoundaryDatabase, readHydraulicLocationConfigurationDatabase,
                                                    readExcludedLocationsResult.Items.Single());

            return(true);
        }
        public void Read_ValidFileWithUsePreprocessClosureColumn_ExpectedValues(int trackId, bool expectedUsePreprocessorClosure)
        {
            string dbFile = Path.Combine(testDataPath, "hlcdWithPreprocessorClosureColumn.sqlite");

            using (var hydraulicBoundaryDatabaseReader = new HydraulicLocationConfigurationDatabaseReader(dbFile))
            {
                // Call
                ReadHydraulicLocationConfigurationDatabase readHydraulicLocationConfigurationDatabase = hydraulicBoundaryDatabaseReader.Read(trackId);

                // Assert
                Assert.AreEqual(expectedUsePreprocessorClosure, readHydraulicLocationConfigurationDatabase.UsePreprocessorClosure);
            }
        }
        public void Constructor_ExpectedValues()
        {
            // Setup
            IEnumerable <ReadHydraulicLocationMapping> locationIdMappings = Enumerable.Empty <ReadHydraulicLocationMapping>();
            IEnumerable <ReadHydraulicLocationConfigurationDatabaseSettings> databaseSettings = Enumerable.Empty <ReadHydraulicLocationConfigurationDatabaseSettings>();
            bool usePreprocessorClosure = new Random(21).NextBoolean();

            // Call
            var readDatabase = new ReadHydraulicLocationConfigurationDatabase(locationIdMappings, databaseSettings, usePreprocessorClosure);

            // Assert
            Assert.AreSame(locationIdMappings, readDatabase.LocationIdMappings);
            Assert.AreSame(databaseSettings, readDatabase.ReadHydraulicLocationConfigurationDatabaseSettings);
            Assert.AreEqual(usePreprocessorClosure, readDatabase.UsePreprocessorClosure);
        }
        public void Read_ValidFileWithoutScenarioInformation_ExpectedValues(int trackId, int hrdLocationId, int expectedLocationId)
        {
            // Setup
            string dbFile = Path.Combine(testDataPath, "hlcdWithoutScenarioInformation.sqlite");

            using (var hydraulicBoundaryDatabaseReader = new HydraulicLocationConfigurationDatabaseReader(dbFile))
            {
                // Call
                ReadHydraulicLocationConfigurationDatabase readHydraulicLocationConfigurationDatabase = hydraulicBoundaryDatabaseReader.Read(trackId);

                // Assert
                long actualLocationId = readHydraulicLocationConfigurationDatabase.LocationIdMappings.Where(m => m.HrdLocationId == hrdLocationId)
                                        .Select(m => m.HlcdLocationId)
                                        .SingleOrDefault();
                Assert.AreEqual(expectedLocationId, actualLocationId);
                Assert.IsFalse(readHydraulicLocationConfigurationDatabase.UsePreprocessorClosure);
                Assert.IsNull(readHydraulicLocationConfigurationDatabase.ReadHydraulicLocationConfigurationDatabaseSettings);
            }
        }
        public void Read_AmbiguousLocations_ReturnsFirstLocationIdAndLogsWarning()
        {
            // Setup
            string    dbFile        = Path.Combine(testDataPath, "ambigousLocation.sqlite");
            const int trackId       = 11;
            const int hrdLocationId = 1;
            ReadHydraulicLocationConfigurationDatabase readHydraulicLocationConfigurationDatabase = null;

            using (var hydraulicBoundaryDatabaseReader = new HydraulicLocationConfigurationDatabaseReader(dbFile))
            {
                // Call
                Action call = () => readHydraulicLocationConfigurationDatabase = hydraulicBoundaryDatabaseReader.Read(trackId);

                // Assert
                const int    expectedLocationId = 1800001;
                const string expectedMessage    = "Er zijn meerdere resultaten gevonden, wat niet voor zou mogen komen. Neem contact op met de leverancier. Het eerste resultaat zal worden gebruikt.";
                TestHelper.AssertLogMessageIsGenerated(call, expectedMessage, 1);
                long actualLocationId = readHydraulicLocationConfigurationDatabase.LocationIdMappings.Where(m => m.HrdLocationId == hrdLocationId)
                                        .Select(m => m.HlcdLocationId)
                                        .Single();
                Assert.AreEqual(expectedLocationId, actualLocationId);
            }
        }
        protected override bool OnImport()
        {
            InquireConfirmation();

            if (Canceled)
            {
                return(false);
            }

            if (Path.GetDirectoryName(FilePath) != Path.GetDirectoryName(hydraulicBoundaryDatabase.FilePath))
            {
                Log.Error(BuildErrorMessage(FilePath, Resources.HydraulicLocationConfigurationDatabaseImporter_HLCD_not_in_same_folder_as_HRD));
                return(false);
            }

            ReadResult <long> readTrackIdResult = ReadTrackId();

            if (readTrackIdResult.CriticalErrorOccurred || Canceled)
            {
                return(false);
            }

            ReadResult <ReadHydraulicLocationConfigurationDatabase> readHydraulicLocationConfigurationDatabaseResult = ReadHydraulicLocationConfigurationDatabase(
                readTrackIdResult.Items.Single());

            if (readHydraulicLocationConfigurationDatabaseResult.CriticalErrorOccurred || Canceled)
            {
                return(false);
            }

            ReadHydraulicLocationConfigurationDatabase readHydraulicLocationConfigurationDatabase = readHydraulicLocationConfigurationDatabaseResult.Items.Single();

            if (readHydraulicLocationConfigurationDatabase.ReadHydraulicLocationConfigurationDatabaseSettings != null &&
                readHydraulicLocationConfigurationDatabase.ReadHydraulicLocationConfigurationDatabaseSettings.Count() != 1)
            {
                Log.Error(BuildErrorMessage(FilePath, Resources.HydraulicLocationConfigurationDatabaseImporter_Invalid_number_of_ScenarioInformation_entries));
                return(false);
            }

            if (readHydraulicLocationConfigurationDatabase.UsePreprocessorClosure &&
                !File.Exists(HydraulicBoundaryDatabaseHelper.GetPreprocessorClosureFilePath(FilePath)))
            {
                Log.Error(BuildErrorMessage(FilePath, Resources.HydraulicBoundaryDatabaseImporter_PreprocessorClosure_sqlite_Not_Found));
                return(false);
            }

            IEnumerable <long> locationIds = hydraulicBoundaryDatabase.Locations.Select(l => l.Id);

            long[] intersect = locationIds.Intersect(readHydraulicLocationConfigurationDatabase.LocationIdMappings.Select(l => l.HlcdLocationId))
                               .ToArray();

            if (intersect.Length != locationIds.Count())
            {
                Log.Error(BuildErrorMessage(FilePath, Resources.HydraulicLocationConfigurationDatabaseImporter_Invalid_locationIds));
                return(false);
            }

            AddHydraulicLocationConfigurationSettingsToDataModel(
                readHydraulicLocationConfigurationDatabase.ReadHydraulicLocationConfigurationDatabaseSettings?.Single(),
                readHydraulicLocationConfigurationDatabase.UsePreprocessorClosure);

            return(true);
        }
        public void Read_ValidFileWithScenarioInformation_ExpectedValues(int trackId, int hrdLocationId, int expectedLocationId)
        {
            // Setup
            string dbFile = Path.Combine(testDataPath, "hlcdWithScenarioInformation.sqlite");

            using (var hydraulicBoundaryDatabaseReader = new HydraulicLocationConfigurationDatabaseReader(dbFile))
            {
                // Call
                ReadHydraulicLocationConfigurationDatabase readHydraulicLocationConfigurationDatabase = hydraulicBoundaryDatabaseReader.Read(trackId);

                // Assert
                long actualLocationId = readHydraulicLocationConfigurationDatabase.LocationIdMappings.Where(m => m.HrdLocationId == hrdLocationId)
                                        .Select(m => m.HlcdLocationId)
                                        .SingleOrDefault();
                Assert.AreEqual(expectedLocationId, actualLocationId);
                Assert.IsFalse(readHydraulicLocationConfigurationDatabase.UsePreprocessorClosure);
                IEnumerable <ReadHydraulicLocationConfigurationDatabaseSettings> readHydraulicLocationConfigurationDatabaseSettings =
                    readHydraulicLocationConfigurationDatabase.ReadHydraulicLocationConfigurationDatabaseSettings;
                Assert.AreEqual(2, readHydraulicLocationConfigurationDatabaseSettings.Count());

                CollectionAssert.AreEqual(new[]
                {
                    "ScenarioName WBI2017",
                    "ScenarioName WBI2018"
                }, readHydraulicLocationConfigurationDatabaseSettings.Select(s => s.ScenarioName));
                CollectionAssert.AreEqual(new[]
                {
                    2023,
                    2024
                }, readHydraulicLocationConfigurationDatabaseSettings.Select(s => s.Year));
                CollectionAssert.AreEqual(new[]
                {
                    "Scope WBI2017",
                    "Scope WBI2018"
                }, readHydraulicLocationConfigurationDatabaseSettings.Select(s => s.Scope));
                CollectionAssert.AreEqual(new[]
                {
                    "SeaLevel WBI2017",
                    "SeaLevel WBI2018"
                }, readHydraulicLocationConfigurationDatabaseSettings.Select(s => s.SeaLevel));
                CollectionAssert.AreEqual(new[]
                {
                    "RiverDischarge WBI2017",
                    "RiverDischarge WBI2018"
                }, readHydraulicLocationConfigurationDatabaseSettings.Select(s => s.RiverDischarge));
                CollectionAssert.AreEqual(new[]
                {
                    "LakeLevel WBI2017",
                    "LakeLevel WBI2018"
                }, readHydraulicLocationConfigurationDatabaseSettings.Select(s => s.LakeLevel));
                CollectionAssert.AreEqual(new[]
                {
                    "WindDirection WBI2017",
                    "WindDirection WBI2018"
                }, readHydraulicLocationConfigurationDatabaseSettings.Select(s => s.WindDirection));
                CollectionAssert.AreEqual(new[]
                {
                    "WindSpeed WBI2017",
                    "WindSpeed WBI2018"
                }, readHydraulicLocationConfigurationDatabaseSettings.Select(s => s.WindSpeed));
                CollectionAssert.AreEqual(new[]
                {
                    "Comment WBI2017",
                    "Comment WBI2018"
                }, readHydraulicLocationConfigurationDatabaseSettings.Select(s => s.Comment));
            }
        }
Esempio n. 9
0
        public IEnumerable <IObservable> Update(HydraulicBoundaryDatabase hydraulicBoundaryDatabase, ReadHydraulicBoundaryDatabase readHydraulicBoundaryDatabase,
                                                ReadHydraulicLocationConfigurationDatabase readHydraulicLocationConfigurationDatabase,
                                                IEnumerable <long> excludedLocationIds, string hydraulicBoundaryDatabaseFilePath, string hlcdFilePath)
        {
            if (hydraulicBoundaryDatabase == null)
            {
                throw new ArgumentNullException(nameof(hydraulicBoundaryDatabase));
            }

            if (readHydraulicBoundaryDatabase == null)
            {
                throw new ArgumentNullException(nameof(readHydraulicBoundaryDatabase));
            }

            if (readHydraulicLocationConfigurationDatabase == null)
            {
                throw new ArgumentNullException(nameof(readHydraulicLocationConfigurationDatabase));
            }

            if (excludedLocationIds == null)
            {
                throw new ArgumentNullException(nameof(excludedLocationIds));
            }

            if (hydraulicBoundaryDatabaseFilePath == null)
            {
                throw new ArgumentNullException(nameof(hydraulicBoundaryDatabaseFilePath));
            }

            if (hlcdFilePath == null)
            {
                throw new ArgumentNullException(nameof(hlcdFilePath));
            }

            if (!IsValidReadHydraulicLocationConfigurationDatabase(readHydraulicLocationConfigurationDatabase))
            {
                string errorMessage = $"{nameof(readHydraulicLocationConfigurationDatabase)} must be null or contain exactly one item for " +
                                      "the collection of hydraulic location configuration database settings.";
                throw new ArgumentException(errorMessage);
            }

            var changedObjects = new List <IObservable>();

            updateLocations = !hydraulicBoundaryDatabase.IsLinked() || hydraulicBoundaryDatabase.Version != readHydraulicBoundaryDatabase.Version;

            if (updateLocations)
            {
                hydraulicBoundaryDatabase.FilePath = hydraulicBoundaryDatabaseFilePath;
                hydraulicBoundaryDatabase.Version  = readHydraulicBoundaryDatabase.Version;

                SetLocations(hydraulicBoundaryDatabase, readHydraulicBoundaryDatabase.Locations,
                             readHydraulicLocationConfigurationDatabase.LocationIdMappings,
                             excludedLocationIds.ToArray());

                assessmentSection.SetHydraulicBoundaryLocationCalculations(hydraulicBoundaryDatabase.Locations);

                duneLocationsReplacementHandler.Replace(hydraulicBoundaryDatabase.Locations);

                changedObjects.AddRange(GetLocationsAndCalculationsObservables(hydraulicBoundaryDatabase));
                changedObjects.AddRange(RiskeerDataSynchronizationService.ClearAllCalculationOutputAndHydraulicBoundaryLocations(assessmentSection));
            }
            else
            {
                if (hydraulicBoundaryDatabase.FilePath != hydraulicBoundaryDatabaseFilePath)
                {
                    hydraulicBoundaryDatabase.FilePath = hydraulicBoundaryDatabaseFilePath;
                }
            }

            HydraulicLocationConfigurationSettingsUpdateHelper.SetHydraulicLocationConfigurationSettings(
                hydraulicBoundaryDatabase.HydraulicLocationConfigurationSettings,
                readHydraulicLocationConfigurationDatabase.ReadHydraulicLocationConfigurationDatabaseSettings?.Single(),
                readHydraulicLocationConfigurationDatabase.UsePreprocessorClosure,
                hlcdFilePath);

            return(changedObjects);
        }
Esempio n. 10
0
 private static bool IsValidReadHydraulicLocationConfigurationDatabase(ReadHydraulicLocationConfigurationDatabase readHydraulicLocationConfigurationDatabase)
 {
     return(readHydraulicLocationConfigurationDatabase.ReadHydraulicLocationConfigurationDatabaseSettings == null ||
            readHydraulicLocationConfigurationDatabase.ReadHydraulicLocationConfigurationDatabaseSettings.Count() == 1);
 }