/// <summary> /// Add SpeciesFact to list. /// </summary> /// <param name='speciesFact'>SpeciesFact to add</param> public void Add(SpeciesFact speciesFact) { if (speciesFact.IsNotNull()) { if (_optimize) { _identifierHashTable.Add(speciesFact.Identifier, speciesFact); } base.Add(speciesFact); } }
/// <summary> /// Get string with taxonomic information. /// </summary> /// <returns>String with taxonomic information.</returns> private String GetAutomaticTaxonomicString() { StringBuilder text; if (_taxonomicParagraphSpeciesFact.IsNotNull() && (_taxonomicParagraphSpeciesFact.Quality.Id == (Int32)SpeciesFactQualityId.VerryGood) && _taxonomicParagraphSpeciesFact.Field5.HasValue) { return(_taxonomicParagraphSpeciesFact.Field5.StringValue); } text = new StringBuilder(); if (_taxon.IsNotNull()) { _italicStringsInAutomaticTaxonomicParagraph.Clear(); TaxonSearchCriteria criteria = new TaxonSearchCriteria(); List <Int32> taxonIds = new List <Int32>(); taxonIds.Add(_taxon.Id); criteria.RestrictSearchToTaxonIds = taxonIds; criteria.RestrictReturnToScope = WebService.TaxonSearchScope.AllParentTaxa; TaxonList parentTaxa = TaxonManager.GetTaxaBySearchCriteria(criteria); TaxonList suitableParents = new TaxonList(); foreach (Taxon parent in parentTaxa) { if ((parent.TaxonType.Id == (Int32)(TaxonTypeId.Kingdom)) || (parent.TaxonType.Id == (Int32)(TaxonTypeId.Phylum)) || (parent.TaxonType.Id == (Int32)(TaxonTypeId.Class)) || (parent.TaxonType.Id == (Int32)(TaxonTypeId.Order)) || (parent.TaxonType.Id == (Int32)(TaxonTypeId.Family))) { if (!(parent.Id == (Int32)TaxonId.Dummy)) { suitableParents.Add(parent); } } } Int32 startFromIndex = suitableParents.Count - 3; if (startFromIndex < 0) { startFromIndex = 0; } for (Int32 index = startFromIndex; index < suitableParents.Count; index++) { if (text.ToString() != String.Empty) { text.Append(", "); } text.Append(suitableParents[index].TaxonType.Label + " "); text.Append(suitableParents[index].ScientificName); //Eventuellt ska denna kodrad tas bort (förslag från Tomas Hallingbäck): Överordnade taxa bör ej vara kursiverade //Enligt artexperternas diskussion 2010-03-04 ska överordnade vetenskapliga taxonnamn ej kursiveras! //_italicStringsInAutomaticTaxonomicParagraph.Add(suitableParents[index].ScientificName); if (suitableParents[index].CommonName.IsNotEmpty()) { text.Append(" (" + suitableParents[index].CommonName + ")"); } } if (text.ToString() != String.Empty) { text.Append(", "); } text.Append(_taxon.ScientificNameAndAuthor); _italicStringsInAutomaticTaxonomicParagraph.Add(_taxon.ScientificName); TaxonNameList Synonyms = new TaxonNameList(); foreach (TaxonName name in _taxon.TaxonNames) { if ((name.TaxonNameType.Id == 0) && (name.TaxonNameUseType.Id == 0) && (!name.IsRecommended) && (name.Name != _taxon.ScientificName)) { _italicStringsInAutomaticTaxonomicParagraph.Add(name.Name); Synonyms.Add(name); } } if (Synonyms.Count > 0) { text.Append(". Syn. "); for (Int32 itemIndex = 0; itemIndex < Synonyms.Count; itemIndex++) { if (itemIndex > 0) { if (itemIndex == Synonyms.Count - 1) { text.Append(" och "); } else { text.Append(", "); } } text.Append(Synonyms[itemIndex].Name); if (Synonyms[itemIndex].Author.IsNotEmpty()) { text.Append(" " + Synonyms[itemIndex].Author); } } } if (text.ToString() != String.Empty) { text.Append(". "); } } String cleanText = text.ToString().Replace("..", "."); return(cleanText); }
/// <summary> /// Get string with taxonomic information. /// </summary> /// <returns>String with taxonomic information.</returns> private String GetAutomaticTaxonomicString() { StringBuilder text; if (_taxonomicParagraphSpeciesFact.IsNotNull() && (_taxonomicParagraphSpeciesFact.Quality.Id == (Int32)SpeciesFactQualityId.VerryGood) && _taxonomicParagraphSpeciesFact.Field5.HasValue) { return(_taxonomicParagraphSpeciesFact.Field5.StringValue); } text = new StringBuilder(); if (_taxon.IsNotNull()) { _italicStringsInAutomaticTaxonomicParagraph.Clear(); Int32 startFromIndex = ParentTaxa.Count - 3; if (startFromIndex < 0) { startFromIndex = 0; } for (Int32 index = startFromIndex; index < ParentTaxa.Count; index++) { if (text.ToString() != String.Empty) { text.Append(", "); } text.Append(ParentTaxa[index].TaxonType.Label + " "); text.Append(ParentTaxa[index].ScientificName); //Eventuellt ska denna kodrad tas bort (förslag från Tomas Hallingbäck): Överordnade taxa bör ej vara kursiverade //Enligt artexperternas diskussion 2010-03-04 ska överordnade vetenskapliga taxonnamn ej kursiveras! //_italicStringsInAutomaticTaxonomicParagraph.Add(suitableParents[index].ScientificName); if (ParentTaxa[index].CommonName.IsNotEmpty()) { text.Append(" (" + ParentTaxa[index].CommonName + ")"); } } if (text.ToString() != String.Empty) { text.Append(", "); } text.Append(_taxon.ScientificNameAndAuthor); _italicStringsInAutomaticTaxonomicParagraph.Add(_taxon.ScientificName); if (Synonyms.Count > 0) { text.Append(". Syn. "); for (Int32 itemIndex = 0; itemIndex < Synonyms.Count; itemIndex++) { if (itemIndex > 0) { if (itemIndex == Synonyms.Count - 1) { text.Append(" och "); } else { text.Append(", "); } } text.Append(Synonyms[itemIndex].Name); if (Synonyms[itemIndex].Author.IsNotEmpty()) { text.Append(" " + Synonyms[itemIndex].Author); } } } if (text.ToString() != String.Empty) { text.Append(". "); } } String cleanText = text.ToString().Replace("..", "."); return(cleanText); }