Exemple #1
0
        private RunningConfig([NotNull] List <Options> myOptions,
                              [NotNull] List <Stage> stagesToExecute,
                              bool makeCharts,
                              int numberOfTrafokreiseToProcess,
                              [NotNull] DirectoryConfig dc,
                              [CanBeNull] List <int> limitToYears,
                              [NotNull][ItemNotNull] List <Scenario> limitToScenarios)
        {
            MyOptions       = myOptions;
            StagesToExecute = stagesToExecute;
            MakeCharts      = makeCharts;
            NumberOfTrafokreiseToProcess = numberOfTrafokreiseToProcess;
            Directories = dc;
            if (limitToYears != null)
            {
                LimitToYears.AddRange(limitToYears);
            }

            LimitToScenarios.AddRange(limitToScenarios);
            CheckInitalisation();
        }
Exemple #2
0
        public void InitializeSlices([NotNull] ILogger logger)
        {
            if (MyOptions.Contains(Options.UseOnlyPresent) && MyOptions.Contains(Options.ReadFromExcel))
            {
                throw new Exception("both excel and only present are set. that doesn't work.");
            }

            if (MyOptions.Contains(Options.UseOnlyPresent))
            {
                var slices = new List <ScenarioSliceParameters> {
                    Constants.PresentSlice
                };
                _slices = slices;
                return;
            }

            if (MyOptions.Contains(Options.ReadFromExcel))
            {
                ScenarioSheetHandler ssh = new ScenarioSheetHandler(logger);
                string excelFilename     = "ScenarioDefinitions.xlsx";
                if (!File.Exists(excelFilename))
                {
                    excelFilename = Path.Combine(Directories.BaseUserSettingsDirectory, "ScenarioDefinitions.xlsx");
                }

                var slices = ssh.GetData(excelFilename);
                if (slices.Count == 0)
                {
                    throw new Exception(
                              "Could not find the scenariodefinition.xlsx. Wrote a new one or added to the current one. Please fill and try again. ");
                }

                if (MyOptions.Contains(Options.AddPresent))
                {
                    slices.Add(Constants.PresentSlice);
                }

                logger.Info("Slices left after reading: " + slices.Count, Stage.Preparation, nameof(RunningConfig));
                if (LimitToScenarios.Count > 0)
                {
                    foreach (var scenario in LimitToScenarios)
                    {
                        if (slices.All(x => x.DstScenario != scenario))
                        {
                            throw new FlaException("Not a single scenario found for the scenario name: " + scenario);
                        }
                    }

                    slices = slices.Where(x => LimitToScenarios.Contains(x.DstScenario)).ToList();
                }

                logger.Info("Slices left after filtering for dst scenario: " + string.Join(",", LimitToScenarios) + ": " + slices.Count,
                            Stage.Preparation,
                            nameof(RunningConfig));
                if (LimitToYears.Count > 0)
                {
                    slices = slices.Where(x => LimitToYears.Contains(x.DstYear)).ToList();
                }

                logger.Info("Slices left after filtering for dst year: " + JsonConvert.SerializeObject(LimitToYears) + ": " + slices.Count,
                            Stage.Preparation,
                            nameof(RunningConfig));
                if (slices.Count == 0)
                {
                    throw new FlaException("Invalid year/scenario specified, not a single slice found");
                }

                _slices = slices;
                return;
            }

            throw new Exception("No scenario slice parameter was set.");
        }