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(WebDataLogicCondition dataLogicCondition) { WebDataCondition dataCondition; WebDataQuery dataQuery; dataCondition = new WebDataCondition(); dataCondition.DataLogicCondition = dataLogicCondition; dataQuery = new WebDataQuery(); dataQuery.DataCondition = dataCondition; return(dataQuery); }
/// <summary> /// Convert an DataOrCondition to a WebDataLogicCondition. /// </summary> /// <param name="dataOrCondition">The data or condition.</param> /// <returns>A WebDataLogicCondition.</returns> private static WebDataLogicCondition GetDataOrCondition(DataOrCondition dataOrCondition) { WebDataLogicCondition webDataLogicCondition; webDataLogicCondition = new WebDataLogicCondition(); webDataLogicCondition.Operator = DataLogicConditionOperatorId.Or; #if DATA_SPECIFIED_EXISTS webDataLogicCondition.OperatorSpecified = true; #endif webDataLogicCondition.DataQueries = new List <WebDataQuery>(); foreach (IDataQuery dataQuery in dataOrCondition.DataQueries) { webDataLogicCondition.DataQueries.Add(GetDataQuery(dataQuery)); } return(webDataLogicCondition); }