/// <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); }