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