public void GetTaxaByQuery() { Int32 factorIndex; List <WebFactor> factors; List <WebTaxon> taxa; WebDataLogicCondition dataLogicCondition; WebSpeciesFactCondition speciesFactCondition; // Test one condition and one factor. speciesFactCondition = new WebSpeciesFactCondition(); speciesFactCondition.Factors = new WebFactor[1]; speciesFactCondition.Factors[0] = FactorManagerTest.GetOneFactor(GetContext()); taxa = TaxonManager.GetTaxaByQuery(GetContext(), GetDataQuery(speciesFactCondition), TaxonInformationType.Basic); Assert.IsTrue(taxa.IsNotEmpty()); // Test one condition and several factors. speciesFactCondition = new WebSpeciesFactCondition(); factors = FactorManagerTest.GetSomeFactors(GetContext()); speciesFactCondition.Factors = new WebFactor[factors.Count]; for (factorIndex = 0; factorIndex < speciesFactCondition.Factors.Length; factorIndex++) { speciesFactCondition.Factors[factorIndex] = factors[factorIndex]; } taxa = TaxonManager.GetTaxaByQuery(GetContext(), GetDataQuery(speciesFactCondition), TaxonInformationType.Basic); Assert.IsTrue(taxa.IsNotEmpty()); // Test several conditions and one factor. dataLogicCondition = new WebDataLogicCondition(); dataLogicCondition.DataQueries = new List <WebDataQuery>(); dataLogicCondition.Operator = DataLogicConditionOperatorId.And; factors = FactorManagerTest.GetSomeFactors(GetContext()); for (factorIndex = 0; factorIndex < factors.Count; factorIndex++) { speciesFactCondition = new WebSpeciesFactCondition(); speciesFactCondition.Factors = new WebFactor[1]; speciesFactCondition.Factors[0] = factors[factorIndex]; dataLogicCondition.DataQueries.Add(GetDataQuery(speciesFactCondition)); } taxa = TaxonManager.GetTaxaByQuery(GetContext(), GetDataQuery(dataLogicCondition), TaxonInformationType.Basic); Assert.IsTrue(taxa.IsNotEmpty()); // Test several conditions and several factors. dataLogicCondition = new WebDataLogicCondition(); dataLogicCondition.DataQueries = new List <WebDataQuery>(); dataLogicCondition.Operator = DataLogicConditionOperatorId.And; factors = FactorManagerTest.GetSomeFactors(GetContext()); for (factorIndex = 0; factorIndex < factors.Count; factorIndex++) { speciesFactCondition = new WebSpeciesFactCondition(); speciesFactCondition.Factors = new WebFactor[2]; speciesFactCondition.Factors[0] = factors[factorIndex++]; speciesFactCondition.Factors[1] = factors[factorIndex]; dataLogicCondition.DataQueries.Add(GetDataQuery(speciesFactCondition)); } taxa = TaxonManager.GetTaxaByQuery(GetContext(), GetDataQuery(dataLogicCondition), TaxonInformationType.Basic); Assert.IsTrue(taxa.IsNotEmpty()); }
private WebDataQuery GetDataQuery(WebSpeciesFactCondition speciesFactCondition) { WebDataCondition dataCondition; WebDataQuery dataQuery; dataCondition = new WebDataCondition(); dataCondition.SpeciesFactCondition = speciesFactCondition; dataQuery = new WebDataQuery(); dataQuery.DataCondition = dataCondition; return(dataQuery); }
/// <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); }