示例#1
0
 /// <summary>
 /// Upgrades to version 48. Iterates through all manager scripts, and replaces
 /// all instances of the text "DisplayTypeEnum" with "DisplayType".
 /// </summary>
 /// <param name="root"></param>
 /// <param name="fileName"></param>
 private static void UpgradeToVersion48(JObject root, string fileName)
 {
     foreach (JObject manager in JsonUtilities.ChildrenRecursively(root, "Manager"))
     {
         JsonUtilities.ReplaceManagerCode(manager, "DisplayTypeEnum", "DisplayType");
     }
 }
示例#2
0
 /// <summary>
 /// Upgrades to version 57. Adds a RetranslocateNonStructural node to
 /// all GenericOrgans which do not have a child called
 /// RetranslocateNitrogen.
 /// </summary>
 /// <param name="root">The root JSON token.</param>
 /// <param name="fileName">The name of the apsimx file.</param>
 private static void UpgradeToVersion57(JObject root, string fileName)
 {
     foreach (JObject organ in JsonUtilities.ChildrenRecursively(root, "GenericOrgan"))
     {
         if (JsonUtilities.ChildWithName(organ, "RetranslocateNitrogen") == null)
         {
             JsonUtilities.AddModel(organ, typeof(RetranslocateNonStructural), "RetranslocateNitrogen");
         }
     }
 }
示例#3
0
 /// <summary>
 /// Upgrades to version 49. Renames Models.Morris+Parameter to Models.Sensitivity.Parameter.
 /// </summary>
 /// <param name="root"></param>
 /// <param name="fileName"></param>
 private static void UpgradeToVersion49(JObject root, string fileName)
 {
     foreach (JObject morris in JsonUtilities.ChildrenRecursively(root, "Models.Morris"))
     {
         foreach (var parameter in morris["Parameters"])
         {
             parameter["$type"] = parameter["$type"].ToString().Replace("Models.Morris+Parameter", "Models.Sensitivity.Parameter");
         }
     }
 }
示例#4
0
 ///<summary>
 /// Upgrades to version 50. Fixes the RelativeTo property of
 /// InitialWater components of soils copied from Apsim Classic.
 /// </summary>
 /// <param name="root"></param>
 /// <param name="fileName"></param>
 /// <remarks>
 /// ll15 must be renamed to LL15.
 /// Wheat must be renamed to WheatSoil.
 /// Maize must be renamed to MaizeSoil.
 /// </remarks>
 private static void UpgradeToVersion50(JObject root, string fileName)
 {
     foreach (JObject initialWater in JsonUtilities.ChildrenRecursively(root, "InitialWater"))
     {
         if (initialWater["RelativeTo"] != null)
         {
             if (initialWater["RelativeTo"].ToString().ToUpper().Contains("LL15"))
             {
                 initialWater["RelativeTo"] = initialWater["RelativeTo"].ToString().Replace("ll15", "LL15");
             }
             else if (!string.IsNullOrEmpty(initialWater["RelativeTo"].ToString()) && !initialWater["RelativeTo"].ToString().EndsWith("Soil"))
             {
                 initialWater["RelativeTo"] = initialWater["RelativeTo"].ToString() + "Soil";
             }
         }
     }
 }
示例#5
0
        /// <summary>
        /// Upgrades to version 58. Renames 'ParamThickness' to 'Thickness' in Weirdo.
        /// Also change calls to property soil.SWAtWaterThickness to soil.Thickness.
        /// </summary>
        /// <param name="root">The root JSON token.</param>
        /// <param name="fileName">The name of the apsimx file.</param>
        private static void UpgradeToVersion58(JObject root, string fileName)
        {
            foreach (JObject weirdo in JsonUtilities.ChildrenRecursively(root, "WEIRDO"))
            {
                var paramThicknessNode = weirdo["ParamThickness"];
                if (paramThicknessNode != null)
                {
                    weirdo["Thickness"] = paramThicknessNode;
                    weirdo.Remove("ParamThickness");
                }
            }

            foreach (var manager in JsonUtilities.ChildManagers(root))
            {
                if (manager.Replace(".SWAtWaterThickness", ".Thickness"))
                {
                    manager.Save();
                }
            }
        }
示例#6
0
        /// <summary>
        /// Change Factor.Specifications to Factor.Specification. Also FactorValue
        /// becomes CompositeFactor.
        /// </summary>
        /// <param name="root"></param>
        /// <param name="fileName"></param>
        private static void UpgradeToVersion56(JToken root, string fileName)
        {
            foreach (var factor in JsonUtilities.ChildrenRecursively(root as JObject, "Factor"))
            {
                var parent = JsonUtilities.Parent(factor);

                string parentModelType = JsonUtilities.Type(parent);
                if (parentModelType == "Factors")
                {
                    var specifications = factor["Specifications"] as JArray;
                    if (specifications != null)
                    {
                        if (specifications.Count > 1)
                        {
                            // must be a compound factor.

                            // Change our Factor to a CompositeFactor
                            factor["$type"] = "Models.Factorial.CompositeFactor, Models";

                            // Remove the Factor from it's parent.
                            var parentChildren = parent["Children"] as JArray;
                            parentChildren.Remove(factor);

                            // Create a new site factor and add our CompositeFactor to the children list.
                            var siteFactor = JsonUtilities.ChildWithName(parent as JObject, "Site") as JObject;
                            if (siteFactor == null)
                            {
                                // Create a site factor
                                siteFactor          = new JObject();
                                siteFactor["$type"] = "Models.Factorial.Factor, Models";
                                siteFactor["Name"]  = "Site";
                                JArray siteFactorChildren = new JArray();
                                siteFactor["Children"] = siteFactorChildren;

                                // Add our new site factor to our models parent.
                                parentChildren.Add(siteFactor);
                            }
                            (siteFactor["Children"] as JArray).Add(factor);
                        }
                        else
                        {
                            // Convert array to string.
                            if (specifications.Count > 0)
                            {
                                factor["Specification"] = specifications[0].ToString();
                            }
                        }
                    }
                }
                else if (parentModelType == "Factor")
                {
                    factor["$type"] = "Models.Factorial.CompositeFactor, Models";
                }
            }

            foreach (var series in JsonUtilities.ChildrenRecursively(root as JObject, "Series"))
            {
                var factorToVaryColours = series["FactorToVaryColours"];
                if (factorToVaryColours != null && factorToVaryColours.Value <string>() == "Simulation")
                {
                    series["FactorToVaryColours"] = "SimulationName";
                }
                var factorToVaryMarkers = series["FactorToVaryMarkers"];
                if (factorToVaryMarkers != null && factorToVaryMarkers.Value <string>() == "Simulation")
                {
                    series["FactorToVaryMarkers"] = "SimulationName";
                }
                var factorToVaryLines = series["FactorToVaryLines"];
                if (factorToVaryLines != null && factorToVaryLines.Value <string>() == "Simulation")
                {
                    series["FactorToVaryLines"] = "SimulationName";
                }
            }
        }