/// <summary>
        /// Method that returns a filtered version of this species fact list. The filtering is done on factors
        /// </summary>
        /// <param name="factors"></param>
        /// <returns>A filtered SpeciesFactList</returns>
        public SpeciesFactList FilterSpeciesFacts(FactorList factors)
        {
            if (factors == null)
            {
                throw new ArgumentException("FactorList is null", "factors");
            }

            SpeciesFactList filteredList = new SpeciesFactList();

            //if (originalList.Count > factors.Count)
            {
                foreach (SpeciesFact fact in this)
                {
                    foreach (Factor factor in factors)
                    {
                        if (fact.Factor.Id == factor.Id)
                        {
                            filteredList.Add(fact);
                            break;
                        }
                    }
                }
            }

            return(filteredList);
        }
 /// <summary>
 /// Create a SpeciesFactCondition instance.
 /// </summary>
 public SpeciesFactCondition()
     : base(DataQueryType.SpeciesFactCondition)
 {
     Factors = new FactorList();
     Periods = new PeriodList();
     IndividualCategories       = new IndividualCategoryList();
     SpeciesFactFieldConditions = new List <SpeciesFactFieldCondition>();
 }
 /// <summary>
 /// Create a user parameter selection instance.
 /// </summary>
 public UserParameterSelection()
 {
     _factors = new FactorList(true);
     _hosts   = new TaxonList(true);
     _individualCategories = new IndividualCategoryList(true);
     _periods    = new PeriodList(true);
     _references = new ReferenceList(true);
     _taxa       = new TaxonList(true);
 }
 /// <summary>
 /// Add factors to the data identifier list.
 /// </summary>
 /// <param name='factors'>Factors.</param>
 public void AddRange(FactorList factors)
 {
     if (factors.IsNotEmpty())
     {
         foreach (Factor factor in factors)
         {
             Add(factor);
         }
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Get a subset of this factor list by search string
        /// </summary>
        /// <param name="searchString">Search string</param>
        /// <param name="comparisonType">Type of string comparison</param>
        /// <returns>A factor list</returns>
        public FactorList GetFactorsBySearchString(String searchString, StringComparison comparisonType)
        {
            FactorList factors = new FactorList();
            var        subset  = from Factor factor in this
                                 where factor.Label.StartsWith(searchString, comparisonType)
                                 orderby factor.Label ascending
                                 select factor;

            factors.AddRange(subset.ToArray());
            return(factors);
        }
        /// <summary>
        /// Get all child factors that belongs to this factor tree node.
        /// The factor for this tree node is also included in the result.
        /// </summary>
        public FactorList GetAllChildFactors()
        {
            FactorList factors;

            factors = new FactorList();
            factors.Add(Factor);
            if (_children.IsNotEmpty())
            {
                foreach (FactorTreeNode child in _children)
                {
                    factors.AddRange(child.GetAllChildFactors());
                }
            }
            return(factors);
        }
 /// <summary>
 /// Private constructor. Makes a clone of a UserParameterSelection.
 /// </summary>
 /// <param name="userParameterSelection">UserParameterSelection to clone</param>
 private UserParameterSelection(UserParameterSelection userParameterSelection)
 {
     _factors = new FactorList(true);
     _factors.AddRange(userParameterSelection.Factors);
     _hosts = new TaxonList(true);
     _hosts.AddRange(userParameterSelection.Hosts);
     _individualCategories = new IndividualCategoryList(true);
     _individualCategories.AddRange(userParameterSelection.IndividualCategories);
     _periods = new PeriodList(true);
     _periods.AddRange(userParameterSelection.Periods);
     _references = new ReferenceList(true);
     _references.AddRange(userParameterSelection.References);
     _taxa = new TaxonList(true);
     _taxa.AddRange(userParameterSelection.Taxa);
 }
        /// <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>
        public FactorList GetAllLeafFactors()
        {
            FactorList leafs;

            leafs = new FactorList();
            if (_children.IsEmpty())
            {
                leafs.Add(Factor);
            }
            else
            {
                foreach (FactorTreeNode child in _children)
                {
                    leafs.AddRange(child.GetAllLeafFactors());
                }
            }
            return(leafs);
        }
        /// <summary>
        /// Method that returns a filtered version of this species fact list. The filtering is done on several parameters.
        /// </summary>
        /// <param name="individualCategories"></param>
        /// <param name="periods"></param>
        /// <param name="hosts"></param>
        /// <param name="taxa"></param>
        /// <param name="factors"></param>
        /// <returns>A filtered SpeciesFactList</returns>
        public SpeciesFactList FilterSpeciesFacts(
            IndividualCategoryList individualCategories,
            PeriodList periods,
            TaxonList hosts,
            TaxonList taxa,
            FactorList factors)
        {
            SpeciesFactList filteredList = new SpeciesFactList();

            foreach (SpeciesFact fact in this)
            {
                bool go = true;

                if (fact.IndividualCategory != null)
                {
                    if ((individualCategories != null) && (individualCategories.Count > 0))
                    {
                        if (!individualCategories.Exists(fact.IndividualCategory))
                        {
                            go = false;
                        }
                    }
                }

                if (go)
                {
                    if (fact.Period != null)
                    {
                        if ((periods != null) && (periods.Count > 0))
                        {
                            if (!periods.Exists(fact.Period))
                            {
                                go = false;
                            }
                        }
                    }
                }
                if (go)
                {
                    if (fact.Host != null)
                    {
                        // For the time being we only accept species facts that dont have a host.

                        go = false;

                        //if ((hosts != null) && (hosts.Count > 0))
                        //{
                        //    if (!hosts.Exists(fact.Host))
                        //        go = false;
                        //}
                    }
                }
                if (go)
                {
                    if (fact.Taxon != null)
                    {
                        if ((taxa != null) && (taxa.Count > 0))
                        {
                            if (!taxa.Exists(fact.Taxon))
                            {
                                go = false;
                            }
                        }
                    }
                }
                if (go)
                {
                    if (fact.Factor != null)
                    {
                        if ((factors != null) && (factors.Count > 0))
                        {
                            if (!factors.Exists(fact.Factor))
                            {
                                go = false;
                            }
                        }
                    }
                }

                if (go)
                {
                    filteredList.Add(fact);
                }
            }

            return(filteredList);
        }
        /// <summary>
        /// Get all factors that have an impact on this factors value.
        /// Only factors that are automatically calculated
        /// has dependent factors.
        /// </summary>
        /// <returns>Dependent factors.</returns>
        public FactorList GetDependentFactors()
        {
            FactorList factors;

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

                break;
            }

            return(factors);
        }