/// <summary>Create a simulations object by reading the specified filename</summary> /// <param name="node">The node.</param> /// <returns></returns> /// <exception cref="System.Exception">Simulations.Read() failed. Invalid simulation file.\n</exception> public static Simulations Read(XmlNode node) { // Run the converter. APSIMFileConverter.ConvertToLatestVersion(node); // Deserialise Simulations simulations = XmlUtilities.Deserialise(node, Assembly.GetExecutingAssembly()) as Simulations; if (simulations != null) { // Set the filename simulations.SetFileNameInAllSimulations(); // Call the OnSerialised method in each model. object[] args = new object[] { true }; Events events = new Events(); events.AddModelEvents(simulations); events.CallEventHandler(simulations, "Deserialised", args); // Parent all models. simulations.Parent = null; Apsim.ParentAllChildren(simulations); CallOnLoaded(simulations); } else { throw new Exception("Simulations.Read() failed. Invalid simulation file.\n"); } return(simulations); }
/// <summary>Create a simulations object by reading the specified filename</summary> /// <param name="FileName">Name of the file.</param> /// <returns></returns> /// <exception cref="System.Exception">Simulations.Read() failed. Invalid simulation file.\n</exception> public static Simulations Read(string FileName) { // Run the converter. APSIMFileConverter.ConvertToLatestVersion(FileName); // Deserialise Simulations simulations = XmlUtilities.Deserialise(FileName, Assembly.GetExecutingAssembly()) as Simulations; if (simulations != null) { // Set the filename simulations.FileName = FileName; simulations.SetFileNameInAllSimulations(); // Call the OnDeserialised method in each model. Events events = new Core.Events(simulations); object[] args = new object[] { true }; events.Publish("Deserialised", args); // Parent all models. simulations.Parent = null; Apsim.ParentAllChildren(simulations); // Call OnLoaded in all models. LoadedEventArgs loadedArgs = new LoadedEventArgs(); events.Publish("Loaded", new object[] { simulations, loadedArgs }); if (loadedArgs.errors.Count > 0) { simulations.LoadErrors = new List <Exception>(); simulations.LoadErrors.AddRange(loadedArgs.errors); } } return(simulations); }
/// <summary>Create a simulations object by reading the specified filename</summary> /// <param name="FileName">Name of the file.</param> /// <returns></returns> /// <exception cref="System.Exception">Simulations.Read() failed. Invalid simulation file.\n</exception> public static Simulations Read(string FileName) { // Run the converter. APSIMFileConverter.ConvertToLatestVersion(FileName); // Deserialise Simulations simulations = XmlUtilities.Deserialise(FileName, Assembly.GetExecutingAssembly()) as Simulations; if (simulations != null) { // Set the filename simulations.FileName = FileName; simulations.SetFileNameInAllSimulations(); // Call the OnDeserialised method in each model. Events events = new Core.Events(); events.AddModelEvents(simulations); object[] args = new object[] { true }; events.CallEventHandler(simulations, "Deserialised", args); // Parent all models. simulations.Parent = null; Apsim.ParentAllChildren(simulations); // Call OnLoaded in all models. simulations.LoadErrors = new List <Exception>(); foreach (Model child in Apsim.ChildrenRecursively(simulations)) { try { events.CallEventHandler(child, "Loaded", null); } catch (ApsimXException err) { simulations.LoadErrors.Add(err); } catch (Exception err) { err.Source = child.Name; simulations.LoadErrors.Add(err); } } } return(simulations); }
/// <summary>Create a simulations object by reading the specified filename</summary> /// <param name="node">XML node to read from.</param> public ModelWrapper Read(XmlNode node) { APSIMFileConverter.ConvertToLatestVersion(node); XmlReader reader = new APSIMFileReader(node); reader.Read(); Assembly modelsAssembly = null; foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies()) { if (!a.IsDynamic && Path.GetFileName(a.Location) == "Models.exe") { modelsAssembly = a; } } return(XmlUtilities.Deserialise(reader, modelsAssembly) as ModelWrapper); }
/// <summary>Create a simulations object by reading the specified filename</summary> /// <param name="node">The node.</param> /// <returns></returns> /// <exception cref="System.Exception">Simulations.Read() failed. Invalid simulation file.\n</exception> public static Simulations Read(XmlNode node) { // Run the converter. APSIMFileConverter.ConvertToLatestVersion(node, null); // Deserialise Simulations simulations = XmlUtilities.Deserialise(node, Assembly.GetExecutingAssembly()) as Simulations; if (simulations != null) { // Set the filename simulations.SetFileNameInAllSimulations(); // Call the OnSerialised method in each model. object[] args = new object[] { true }; Events events = new Events(simulations); events.Publish("Deserialised", args); // Parent all models. simulations.Parent = null; Apsim.ParentAllChildren(simulations); LoadedEventArgs loadedArgs = new LoadedEventArgs(); events.Publish("Loaded", new object[] { simulations, loadedArgs }); if (loadedArgs.errors.Count > 0) { simulations.LoadErrors = new List <Exception>(); simulations.LoadErrors.AddRange(loadedArgs.errors); } } else { throw new Exception("Simulations.Read() failed. Invalid simulation file.\n"); } return(simulations); }