Example #1
0
        public List <TaxonomicClassification> GetLocalSpeciesTaxonomiesList(GeographyPoint coordinates)
        {
            var dtos = GetApplicableSpeciesListDtos(coordinates);
            var classificationsLookup = new Dictionary <String, TaxonomicClassification>
            {
                { "H**o.sapien", TaxonomicClassification.HUMAN },
            };

            //Strangely, humans aren't listed in their data!  We need it for our purposes.

            foreach (var dto in dtos)
            {
                var classifications = dto.SpeciesInfoDtoList.Select(speciesInfoDto =>
                                                                    TaxonomicClassification.GetInstance(speciesInfoDto.Kingdom, speciesInfoDto.Phylum, speciesInfoDto.Class, speciesInfoDto.Order,
                                                                                                        speciesInfoDto.Family, speciesInfoDto.Genus, speciesInfoDto.Species)).ToList();

                foreach (var classification in classifications)
                {
                    var key = classification.GetGenus().Trim().ToLower() + "." + classification.GetSpecies().Trim().ToLower();

                    if (!classificationsLookup.ContainsKey(key))
                    {
                        classificationsLookup.Add(key, classification);
                    }
                }
            }

            return(classificationsLookup.Values.ToList());
        }
Example #2
0
        public TaxonomicClassification GetTaxonomyData(String tag)
        {
            var cachedTaxonomyData = TaxonomicDataCache.Get(tag);

            if (cachedTaxonomyData != null)
            {
                return(TaxonomicClassification.GetInstance(cachedTaxonomyData.Kingdom, cachedTaxonomyData.Phylum,
                                                           cachedTaxonomyData.Class, cachedTaxonomyData.Order, cachedTaxonomyData.Family,
                                                           cachedTaxonomyData.Genus, cachedTaxonomyData.Species));
            }

            var parameters   = new List <Parameter>();
            var tagParameter = new Parameter {
                Name = "tag", Value = tag, Type = ParameterType.QueryString
            };

            parameters.Add(tagParameter);

            var taxonomicDataDto = ExecuteGetRequest <WolframResponseDto>(TaxonomicDataPath, parameters);

            if (taxonomicDataDto != null)
            {
                var wolframTaxonomyData = WolframTaxonomyData.GetInstance(taxonomicDataDto);
                TaxonomicDataCache.Set(tag, wolframTaxonomyData);

                return(TaxonomicClassification.GetInstance(wolframTaxonomyData.Kingdom, wolframTaxonomyData.Phylum,
                                                           wolframTaxonomyData.Class, wolframTaxonomyData.Order, wolframTaxonomyData.Family,
                                                           wolframTaxonomyData.Genus, wolframTaxonomyData.Species));
            }

            var nullData = WolframTaxonomyData.NULL;

            return(TaxonomicClassification.GetInstance(nullData.Kingdom, nullData.Phylum,
                                                       nullData.Class, nullData.Order, nullData.Family,
                                                       nullData.Genus, nullData.Species));
        }