ref #6369 adapt existing occurrences of interface to removed generics in cdmlib-app
[cdmlib-apps.git] / cdm-eflora / src / main / java / eu / etaxonomy / cdm / io / eflora / EfloraTaxonImport.java
index a6d1cd35c6c2ba5e0271603fb474a11718142ce8..7a1e24ed63d5f10d07eff38d41dd6576734260e0 100644 (file)
@@ -58,10 +58,10 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 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
@@ -610,7 +610,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
                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
@@ -622,7 +622,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
                                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
@@ -1152,11 +1152,12 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         */\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
@@ -1262,19 +1263,19 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
        }\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
@@ -1326,7 +1327,6 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
                }else{\r
                        upperName.addRelationshipToName(homonymName, relType, null);\r
                }\r
-\r
        }\r
 \r
 \r
@@ -1347,7 +1347,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
        }\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
@@ -1359,7 +1359,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @param name\r
         * @param value\r
         */\r
-       protected TeamOrPersonBase handleNameUsage(Taxon taxon, NonViralName<?> name, String referenceTitle, TeamOrPersonBase lastTeam) {\r
+       protected TeamOrPersonBase handleNameUsage(Taxon taxon, INonViralName name, String referenceTitle, TeamOrPersonBase lastTeam) {\r
                Reference ref = ReferenceFactory.newGeneric();\r
                referenceTitle = removeStartingSymbols(referenceTitle, ref);\r
 \r
@@ -1374,7 +1374,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
 \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
@@ -1489,7 +1489,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @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
@@ -1521,7 +1521,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
                        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
@@ -1558,7 +1558,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @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
@@ -1566,7 +1566,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
                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
@@ -1575,7 +1575,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
                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
@@ -1600,7 +1600,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @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
@@ -1622,7 +1622,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
        }\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
@@ -1647,8 +1647,8 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @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
                        SynonymType synonymType = SynonymType.HETEROTYPIC_SYNONYM_OF();\r
@@ -1657,7 +1657,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
                        }\r
                        taxon.addSynonymName(name, synonymType);\r
                }else{\r
-                       name = (NonViralName)taxon.getName();\r
+                       name = taxon.getName();\r
                }\r
                return name;\r
        }\r
@@ -1667,7 +1667,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @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
@@ -1690,7 +1690,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @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
@@ -1714,7 +1714,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @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
@@ -1955,18 +1955,18 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @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
@@ -2000,7 +2000,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @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
@@ -2010,9 +2010,8 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
                        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
@@ -2170,7 +2169,7 @@ public class EfloraTaxonImport  extends EfloraImportBase implements ICdmIO<Eflor
         * @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