Beispiel #1
0
        /// <summary>
        /// Get information about taxa with a protection level
        /// that is higher than public.
        /// </summary>
        /// <param name="includeSubTaxa">If true, all sub taxa are included in the result.</param>
        /// <param name="taxonInformationType">Type of taxa information to get.</param>
        /// <returns>Information about protected taxa.</returns>
        public static TaxonList GetProtectedTaxa(Boolean includeSubTaxa,
                                                 TaxonInformationType taxonInformationType)
        {
            Factor                     factor;
            List <WebTaxon>            webTaxa;
            SpeciesFactCondition       speciesFactCondition;
            SpeciesFactFieldCondition  speciesFactFieldCondition;
            SpeciesProtectionLevelEnum protectionLevel;
            WebDataQuery               webDataQuery;

            // Create data query.
            speciesFactCondition = new SpeciesFactCondition();
            factor = FactorManager.GetFactor(FactorId.ProtectionLevel);
            speciesFactCondition.Factors.Add(factor);

            for (protectionLevel = SpeciesProtectionLevelEnum.Protected1;
                 protectionLevel <= SpeciesProtectionLevelEnum.MaxProtected;
                 protectionLevel++)
            {
                speciesFactFieldCondition             = new SpeciesFactFieldCondition();
                speciesFactFieldCondition.FactorField = factor.FactorDataType.Field1;
                speciesFactFieldCondition.SetValue((Int32)protectionLevel);
                speciesFactCondition.SpeciesFactFieldConditions.Add(speciesFactFieldCondition);
            }

            // Get data from web service.
            webDataQuery = GetDataQuery(speciesFactCondition);
            webTaxa      = WebServiceClient.GetTaxaByQuery(webDataQuery, taxonInformationType);
            return(GetTaxa(webTaxa));
        }
        /// <summary>
        /// Convert an SpeciesFactCondition to a WebSpeciesFactCondition.
        /// </summary>
        /// <param name="speciesFactCondition">The species fact condition.</param>
        /// <returns>A WebSpeciesFactCondition.</returns>
        private static WebSpeciesFactCondition GetSpeciesFactCondition(SpeciesFactCondition speciesFactCondition)
        {
            WebSpeciesFactCondition webSpeciesFactCondition;

            webSpeciesFactCondition = new WebSpeciesFactCondition();

            // Add all factors.
            if (speciesFactCondition.Factors.IsNotEmpty())
            {
                webSpeciesFactCondition.Factors = new List <WebFactor>();
                foreach (Factor factor in speciesFactCondition.Factors)
                {
                    webSpeciesFactCondition.Factors.Add(FactorManager.GetFactor(factor));
                }
            }

            // Add all periods.
            if (speciesFactCondition.Periods.IsNotEmpty())
            {
                webSpeciesFactCondition.Periods = new List <WebPeriod>();
                foreach (Period period in speciesFactCondition.Periods)
                {
                    webSpeciesFactCondition.Periods.Add(PeriodManager.GetPeriod(period));
                }
            }

            // Add all individual categories.
            if (speciesFactCondition.IndividualCategories.IsNotEmpty())
            {
                webSpeciesFactCondition.IndividualCategories = new List <WebIndividualCategory>();
                foreach (IndividualCategory individualCategory in speciesFactCondition.IndividualCategories)
                {
                    webSpeciesFactCondition.IndividualCategories.Add(IndividualCategoryManager.GetIndividualCategory(individualCategory));
                }
            }

            // Add all species fact field conditions.
            if (speciesFactCondition.SpeciesFactFieldConditions.IsNotEmpty())
            {
                webSpeciesFactCondition.SpeciesFactFieldConditions = new List <WebSpeciesFactFieldCondition>();
                foreach (SpeciesFactFieldCondition speciesFactFieldCondition in speciesFactCondition.SpeciesFactFieldConditions)
                {
                    webSpeciesFactCondition.SpeciesFactFieldConditions.Add(GetSpeciesFactFieldCondition(speciesFactFieldCondition));
                }
            }

            return(webSpeciesFactCondition);
        }