Beispiel #1
0
        /// <summary>
        /// Get taxa count of taxa that matches search criteria.
        /// </summary>
        /// <param name="userContext">
        /// Information about the user that makes this method call.
        /// </param>
        /// <param name="searchCriteria">Species fact search criteria.</param>
        /// <returns>Taxa count of taxa that matches search criteria.</returns>
        public virtual Int32 GetTaxaCount(IUserContext userContext,
                                          ISpeciesFactSearchCriteria searchCriteria)
        {
            Int32 taxonCount;
            WebSpeciesFactSearchCriteria webSearchCriteria;

            CheckTransaction(userContext);
            webSearchCriteria = GetSpeciesFactSearchCriteria(searchCriteria);
            taxonCount        = WebServiceProxy.TaxonAttributeService.GetTaxaCountBySearchCriteria(GetClientInformation(userContext), webSearchCriteria);
            return(taxonCount);
        }
Beispiel #2
0
        /// <summary>
        /// Get taxon ids of taxa that matches search criteria.
        /// </summary>
        /// <param name="userContext">
        /// Information about the user that makes this method call.
        /// </param>
        /// <param name="searchCriteria">Species fact search criteria.</param>
        /// <returns>List of taxon ids of taxa that matches search criteria.</returns>
        public virtual TaxonList GetTaxa(IUserContext userContext, ISpeciesFactSearchCriteria searchCriteria)
        {
            List <WebTaxon> taxa;
            WebSpeciesFactSearchCriteria webSearchCriteria;

            CheckTransaction(userContext);
            webSearchCriteria = GetSpeciesFactSearchCriteria(searchCriteria);
            taxa = WebServiceProxy.TaxonAttributeService.GetTaxaBySearchCriteria(GetClientInformation(userContext), webSearchCriteria);

            return(GetTaxa(userContext, taxa));
        }
Beispiel #3
0
        /// <summary>
        /// Get information about species facts that matches search criteria.
        /// </summary>
        /// <param name="userContext">
        /// Information about the user that makes this method call.
        /// </param>
        /// <param name="searchCriteria">Species fact search criteria.</param>
        /// <returns>Species facts that matches search criteria.</returns>
        public virtual SpeciesFactList GetSpeciesFacts(IUserContext userContext,
                                                       ISpeciesFactSearchCriteria searchCriteria)
        {
            List <WebSpeciesFact>        webSpeciesFacts;
            WebSpeciesFactSearchCriteria webSearchCriteria;

            CheckTransaction(userContext);
            webSearchCriteria = GetSpeciesFactSearchCriteria(searchCriteria);
            webSpeciesFacts   = WebServiceProxy.TaxonAttributeService.GetSpeciesFactsBySearchCriteria(GetClientInformation(userContext), webSearchCriteria);
            return(GetSpeciesFacts(userContext, webSpeciesFacts));
        }
        /// <summary>
        /// Convert a ISpeciesFactSearchCriteria instance
        /// to a WebSpeciesFactSearchCriteria instance.
        /// </summary>
        /// <param name="searchCriteria">An ISpeciesFactSearchCriteria object.</param>
        /// <returns>A WebSpeciesFactSearchCriteria object.</returns>
        protected WebSpeciesFactSearchCriteria GetSpeciesFactSearchCriteria(ISpeciesFactSearchCriteria searchCriteria)
        {
            WebSpeciesFactSearchCriteria webSearchCriteria;

            webSearchCriteria = new WebSpeciesFactSearchCriteria();
            if (searchCriteria.IsNotNull())
            {
                if (searchCriteria.FactorDataTypes.IsNotEmpty())
                {
                    webSearchCriteria.FactorDataTypeIds = searchCriteria.FactorDataTypes.GetIds();
                }

                if (searchCriteria.Factors.IsNotEmpty())
                {
                    webSearchCriteria.FactorIds = searchCriteria.Factors.GetIds();
                }

                webSearchCriteria.FieldLogicalOperator = searchCriteria.FieldLogicalOperator;
                webSearchCriteria.FieldSearchCriteria  = GetSpeciesFactFieldSearchCriteria(searchCriteria.FieldSearchCriteria);

                if (searchCriteria.Hosts.IsNotEmpty())
                {
                    webSearchCriteria.HostIds = searchCriteria.Hosts.GetIds();
                }

                webSearchCriteria.IncludeNotValidHosts = searchCriteria.IncludeNotValidHosts;
                webSearchCriteria.IncludeNotValidTaxa  = searchCriteria.IncludeNotValidTaxa;

                if (searchCriteria.IndividualCategories.IsNotEmpty())
                {
                    webSearchCriteria.IndividualCategoryIds = searchCriteria.IndividualCategories.GetIds();
                }

                if (searchCriteria.Periods.IsNotEmpty())
                {
                    webSearchCriteria.PeriodIds = searchCriteria.Periods.GetIds();
                }

                if (searchCriteria.Taxa.IsNotEmpty())
                {
                    webSearchCriteria.TaxonIds = searchCriteria.Taxa.GetIds();
                }
            }

            return(webSearchCriteria);
        }
        /// <summary>
        /// Get information about species facts that correspond to all the combinations of parameters in the user parameter selection.
        /// In case data values exists in database values are provided otherwise values is set to defaults
        /// When user parameter selection is incomplete, i.e. some parameter lists is empty, the user parameter selection is complemented.
        /// This method is equivalent to SpeciesFactManager.GetSpeciesFacts(...) but adjusted for use in Dyntaxa Web Application.
        /// </summary>
        /// <param name="manager">The SpeciesFactManager.</param>
        /// <param name="userContext">
        /// Information about the user that makes this method call.
        /// </param>
        /// <param name="searchCriteria">Species fact search criteria.</param>
        /// <returns>Species facts that matches search criteria.</returns>
        public static SpeciesFactList GetDyntaxaSpeciesFacts(
            this ISpeciesFactManager manager,
            IUserContext userContext,
            ISpeciesFactSearchCriteria searchCriteria)
        {
            SpeciesFactList speciesFactList = manager.GetSpeciesFacts(userContext, searchCriteria);

            if (speciesFactList.IsNull())
            {
                speciesFactList = new SpeciesFactList();
            }

            if (searchCriteria.Factors.IsNotEmpty())
            {
                ExpandSpeciesFactListWithEmptySpeciesFacts(userContext, searchCriteria, speciesFactList);
            }

            return(speciesFactList);
        }
Beispiel #6
0
        /// <summary>
        /// Ensures that no lists in <paramref name="speciesFactSearchCriteria"/> are null.
        /// </summary>
        /// <param name="speciesFactSearchCriteria">
        /// The species fact search criteria.
        /// </param>
        public static void EnsureNoListsAreNull(this ISpeciesFactSearchCriteria speciesFactSearchCriteria)
        {
            if (speciesFactSearchCriteria.FactorDataTypes == null)
            {
                speciesFactSearchCriteria.FactorDataTypes = new FactorDataTypeList();
            }

            if (speciesFactSearchCriteria.Factors == null)
            {
                speciesFactSearchCriteria.Factors = new FactorList();
            }

            if (speciesFactSearchCriteria.FieldSearchCriteria == null)
            {
                speciesFactSearchCriteria.FieldSearchCriteria = new SpeciesFactFieldSearchCriteriaList();
            }

            if (speciesFactSearchCriteria.Hosts == null)
            {
                speciesFactSearchCriteria.Hosts = new TaxonList();
            }

            if (speciesFactSearchCriteria.IndividualCategories == null)
            {
                speciesFactSearchCriteria.IndividualCategories = new IndividualCategoryList();
            }

            if (speciesFactSearchCriteria.Periods == null)
            {
                speciesFactSearchCriteria.Periods = new PeriodList();
            }

            if (speciesFactSearchCriteria.Taxa == null)
            {
                speciesFactSearchCriteria.Taxa = new TaxonList();
            }
        }
 /// <summary>
 /// Get unique taxa for all species facts
 /// that matches search criteria.
 /// </summary>
 /// <param name="userContext">User context.</param>
 /// <param name="searchCriteria">Species fact search criteria.</param>
 /// <returns>Taxa for all species facts that matches search criteria.</returns>
 public virtual TaxonList GetTaxa(IUserContext userContext,
                                  ISpeciesFactSearchCriteria searchCriteria)
 {
     return(DataSource.GetTaxa(userContext, searchCriteria));
 }
Beispiel #8
0
 /// <summary>
 /// Get taxa count of taxa that matches search criteria.
 /// </summary>
 /// <param name="userContext">
 /// Information about the user that makes this method call.
 /// </param>
 /// <param name="searchCriteria">Species fact search criteria.</param>
 /// <returns>Taxa count of taxa that matches search criteria.</returns>
 public virtual Int32 GetTaxaCount(IUserContext userContext, ISpeciesFactSearchCriteria searchCriteria)
 {
     return(DataSource.GetTaxaCount(userContext, searchCriteria));
 }
Beispiel #9
0
 /// <summary>
 /// Get information about species facts that matches search criteria.
 /// </summary>
 /// <param name="userContext">
 /// Information about the user that makes this method call.
 /// </param>
 /// <param name="searchCriteria">Species fact search criteria.</param>
 /// <returns>Species facts that matches search criteria.</returns>
 public virtual SpeciesFactList GetSpeciesFacts(IUserContext userContext,
                                                ISpeciesFactSearchCriteria searchCriteria)
 {
     return(DataSource.GetSpeciesFacts(userContext, searchCriteria));
 }
        /// <summary>
        /// Expands a Species Fact List with empty species facts so that every combination from the user parameter selection is represented.
        /// Factor Headers are excluded.
        /// Periodic factors are not expanded to individual categories other than the default.
        /// </summary>
        /// <param name="userContext">
        /// The user Context.
        /// </param>
        /// <param name="speciesFactSearchCriteria">
        /// Search criteria to be used as base for the species fact list. Needs to have factors and taxa. If it has no individual category, it will be given the default category.
        /// </param>
        /// <param name="speciesFacts">
        /// Species fact list to be expanded.
        /// </param>
        public static void ExpandSpeciesFactListWithEmptySpeciesFacts(IUserContext userContext, ISpeciesFactSearchCriteria speciesFactSearchCriteria, SpeciesFactList speciesFacts)
        {
            if (speciesFacts.IsNull())
            {
                speciesFacts = new SpeciesFactList();
            }

            // Add default host if necessary.
            if (speciesFactSearchCriteria.Hosts.IsEmpty())
            {
                if (speciesFactSearchCriteria.Hosts.IsNull())
                {
                    speciesFactSearchCriteria.Hosts = new TaxonList();
                }

                speciesFactSearchCriteria.Hosts.Add(CoreData.TaxonManager.GetTaxon(userContext, 0));
            }

            // Add default individual category if necessary.
            if (speciesFactSearchCriteria.IndividualCategories.IsEmpty())
            {
                if (speciesFactSearchCriteria.IndividualCategories.IsNull())
                {
                    speciesFactSearchCriteria.IndividualCategories = new IndividualCategoryList();
                }

                speciesFactSearchCriteria.IndividualCategories.Add(CoreData.FactorManager.GetIndividualCategory(userContext, IndividualCategoryId.Default));
            }

            foreach (IFactor factor in speciesFactSearchCriteria.Factors)
            {
                if (factor.UpdateMode.IsHeader)
                {
                    // Don't create SpeicesFacts for 'Headers'.
                    continue;
                }

                foreach (IIndividualCategory individualCategory in speciesFactSearchCriteria.IndividualCategories)
                {
                    if (factor.IsPeriodic && (individualCategory.Id != ((Int32)IndividualCategoryId.Default)))
                    {
                        // Periodic factors should only be combined
                        // with default IndividualCategory.
                        continue;
                    }

                    foreach (ITaxon taxon in speciesFactSearchCriteria.Taxa)
                    {
                        if (factor.IsPeriodic)
                        {
                            // Factor is periodic
                            foreach (IPeriod period in speciesFactSearchCriteria.Periods)
                            {
                                ExpandSpeciesFactListWithEmptySpeciesFact(userContext, taxon, individualCategory, factor, null, period, speciesFacts);

                                if (factor.IsTaxonomic)
                                {
                                    foreach (ITaxon host in speciesFactSearchCriteria.Hosts)
                                    {
                                        ExpandSpeciesFactListWithEmptySpeciesFact(userContext, taxon, individualCategory, factor, host, period, speciesFacts);
                                    }
                                }
                            }

                            // End factor is periodic
                        }
                        else
                        {
                            // Factor is not periodic
                            if (factor.IsTaxonomic)
                            {
                                foreach (ITaxon host in speciesFactSearchCriteria.Hosts)
                                {
                                    ExpandSpeciesFactListWithEmptySpeciesFact(userContext, taxon, individualCategory, factor, host, null, speciesFacts);
                                }
                            }
                            else
                            {
                                ExpandSpeciesFactListWithEmptySpeciesFact(userContext, taxon, individualCategory, factor, null, null, speciesFacts);
                            }

                            // End factor is not periodic
                        }
                    }
                }
            }
        }