public CalcParameters MakeCalculationParametersFromConfig([NotNull] CalcStartParameterSet csps, bool forceRandom) { CalcParameters cp = CalcParameters.GetNew(); cp.LoadtypesToPostprocess = csps.LoadTypesToProcess; cp.SetDeleteDatFiles(csps.DeleteDatFiles); cp.SetWriteExcelColumn (csps.WriteExcelColumn); cp.SetManyOptionsWithClear(csps.CalcOptions); FileFactoryAndTrackerDummy fftd = new FileFactoryAndTrackerDummy(); var container =PostProcessingManager.RegisterEverything(csps.ResultPath,csps.CalculationProfiler, fftd); using (var scope = container.BeginLifetimeScope()) { var odm = scope.Resolve<OptionDependencyManager>(); odm.EnableRequiredOptions(cp.Options); } cp.SetShowSettlingPeriod(csps.ShowSettlingPeriod); cp.SetRandomSeed(csps.SelectedRandomSeed, forceRandom); cp.SetCsvCharacter(csps.CsvCharacter); cp.SetStartDate(csps.OfficialSimulationStartTime); cp.SetEndDate(csps.OfficialSimulationEndTime.AddDays(1)); cp.SetInternalTimeResolution(csps.InternalTimeResolution); cp.SetExternalTimeResolution(csps.ExternalTimeResolution); cp.SetLoadTypePriority(csps.LoadTypePriority); cp.SetSettlingDays(csps.SettlingDays); cp.SetAffordanceRepetitionCount(csps.AffordanceRepetitionCount); cp.DeviceProfileHeaderMode = csps.DeviceProfileHeaderMode; cp.IgnorePreviousActivitesWhenNeeded = csps.IgnorePreviousActivitiesWhenNeeded; cp.TransportationEnabled = csps.TransportationEnabled; if (cp.TransportationEnabled && csps.CalcTarget.CalcObjectType == CalcObjectType.House) { if (csps.ChargingStationSet != null) { throw new LPGException("trying to set transportation options on a house. that won't work."); } if (csps.TransportationDeviceSet != null) { throw new LPGException("trying to set transportation options on a house. that won't work."); } if (csps.TravelRouteSet != null) { throw new LPGException("trying to set transportation options on a house. that won't work."); } } if (cp.TransportationEnabled && csps.CalcTarget.CalcObjectType == CalcObjectType.ModularHousehold) { if (csps.ChargingStationSet == null) { throw new LPGException("Trying to set transportation options on a household without charging station set. That won't work."); } if (csps.TransportationDeviceSet == null) { throw new LPGException("Trying to set transportation options on a household without transportation device set. That won't work."); } if (csps.TravelRouteSet != null) { throw new LPGException("trying to set transportation options on a house. that won't work."); } } cp.CheckSettings(); //transport mode /*if (csps.TransportationDeviceSet != null || csps.TravelRouteSet != null) { cp.SetTransportMode(true); if (csps.TransportationDeviceSet == null ) { throw new DataIntegrityException("Only a transportation device set was defined, but not a travel route set. This can't work."); } if (csps.TravelRouteSet == null) { throw new DataIntegrityException("Only a travel route set was defined, but not a transportation device set. This can't work."); } }*/ return cp; }
// ReSharper disable once CollectionNeverUpdated.Local public static void CheckForResultfile(string wd, CalcOption option) { var srls = new SqlResultLoggingService(wd); var rfel = new ResultFileEntryLogger(srls); var rfes = rfel.Load(); var foundOptions = new List <CalcOption>(); //collect all the file keys foreach (var rfe in rfes) { if (!File.Exists(rfe.FullFileName)) { throw new LPGException("File " + rfe.FullFileName + " was registered, but is not actually present."); } foundOptions.Add(rfe.EnablingCalcOption); } // ReSharper disable once CollectionNeverQueried.Local var allTables = new List <ResultTableDefinition>(); var hhKeyLogger = new HouseholdKeyLogger(srls); var keys = hhKeyLogger.Load(); foreach (var key in keys) { if (!srls.FilenameByHouseholdKey.ContainsKey(key.HHKey)) { continue; } var fn = srls.FilenameByHouseholdKey[key.HHKey]; if (!File.Exists(fn.Filename)) { continue; } var tables = srls.LoadTables(key.HHKey); allTables.AddRange(tables); foreach (var table in tables) { foundOptions.Add(table.EnablingOption); } } foundOptions = foundOptions.Distinct().ToList(); var optionsThatDontResultInFiles = new List <CalcOption>(); optionsThatDontResultInFiles.Add(CalcOption.MakePDF); optionsThatDontResultInFiles.Add(CalcOption.ActionCarpetPlot); optionsThatDontResultInFiles.Add(CalcOption.HouseholdPlan); optionsThatDontResultInFiles.Add(CalcOption.CalculationFlameChart); optionsThatDontResultInFiles.Add(CalcOption.MakeGraphics); optionsThatDontResultInFiles.Add(CalcOption.LogErrorMessages); optionsThatDontResultInFiles.Add(CalcOption.EnergyCarpetPlot); optionsThatDontResultInFiles.Add(CalcOption.DurationCurve); optionsThatDontResultInFiles.Add(CalcOption.TransportationDeviceCarpetPlot); optionsThatDontResultInFiles.Add(CalcOption.LocationCarpetPlot); if (!optionsThatDontResultInFiles.Contains(option)) { if (!foundOptions.Contains(option)) { throw new LPGException("Option found that doesn't result in any files"); } } var fftd = new FileFactoryAndTrackerDummy(); var cp = new CalculationProfiler(); var container = PostProcessingManager.RegisterEverything(wd, cp, fftd); var enabledOptions = new HashSet <CalcOption>(); enabledOptions.Add(option); using (var scope = container.BeginLifetimeScope()) { var odm = scope.Resolve <OptionDependencyManager>(); odm.EnableRequiredOptions(enabledOptions); } foreach (var enabledOption in enabledOptions) { foundOptions.Remove(enabledOption); } if (foundOptions.Contains(CalcOption.BasicOverview)) { foundOptions.Remove(CalcOption.BasicOverview); } if (foundOptions.Count > 0) { var s = string.Join("\n", foundOptions.Select(x => x.ToString())); throw new LPGException("found stuff that was not requested:" + s); } var filesthatdontneedtoregister = new List <string>(); filesthatdontneedtoregister.Add("finished.flag"); filesthatdontneedtoregister.Add("log.commandlinecalculation.txt"); filesthatdontneedtoregister.Add("results.general.sqlite"); filesthatdontneedtoregister.Add("results.general.sqlite-wal"); filesthatdontneedtoregister.Add("results.general.sqlite-shm"); filesthatdontneedtoregister.Add("results.hh1.sqlite"); filesthatdontneedtoregister.Add("results.hh1.sqlite-shm"); filesthatdontneedtoregister.Add("results.hh1.sqlite-wal"); filesthatdontneedtoregister.Add("results.house.sqlite"); filesthatdontneedtoregister.Add("results.house.sqlite-shm"); filesthatdontneedtoregister.Add("results.house.sqlite-wal"); filesthatdontneedtoregister.Add("calculationprofiler.json"); //check if all files are registered var di = new DirectoryInfo(wd); var files = di.GetFiles("*.*", SearchOption.AllDirectories); var registeredFiles = rfes.Select(x => x.FullFileName).ToList(); foreach (var file in files) { if (filesthatdontneedtoregister.Contains(file.Name.ToLower(CultureInfo.InvariantCulture))) { continue; } if (!registeredFiles.Contains(file.FullName)) { throw new LPGException("Found unregistered file: " + file.FullName); } } //foundKeys = foundKeys.Distinct().ToList(); //if (_resultFileIdsByCalcOption.ContainsKey(option)) { // var rl = _resultFileIdsByCalcOption[option]; // foreach (var key in rl.ResultKeys) { // if (!foundKeys.Contains(key)) { // throw new LPGException("in the found keys the file " + key + " is missing."); // } // } // foreach (var key in foundKeys) { // if (!rl.ResultKeys.Contains(key)) { // throw new LPGException("in the result list keys the file " + key + " is missing."); // } // } //} //else { // //todo: this needs to be done differently. need to disable as much as possible except the given calc option first. // var sb = new StringBuilder(); // sb.Append("--------------"); // sb.AppendLine(); // sb.Append("_resultFileIdsByCalcOption.Add(CalcOption." + option + ", ResultList.Make(CalcOption."); // sb.Append(option).Append(", "); // foreach (var key in foundKeys) { // sb.AppendLine(); // sb.Append("\"").Append(key).Append("\", "); // } // sb.Remove(sb.Length - 2, 2); // sb.Append("));"); // sb.AppendLine(); // sb.Append("--------------"); // Logger.Info(sb.ToString()); // //throw new LPGException(sb.ToString()); //} }