private void LoadOverrides(XmlNode xn, ParameterDataSetPtr datasetPtr) { var nodes = xn.SelectNodes("OverrideParameter"); foreach (XmlNode node in nodes) { var overrideParam = new ParameterOverride(); overrideParam.XMLNode = node.Attributes["Keyword"].Value; overrideParam.Active = node.Attributes["Active"].Value == "true"; if (RemapDictionary.ContainsKey(overrideParam.XMLNode)) { overrideParam.CodeName = RemapDictionary[overrideParam.XMLNode]; } else { throw new Exception($"Key {overrideParam.XMLNode} doesn't exist in Remap Dictioary"); } var valuenode = node.SelectSingleNode("Value"); if (valuenode != null) { overrideParam.Value = valuenode.InnerText; } datasetPtr.Overrides.Add(overrideParam); } }
private HowLeakyInputs_Soil GenerateSoilInputs(HowLeakyInputs_Soil inputs, ParameterDataSetPtr soilData) { if (soilData != null) { if (inputs == null) { inputs = new HowLeakyInputs_Soil(); } var properties = typeof(HowLeakyInputs_Soil).GetProperties().ToList(); var errors = LoadValues(soilData, inputs, properties); if (errors.Count > 0) { Errors.AddRange(errors); } return(inputs); } return(null); }
private ParameterDataSetPtr ExtractParameterSet(XmlNode xn, string elementname, Dictionary <string, ParameterDataSet> datasets) { var node = xn.SelectSingleNode(elementname); if (node != null) { var href = node.Attributes["href"].Value; var filename = Path.GetFileName(href); var dataset = datasets[filename]; if (dataset != null) { var datasetPtr = new ParameterDataSetPtr(dataset); LoadOverrides(node, datasetPtr); return(datasetPtr); } } return(null); }
private List <ParameterDataSetPtr> ExtractParameterSets(XmlNode xn, string elementname, Dictionary <string, ParameterDataSet> datasets) { var list = new List <ParameterDataSetPtr>(); var nodes = xn.SelectNodes("*"); foreach (XmlNode node in nodes) { if (node.Name.Contains(elementname)) { var href = node.Attributes["href"].Value; var filename = Path.GetFileName(href); var dataset = datasets[filename]; if (dataset != null) { var datasetPtr = new ParameterDataSetPtr(dataset); LoadOverrides(node, datasetPtr); list.Add(datasetPtr); } } } return(list); }
private List <string> LoadValues(ParameterDataSetPtr source, object inputs, List <PropertyInfo> properties) { var list = new List <string>(); var parameters = source.DataSet.Parameters; var overrides = source.Overrides; foreach (var parameter in parameters) { var property = properties.FirstOrDefault(x => x.Name == parameter.NameInCode); if (property != null) { if (TryUpdateParm(inputs, property, parameter.Value) == false) { if (parameter.NameInCode != "PAWC" && parameter.NameInCode != "MaxDailyDrainVolume") { list.Add($"Could not load {parameter.NameInCode} (type not defined)"); } } } else { if (parameter.NameInCode != "PAWC" && parameter.NameInCode != "MaxDailyDrainVolume" && parameter.NameInCode != "NitrateSourceData" && parameter.NameInCode != "WatStressForDeath" && parameter.NameInCode != "SoilNitrateTimeseries") { list.Add($"Could not FIND {parameter.NameInCode} parameter in input parameters (from {source.DataSet.SourceFileName})"); } } } foreach (var parameter in overrides) { if (String.IsNullOrEmpty(parameter.CodeName) == false) { var property = properties.FirstOrDefault(x => x.Name == parameter.CodeName); if (property != null) { if (TryUpdateParm(inputs, property, parameter.Value) == false) { list.Add($"Could not load override {property.Name} (type not defined)"); } } else { list.Add($"Could not FIND {parameter.CodeName} override in input parameters"); } } else { list.Add($"Override in Simulation {Index} has no name!!"); } } //foreach (var property in properties) //{ // var param1=overrides.FirstOrDefault(x=>x.CodeName==property.Name); // if(param1!=null) // { // if(TryUpdateParm(inputs,property,param1.Value)==false) // { // list.Add($"Could not load override {property.Name} (type not defined)"); // } // } // else // { // var param2=parameters.FirstOrDefault(x=>x.NameInFile==property.Name||x.NameInCode==property.Name); // if(param2!=null) // { // if(TryUpdateParm(inputs,property,param2.Value)==false) // { // list.Add($"Could not load {property.Name} value (type not defined)"); // } // } // else // { // list.Add($"Could not FIND {property.Name} parameter in datafile"); // } // } //} return(list); }
private HowLeakyInputs_Nitrate GeneratNitrateInputs(HowLeakyInputs_Nitrate inputs, ParameterDataSetPtr nitrateData) { if (nitrateData != null) { if (inputs == null) { inputs = new HowLeakyInputs_Nitrate(); } var properties = typeof(HowLeakyInputs_Nitrate).GetProperties().ToList(); var errors = LoadValues(nitrateData, inputs, properties); if (errors.Count > 0) { Errors.AddRange(errors); } return(inputs); } return(null); }
private HowLeakyInputs_Phosphorus GeneratePhosphorusInputs(HowLeakyInputs_Phosphorus inputs, ParameterDataSetPtr phosphorusData) { if (phosphorusData != null) { if (inputs == null) { inputs = new HowLeakyInputs_Phosphorus(); } var properties = typeof(HowLeakyInputs_Phosphorus).GetProperties().ToList(); var errors = LoadValues(phosphorusData, inputs, properties); if (errors.Count > 0) { Errors.AddRange(errors); } return(inputs); } return(null); }
private HowLeakyInputs_Irrigation GenerateIrrigationInputs(HowLeakyInputs_Irrigation inputs, ParameterDataSetPtr irrigation) { if (irrigation != null) { if (inputs == null) { inputs = new HowLeakyInputs_Irrigation(); } var properties = typeof(HowLeakyInputs_Irrigation).GetProperties().ToList(); var errors = LoadValues(irrigation, inputs, properties); if (errors.Count > 0) { Errors.AddRange(errors); } return(inputs); } return(null); }