private void TryAddItem(TransitionTargetPrioritization item)
        {
            try
            {
                this.AddItem(item.TransitionGroupId, item.StratumId, item.SecondaryStratumId, item.TertiaryStratumId, item.StateClassId, item.Iteration, item.Timestep, item);
            }
            catch (STSimMapDuplicateItemException)
            {
                string template =
                    "A duplicate transition target prioritization was detected: More information:" +
                    Environment.NewLine +
                    "Transition Group={0}, {1}={2}, {3}={4}, {5}={6}, State Class={7}, Iteration={8}, Timestep={9}.";

                ExceptionUtils.ThrowArgumentException(
                    template,
                    this.GetTransitionGroupName(item.TransitionGroupId),
                    this.PrimaryStratumLabel,
                    this.GetStratumName(item.StratumId),
                    this.SecondaryStratumLabel,
                    this.GetSecondaryStratumName(item.SecondaryStratumId),
                    this.TertiaryStratumLabel,
                    this.GetTertiaryStratumName(item.TertiaryStratumId),
                    this.GetStateClassName(item.StateClassId),
                    STSimMapBase.FormatValue(item.Iteration),
                    STSimMapBase.FormatValue(item.Timestep));
            }

            Debug.Assert(this.HasItems);
        }
예제 #2
0
        private void AddAttributeValue(TransitionAttributeValue item)
        {
            AttributeValueAgeBinCollection AgeBins = this.GetItemExact(
                item.TransitionAttributeTypeId, item.TransitionGroupId,
                item.StratumId, item.SecondaryStratumId, item.TertiaryStratumId,
                item.StateClassId, item.Iteration, item.Timestep);

            if (AgeBins == null)
            {
                AgeBins = new AttributeValueAgeBinCollection(this.m_Project);

                this.AddItem(
                    item.TransitionAttributeTypeId, item.TransitionGroupId,
                    item.StratumId, item.SecondaryStratumId, item.TertiaryStratumId,
                    item.StateClassId, item.Iteration, item.Timestep, AgeBins);
            }

            try
            {
                AttributeValueAgeBin Bin = AgeBins.GetOrCreateAgeBin(item.MinimumAge, item.MaximumAge);
                Bin.AddReference(new AttributeValueReference(item.TSTGroupId, item.TSTMin, item.TSTMax, item));
            }
            catch (STSimMapDuplicateItemException)
            {
                string template = "A duplicate Transition Attribute value has been created. More information:" +
                                  Environment.NewLine + "Transition Attribute={0}, Transition Group={1}, {2}={3}, {4}={5}, {6}={7}, MinAge={8}, MaxAge={9}, TSTMin={10}, TSTMax={11}, TSTGroup={12}, Iteration={13}, Timestep={14}." +
                                  Environment.NewLine + "NOTE: A user defined distribution can result in additional Transition Attributes when the model is run.";

                ExceptionUtils.ThrowArgumentException(template,
                                                      this.GetTransitionAttributeTypeName(item.TransitionAttributeTypeId),
                                                      this.GetTransitionGroupName(item.TransitionGroupId),
                                                      this.PrimaryStratumLabel,
                                                      this.GetStratumName(item.StratumId),
                                                      this.SecondaryStratumLabel,
                                                      this.GetSecondaryStratumName(item.SecondaryStratumId),
                                                      this.TertiaryStratumLabel,
                                                      this.GetTertiaryStratumName(item.TertiaryStratumId),
                                                      item.MinimumAge,
                                                      item.MaximumAge == int.MaxValue ? "NULL" : item.MaximumAge.ToString(),
                                                      STSimMapBase.FormatValue(item.TSTMin),
                                                      (!item.TSTMax.HasValue || item.TSTMax.Value == int.MaxValue) ? "NULL" : item.TSTMax.ToString(),
                                                      this.GetTSTGroupString(item.TSTGroupId),
                                                      STSimMapBase.FormatValue(item.Iteration),
                                                      STSimMapBase.FormatValue(item.Timestep));
            }

            if (!this.m_TypeGroupMap.ContainsKey(item.TransitionGroupId))
            {
                this.m_TypeGroupMap.Add(item.TransitionGroupId, new Dictionary <int, bool>());
            }

            Dictionary <int, bool> d = TypeGroupMap[item.TransitionGroupId];

            if (!d.ContainsKey(item.TransitionAttributeTypeId))
            {
                d.Add(item.TransitionAttributeTypeId, true);
            }

            Debug.Assert(this.HasItems);
        }
예제 #3
0
        private void AddItem(InitialTSTSpatial item)
        {
            SortedKeyMap1 <InitialTSTSpatial> m = this.m_Map.GetItemExact(item.TSTGroupId);

            if (m == null)
            {
                m = new SortedKeyMap1 <InitialTSTSpatial>(SearchMode.ExactPrev);
                this.m_Map.AddItem(item.TSTGroupId, m);
            }

            InitialTSTSpatial v = m.GetItemExact(item.Iteration);

            if (v != null)
            {
                string msg = string.Format(CultureInfo.InvariantCulture,
                                           "A record already exists for Transition Group={0} and iteration={1}.",
                                           this.GetTransitionGroupName(item.TSTGroupId),
                                           STSimMapBase.FormatValue(item.Iteration));

                throw new ArgumentException(msg);
            }

            m.AddItem(item.Iteration, item);
            this.m_HasItems = true;
        }
예제 #4
0
        private void AddAttributeValue(StateAttributeValue item)
        {
            AttributeValueAgeBinCollection AgeBins = this.GetItemExact(
                item.StateAttributeTypeId, item.StratumId, item.SecondaryStratumId, item.TertiaryStratumId,
                item.StateClassId, item.Iteration, item.Timestep);

            if (AgeBins == null)
            {
                AgeBins = new AttributeValueAgeBinCollection(this.m_Project);

                this.AddItem(
                    item.StateAttributeTypeId, item.StratumId, item.SecondaryStratumId, item.TertiaryStratumId,
                    item.StateClassId, item.Iteration, item.Timestep, AgeBins);
            }

            try
            {
                AttributeValueAgeBin Bin = AgeBins.GetOrCreateAgeBin(item.MinimumAge, item.MaximumAge);
                Bin.AddReference(new AttributeValueReference(item.TSTGroupId, item.TSTMin, item.TSTMax, item));
            }
            catch (STSimMapDuplicateItemException ex)
            {
                string template = ex.Message + ".  More information:" +
                                  Environment.NewLine + "State Attribute={0}, {1}={2}, {3}={4}, {5}={6}, Iteration={7}, Timestep={8}." +
                                  Environment.NewLine + "NOTE: A user defined distribution can result in additional State Attributes when the model is run.";

                ExceptionUtils.ThrowArgumentException(template,
                                                      this.GetStateAttributeTypeName(item.StateAttributeTypeId),
                                                      this.PrimaryStratumLabel,
                                                      this.GetStratumName(item.StratumId),
                                                      this.SecondaryStratumLabel,
                                                      this.GetSecondaryStratumName(item.SecondaryStratumId),
                                                      this.TertiaryStratumLabel,
                                                      this.GetTertiaryStratumName(item.TertiaryStratumId),
                                                      STSimMapBase.FormatValue(item.Iteration),
                                                      STSimMapBase.FormatValue(item.Timestep));
            }

            Debug.Assert(this.HasItems);
        }
예제 #5
0
        public void AddTstRandomize
            (int?transitionGroupId, int?stratumId, int?secondaryStratumId, int?tertiaryStratumId,
            int?stateClassId, int?iteration, TstRandomize tstRandomize)
        {
            SortedKeyMap1 <TstRandomize> m = this.m_map.GetItemExact(
                transitionGroupId, stratumId, secondaryStratumId, tertiaryStratumId, stateClassId);

            if (m == null)
            {
                m = new SortedKeyMap1 <TstRandomize>(SearchMode.ExactPrev);
                this.m_map.AddItem(transitionGroupId, stratumId, secondaryStratumId, tertiaryStratumId, stateClassId, m);
            }

            TstRandomize v = m.GetItemExact(iteration);

            if (v != null)
            {
                string template = "A duplicate Time-Since-Transition Randomize value was detected: More information:" + Environment.NewLine + "Transition Group={0}, {1}={2}, {3}={4}, {5}={6}, State Class={7}, Iteration={8}.";
                ExceptionUtils.ThrowArgumentException(template, this.GetTransitionGroupName(transitionGroupId), this.PrimaryStratumLabel, this.GetStratumName(stratumId), this.SecondaryStratumLabel, this.GetSecondaryStratumName(secondaryStratumId), this.TertiaryStratumLabel, this.GetTertiaryStratumName(tertiaryStratumId), this.GetStateClassName(stateClassId), STSimMapBase.FormatValue(iteration));
            }

            m.AddItem(iteration, tstRandomize);
            this.SetHasItems();
        }
 private void TryAddItem(TransitionSizePrioritization item)
 {
     try
     {
         this.AddItem(item.TransitionGroupId, item.StratumId, item.Iteration, item.Timestep, item);
     }
     catch (STSimMapDuplicateItemException)
     {
         string template = "A duplicate transition size prioritization was detected: More information:" + Environment.NewLine + "Transition Group={0}, {1}={2}, Iteration={3}, Timestep={4}";
         ExceptionUtils.ThrowArgumentException(template, this.GetTransitionGroupName(item.TransitionGroupId), this.PrimaryStratumLabel, this.GetStratumName(item.StratumId), STSimMapBase.FormatValue(item.Iteration), STSimMapBase.FormatValue(item.Timestep));
     }
 }
예제 #7
0
 private void TryAddItem(TransitionAttributeTarget item)
 {
     try
     {
         base.AddItem(item.TransitionAttributeTypeId, item.StratumId, item.SecondaryStratumId, item.TertiaryStratumId, item.Iteration, item.Timestep, item);
     }
     catch (STSimMapDuplicateItemException)
     {
         string template = "A duplicate transition attribute target was detected: More information:" + Environment.NewLine + "Transition Attribute Type={0}, {1}={2}, {3}={4}, {5}={6}, Iteration={7}, Timestep={8}." + Environment.NewLine + "NOTE: A user defined distribution can result in additional transition attribute targets when the model is run.";
         ExceptionUtils.ThrowArgumentException(template, this.GetTransitionAttributeTypeName(item.TransitionAttributeTypeId), this.PrimaryStratumLabel, this.GetStratumName(item.StratumId), this.SecondaryStratumLabel, this.GetSecondaryStratumName(item.SecondaryStratumId), this.TertiaryStratumLabel, this.GetTertiaryStratumName(item.TertiaryStratumId), STSimMapBase.FormatValue(item.Iteration), STSimMapBase.FormatValue(item.Timestep));
     }
 }
        private void TryAddItem(TransitionSpatialInitiationMultiplier item)
        {
            try
            {
                this.AddItem(item.TransitionGroupId, item.Iteration, item.Timestep, item);
            }
            catch (STSimMapDuplicateItemException)
            {
                string template =
                    "A duplicate transition spatial initiation multiplier was detected: More information:"
                    + Environment.NewLine
                    + "Transition Group={0}, Iteration={1}, Timestep={2}";

                ExceptionUtils.ThrowArgumentException(template, this.GetTransitionGroupName(item.TransitionGroupId), STSimMapBase.FormatValue(item.Iteration), STSimMapBase.FormatValue(item.Timestep));
            }

            Debug.Assert(this.HasItems);
        }
예제 #9
0
 private void TryAddItem(TransitionDirectionMultiplier item)
 {
     try
     {
         this.AddItem(
             item.TransitionGroupId, item.StratumId, item.SecondaryStratumId, item.TertiaryStratumId,
             (int?)item.CardinalDirection, item.Iteration, item.Timestep, item);
     }
     catch (STSimMapDuplicateItemException)
     {
         string template = "A duplicate transition direction multiplier was detected: More information:" + Environment.NewLine + "Transition Group={0}, {1}={2}, {3}={4}, {5}={6}, Iteration={7}, Timestep={8}, Cardinal Direction={9}." + Environment.NewLine + "NOTE: A user defined distribution can result in additional transition direction multipliers when the model is run.";
         ExceptionUtils.ThrowArgumentException(template, this.GetTransitionGroupName(item.TransitionGroupId), this.PrimaryStratumLabel, this.GetStratumName(item.StratumId), this.SecondaryStratumLabel, this.GetSecondaryStratumName(item.SecondaryStratumId), this.TertiaryStratumLabel, this.GetTertiaryStratumName(item.TertiaryStratumId), STSimMapBase.FormatValue(item.Iteration), STSimMapBase.FormatValue(item.Timestep), GetCardinalDirection(item.CardinalDirection));
     }
 }
 private void TryAddItem(TransitionPathwayAutoCorrelation item)
 {
     try
     {
         this.AddItem(item.TransitionGroupId, item.StratumId, item.SecondaryStratumId, item.TertiaryStratumId, item.Iteration, item.Timestep, item);
     }
     catch (STSimMapDuplicateItemException)
     {
         string template = "A duplicate transition pathway auto-correlation was detected: More information:" + Environment.NewLine + "Transition Group={0}, {1}={2}, {3}={4}, {5}={6}, Iteration={7}, Timestep={8}.";
         ExceptionUtils.ThrowArgumentException(template, this.GetTransitionGroupName(item.TransitionGroupId), this.PrimaryStratumLabel, this.GetStratumName(item.StratumId), this.SecondaryStratumLabel, this.GetSecondaryStratumName(item.SecondaryStratumId), this.TertiaryStratumLabel, this.GetTertiaryStratumName(item.TertiaryStratumId), STSimMapBase.FormatValue(item.Iteration), STSimMapBase.FormatValue(item.Timestep));
     }
 }
예제 #11
0
        private void AddTransition(DeterministicTransition t)
        {
            try
            {
                this.AddItem(t.StratumIdSource, t.StateClassIdSource, t.Iteration, t.Timestep, t);
            }
            catch (STSimMapDuplicateItemException)
            {
                string template = "A duplicate deterministic transition was detected: More information:" + Environment.NewLine + "Source {0}={1}, Source State Class={2}, Iteration={3}, Timestep={4}.";
                ExceptionUtils.ThrowArgumentException(template, this.PrimaryStratumLabel, this.GetStratumName(t.StratumIdSource), this.GetStateClassName(t.StateClassIdSource), STSimMapBase.FormatValue(t.Iteration), STSimMapBase.FormatValue(t.Timestep));
            }

            Debug.Assert(this.HasItems);
        }