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(); }
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."); }