import eu.etaxonomy.cdm.model.description.TextData;\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
+import eu.etaxonomy.cdm.model.name.INonViralName;\r
import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
-import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;\r
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
import eu.etaxonomy.cdm.model.taxon.Classification;\r
-import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymType;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
if (strGoto == null){\r
return "";\r
}\r
- String strGenusName = CdmBase.deproxy(taxon.getName(), NonViralName.class).getGenusOrUninomial();\r
+ String strGenusName = taxon.getName().getGenusOrUninomial();\r
strGoto = strGoto.replaceAll("\\([^\\(\\)]*\\)", ""); //replace all brackets\r
strGoto = strGoto.replaceAll("\\s+", " "); //replace multiple whitespaces by exactly one whitespace\r
\r
split[i] = strGenusName;\r
}\r
// if (isInfraSpecificMarker(single)){\r
-// String strSpeciesName = CdmBase.deproxy(taxon.getName(), NonViralName.class).getSpecificEpithet();\r
+// String strSpeciesName = taxon.getName().getSpecificEpithet();\r
// split[i] = strGenusName + " " + strSpeciesName + " ";\r
// }\r
result = (result + " " + split[i]).trim();\r
private void makeOriginalSourceReferences(ISourceable sourcable, String splitter, String refAll) {\r
String[] splits = refAll.split(splitter);\r
for (String strRef: splits){\r
- Reference<?> ref = ReferenceFactory.newGeneric();\r
+ Reference ref = ReferenceFactory.newGeneric();\r
ref.setTitleCache(strRef, true);\r
String refDetail = parseReferenceYearAndDetail(ref);\r
sourcable.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, ref, refDetail);\r
*/\r
//body/taxon/\r
private HomotypicalGroup handleNomTaxon(EfloraImportState state, Element elNom, Taxon taxon, HomotypicalGroup homotypicalGroup, boolean isSynonym) {\r
- NonViralName name = makeName(taxon, homotypicalGroup, isSynonym);\r
- String num = null;\r
+ INonViralName nvn = makeName(taxon, homotypicalGroup, isSynonym);\r
+ TaxonNameBase<?,?> name = TaxonNameBase.castAndDeproxy(nvn);\r
+ String num = null;\r
\r
boolean hasGenusInfo = false;\r
- TeamOrPersonBase lastTeam = null;\r
+ TeamOrPersonBase<?> lastTeam = null;\r
\r
//genus\r
List<Element> elGenus = XmlHelp.getAttributedChildListWithValue(elNom, "name", "class", "genus");\r
}\r
\r
\r
- private void handleQuestionMark(NonViralName name, Taxon taxon) {\r
+ private void handleQuestionMark(INonViralName name, Taxon taxon) {\r
int count = name.getTaxonBases().size();\r
if (count != 1){\r
logger.warn("Name has " + count + " taxa. This is not handled for question mark");\r
}else{\r
- TaxonBase taxonBase = (TaxonBase)name.getTaxonBases().iterator().next();\r
+ TaxonBase taxonBase = name.getTaxonBases().iterator().next();\r
taxonBase.setDoubtful(true);\r
}\r
}\r
\r
\r
//merge with handleNomTaxon\r
- private void handleHomonym(EfloraImportState state, Element elHomonym, NonViralName upperName) {\r
+ private void handleHomonym(EfloraImportState state, Element elHomonym, TaxonNameBase upperName) {\r
verifyNoAttribute(elHomonym);\r
\r
//hommonym name\r
}else{\r
upperName.addRelationshipToName(homonymName, relType, null);\r
}\r
-\r
}\r
\r
\r
}\r
\r
\r
- private void handleNameNote(NonViralName name, String value) {\r
+ private void handleNameNote(INonViralName name, String value) {\r
logger.warn("Name note: " + value + ". Available in portal?");\r
Annotation annotation = Annotation.NewInstance(value, AnnotationType.EDITORIAL(), Language.DEFAULT());\r
name.addAnnotation(annotation);\r
* @param name\r
* @param value\r
*/\r
- protected TeamOrPersonBase handleNameUsage(Taxon taxon, NonViralName<?> name, String referenceTitle, TeamOrPersonBase lastTeam) {\r
- Reference<?> ref = ReferenceFactory.newGeneric();\r
+ protected TeamOrPersonBase handleNameUsage(Taxon taxon, INonViralName name, String referenceTitle, TeamOrPersonBase lastTeam) {\r
+ Reference ref = ReferenceFactory.newGeneric();\r
referenceTitle = removeStartingSymbols(referenceTitle, ref);\r
\r
ref.setTitleCache(referenceTitle, true);\r
\r
TaxonDescription description = getDescription(taxon);\r
TextData textData = TextData.NewInstance(Feature.CITATION());\r
- textData.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, ref, microReference, name, null);\r
+ textData.addSource(OriginalSourceType.PrimaryTaxonomicSource, null, null, ref, microReference, (TaxonNameBase)name, null);\r
description.addElement(textData);\r
return team;\r
}\r
* @param name\r
* @return\r
*/\r
- protected String parseHomonym(String detail, NonViralName name) {\r
+ protected String parseHomonym(String detail, TaxonNameBase name) {\r
String result;\r
if (detail == null){\r
return detail;\r
homonymName.setSpecificEpithet(name.getSpecificEpithet());\r
homonymName.setInfraSpecificEpithet(name.getInfraSpecificEpithet());\r
Reference homonymNomRef = ReferenceFactory.newGeneric();\r
- homonymNomRef.setTitleCache(homonymString);\r
+ homonymNomRef.setTitleCache(homonymString, true);\r
String homonymNomRefDetail = parseReferenceYearAndDetail(homonymNomRef);\r
homonymName.setNomenclaturalMicroReference(homonymNomRefDetail);\r
String authorTitle = homonymNomRef.getTitleCache();\r
* @param name\r
* @param value\r
*/\r
- protected TeamOrPersonBase handleNomenclaturalReference(NonViralName name, String value) {\r
+ protected TeamOrPersonBase handleNomenclaturalReference(TaxonNameBase name, String value) {\r
Reference nomRef = ReferenceFactory.newGeneric();\r
nomRef.setTitleCache(value, true);\r
parseNomStatus(nomRef, name);\r
name.setNomenclaturalReference(nomRef);\r
microReference = parseHomonym(microReference, name);\r
name.setNomenclaturalMicroReference(microReference);\r
- TeamOrPersonBase team = name.getCombinationAuthorship();\r
+ TeamOrPersonBase<?> team = name.getCombinationAuthorship();\r
if (team == null){\r
logger.warn("Name has nom. ref. but no author team. Name: " + name.getTitleCache() + ", Nom.Ref.: " + value);\r
}else{\r
return team;\r
}\r
\r
- private void handleInfrAuthor(EfloraImportState state, Element elAuthor, NonViralName name, boolean overwrite) {\r
+ private void handleInfrAuthor(EfloraImportState state, Element elAuthor, INonViralName name, boolean overwrite) {\r
String strAuthor = elAuthor.getValue().trim();\r
if (strAuthor.endsWith(",")){\r
strAuthor = strAuthor.substring(0, strAuthor.length() -1);\r
* @param infraRank\r
* @return\r
*/\r
- private Rank handleInfRank(NonViralName name, List<Element> elInfraRank, Rank infraRank) {\r
+ private Rank handleInfRank(INonViralName name, List<Element> elInfraRank, Rank infraRank) {\r
if (elInfraRank.size() == 1){\r
String strRank = elInfraRank.get(0).getTextNormalize();\r
try {\r
}\r
\r
\r
- private void handleInfrEpi(NonViralName<?> name, Rank infraRank, String value) {\r
+ private void handleInfrEpi(INonViralName name, Rank infraRank, String value) {\r
if (infraRank != null && infraRank.isInfraSpecific()){\r
name.setInfraSpecificEpithet(value);\r
if (CdmUtils.isCapital(value)){\r
* @param isSynonym\r
* @return\r
*/\r
- private NonViralName makeName(Taxon taxon,HomotypicalGroup homotypicalGroup, boolean isSynonym) {\r
- NonViralName name;\r
+ private TaxonNameBase makeName(Taxon taxon,HomotypicalGroup homotypicalGroup, boolean isSynonym) {\r
+ TaxonNameBase<?,?> name;\r
if (isSynonym){\r
name = BotanicalName.NewInstance(Rank.SPECIES(), homotypicalGroup);\r
- SynonymRelationshipType synonymType = SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF();\r
+ SynonymType synonymType = SynonymType.HETEROTYPIC_SYNONYM_OF();\r
if (taxon.getHomotypicGroup().equals(homotypicalGroup)){\r
- synonymType = SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF();\r
+ synonymType = SynonymType.HOMOTYPIC_SYNONYM_OF();\r
}\r
taxon.addSynonymName(name, synonymType);\r
}else{\r
- name = (NonViralName)taxon.getName();\r
+ name = taxon.getName();\r
}\r
return name;\r
}\r
* @param element\r
* @param taxon\r
*/\r
- private void handleInfraspecificEpithet(Element element, String attrValue, NonViralName<?> name) {\r
+ private void handleInfraspecificEpithet(Element element, String attrValue, INonViralName name) {\r
String value = element.getTextNormalize();\r
if (value.indexOf("subsp.") != -1){\r
//TODO genus and species epi\r
* @param element\r
* @param name\r
*/\r
- private void handleBasionymAuthor(EfloraImportState state, Element elBasionymAuthor, NonViralName name, boolean overwrite) {\r
+ private void handleBasionymAuthor(EfloraImportState state, Element elBasionymAuthor, INonViralName name, boolean overwrite) {\r
String strAuthor = elBasionymAuthor.getValue().trim();\r
Pattern reBasionymAuthor = Pattern.compile("^\\(.*\\)$");\r
if (reBasionymAuthor.matcher(strAuthor).matches()){\r
* @param name\r
* @param elNom\r
*/\r
- private void handleNameAuthors(Element elAuthor, NonViralName name) {\r
+ private void handleNameAuthors(Element elAuthor, INonViralName name) {\r
if (name.getCombinationAuthorship() != null){\r
logger.warn("Name already has a combination author. Name: " + name.getTitleCache() + ", Author: " + elAuthor.getTextNormalize());\r
}\r
* @param value\r
* @param taxonNameBase\r
*/\r
- private void handleSubGenus(String value, TaxonNameBase taxonNameBase) {\r
+ private void handleSubGenus(String value, INonViralName taxonNameBase) {\r
String name = value.replace("Subgenus", "").trim();\r
- ((NonViralName)taxonNameBase).setInfraGenericEpithet(name);\r
+ taxonNameBase.setInfraGenericEpithet(name);\r
}\r
\r
/**\r
* @param value\r
* @param taxonNameBase\r
*/\r
- private void handleSection(String value, TaxonNameBase taxonNameBase) {\r
+ private void handleSection(String value, INonViralName taxonNameBase) {\r
String name = value.replace("Section", "").trim();\r
- ((NonViralName)taxonNameBase).setInfraGenericEpithet(name);\r
+ taxonNameBase.setInfraGenericEpithet(name);\r
}\r
\r
/**\r
* @param value\r
* @param taxonNameBase\r
*/\r
- protected void handleGenus(String value, TaxonNameBase taxonName) {\r
+ protected void handleGenus(String value, INonViralName taxonName) {\r
Matcher matcher = rexGenusAuthor.matcher(value);\r
if (matcher.find()){\r
String author = matcher.group();\r
team.setTitleCache(author, true);\r
Credit credit = Credit.NewInstance(team, null);\r
taxonName.addCredit(credit);\r
-// NonViralName nvn = (NonViralName)taxonName;\r
-// nvn.setCombinationAuthorship(team);\r
-// nvn.setGenusOrUninomial(genus);\r
+// taxonName.setCombinationAuthorship(team);\r
+// taxonName.setGenusOrUninomial(genus);\r
}else{\r
logger.info("No Author match for " + value);\r
}\r
* @param ref\r
* @param nonViralName\r
*/\r
- protected void parseNomStatus(Reference ref, NonViralName nonViralName) {\r
+ protected void parseNomStatus(Reference ref, TaxonNameBase nonViralName) {\r
String titleToParse = ref.getTitleCache();\r
\r
String noStatusTitle = parser.parseNomStatus(titleToParse, nonViralName, true);\r