/// <summary>
        /// Get factors with specified ids.
        /// </summary>
        /// <param name="userContext">
        /// Information about the user that makes this method call.
        /// </param>
        /// <param name="factorIds">Factor ids.</param>
        /// <returns>Factors with specified ids.</returns>
        public virtual FactorList GetFactors(IUserContext userContext,
                                             List <Int32> factorIds)
        {
            FactorList allFactors, factors;

            // Check arguments.
            factorIds.CheckNotEmpty("factorIds");

            factors    = new FactorList();
            allFactors = GetFactors(userContext);
            foreach (Int32 factorId in factorIds)
            {
                factors.Add(allFactors.Get(factorId));
            }

            return(factors);
        }
Example #2
0
        /// <summary>
        /// Get all child factors that belongs to this factor tree node.
        /// The factor for this tree node may also
        /// be included in the result.
        /// </summary>
        /// <returns>All leaf factors that belongs to this factor tree node.</returns>
        public FactorList GetAllLeafFactors()
        {
            FactorList leaves = new FactorList();

            if (Children.IsEmpty())
            {
                leaves.Add(Factor);
            }
            else
            {
                foreach (IFactorTreeNode child in Children)
                {
                    leaves.AddRange(child.GetAllLeafFactors());
                }
            }

            return(leaves);
        }
Example #3
0
        /// <summary>
        /// Get factors that are manually editable.
        /// </summary>
        /// <returns>Factors that are manually editable.</returns>
        public FactorList GetEditableFactors()
        {
            FactorList editableFactors;

            editableFactors = null;
            if (this.IsNotEmpty())
            {
                editableFactors = new FactorList();
                foreach (IFactor factor in this)
                {
                    if (factor.UpdateMode.AllowManualUpdate)
                    {
                        editableFactors.Add(factor);
                    }
                }
            }

            return(editableFactors);
        }
        /// <summary>
        /// Get all factors that have an impact on this factors value.
        /// Only factors that are automatically calculated
        /// has dependent factors.
        /// </summary>
        /// <param name="userContext">Information about the user that makes this method call.</param>
        /// <returns>Dependent factors.</returns>
        public FactorList GetDependentFactors(IUserContext userContext)
        {
            FactorList factors;

            factors = new FactorList();
            switch (Id)
            {
            case ((Int32)FactorId.RedListCategoryAutomatic):
            case ((Int32)FactorId.RedListCriteriaDocumentationAutomatic):
            case ((Int32)FactorId.RedListCriteriaAutomatic):
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.AreaOfOccupancy_B2Estimated));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ConservationDependent));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ContinuingDecline));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ContinuingDeclineBasedOn_Bbi));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ContinuingDeclineBasedOn_Bbii));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ContinuingDeclineBasedOn_Bbiii));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ContinuingDeclineBasedOn_Bbiv));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ContinuingDeclineBasedOn_Bbv));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ExtentOfOccurrence_B1Estimated));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ExtremeFluctuations));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ExtremeFluctuationsIn_Bci));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ExtremeFluctuationsIn_Bcii));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ExtremeFluctuationsIn_Bciii));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ExtremeFluctuationsIn_Bciv));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.Grading));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.MaxProportionLocalPopulation));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.MaxSizeLocalPopulation));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.NumberOfLocations));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.PopulationSize_Total));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ProbabilityOfExtinction));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.RedlistEvaluationProgressionStatus));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.Reduction_A1));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.Reduction_A2));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.Reduction_A3));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.Reduction_A4));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A1a));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A1b));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A1c));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A1d));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A1e));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A2a));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A2b));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A2c));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A2d));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A2e));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A3b));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A3c));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A3d));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A3e));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A4a));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A4b));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A4c));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A4d));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ReductionBasedOn_A4e));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.SeverelyFragmented));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.SwedishOccurrence));
                factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.VeryRestrictedArea_D2VU));
                if (Id == ((Int32)FactorId.RedListCriteriaDocumentationAutomatic))
                {
                    factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.RedListCriteriaDocumentationIntroduction));
                    factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.GlobalRedlistCategory));
                    factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.GenerationTime));
                    factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.LastEncounter));
                    factors.Add(CoreData.FactorManager.GetFactor(userContext, FactorId.ImmigrationOccurs));
                }

                break;
            }

            return(factors);
        }