/// <summary> /// Remove old species facts that are no longer /// included in the species fact scope. /// </summary> private void RemoveSpeciesFactsNotInScope() { Int32 index; ISpeciesFact speciesFact; if (SpeciesFacts.IsNotEmpty()) { for (index = SpeciesFacts.Count - 1; index >= 0; index--) { speciesFact = SpeciesFacts[index]; if ((!Factors.Contains(speciesFact.Factor)) || (!IndividualCategories.Contains(speciesFact.IndividualCategory)) || (!Taxa.Contains(speciesFact.Taxon)) || (speciesFact.HasHost && !Hosts.Contains(speciesFact.Host)) || (speciesFact.HasPeriod && !Periods.Contains(speciesFact.Period))) { // This species fact is no longer // included in the species fact scope. SpeciesFacts.RemoveAt(index); } } } }
/// <summary> /// Make automated calculations of species facts /// that are "automatic" in a species fact list. /// </summary> /// <param name="userContext"> /// Information about the user that makes this method call. /// </param> public virtual void InitAutomatedCalculations(IUserContext userContext) { if (SpeciesFacts.IsNotEmpty()) { foreach (ISpeciesFact speciesFact in SpeciesFacts) { switch (speciesFact.Factor.Id) { case (Int32)(FactorId.RedListCategoryAutomatic): ((SpeciesFactRedListCategory)(speciesFact)).Init(userContext, SpeciesFacts); break; case (Int32)(FactorId.RedListCriteriaAutomatic): ((SpeciesFactRedListCriteria)(speciesFact)).Init(userContext, SpeciesFacts); break; case (Int32)(FactorId.RedListCriteriaDocumentationAutomatic): ((SpeciesFactRedListCriteriaDocumentation)(speciesFact)).Init(userContext, SpeciesFacts); break; } } } }