cleanup
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / taxonx2013 / TaxonXTreatmentExtractor.java
index ccf93937a5d8472f2608434e657cfb9d901d476a..81826ae542f5d3e1b2ae9a47a454d98af307c61e 100644 (file)
@@ -12,7 +12,6 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -27,7 +26,8 @@ import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactoryConfigurationError;
 
 import org.apache.commons.lang.StringUtils;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
@@ -35,6 +35,7 @@ import com.ibm.lsid.MalformedLSIDException;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.common.URI;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.common.CdmBase;
@@ -51,6 +52,7 @@ import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.name.RankClass;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
@@ -63,8 +65,8 @@ import eu.etaxonomy.cdm.model.taxon.SynonymType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.model.term.TermNode;
+import eu.etaxonomy.cdm.model.term.TermTree;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.cdm.persistence.query.MatchMode;
 import eu.etaxonomy.cdm.strategy.exceptions.UnknownCdmTypeException;
@@ -75,13 +77,12 @@ import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImplRegExBase;
 /**
  * @author pkelbert
  * @since 2 avr. 2013
- *
  */
 public class TaxonXTreatmentExtractor extends TaxonXExtractor{
 
     private static final String PUBLICATION_YEAR = "publicationYear";
 
-       private static final Logger logger = Logger.getLogger(TaxonXTreatmentExtractor.class);
+       private static final Logger logger = LogManager.getLogger();
 
     private static final String notMarkedUp = "Not marked-up";
     private static final UUID proIbioTreeUUID = UUID.fromString("2c49f506-c7f7-44de-a8b9-2e695de3769c");
@@ -304,9 +305,9 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
      */
     private void buildFeatureTree() {
         logger.info("buildFeatureTree");
-        TermTree proibiospheretree = importer.getFeatureTreeService().find(proIbioTreeUUID);
+        TermTree<?> proibiospheretree = importer.getTermTreeService().find(proIbioTreeUUID);
         if (proibiospheretree == null){
-            List<TermTree> trees = importer.getFeatureTreeService().list(TermTree.class, null, null, null, null);
+            List<TermTree> trees = importer.getTermTreeService().list(TermTree.class, null, null, null, null);
             if (trees.size()==1) {
                 TermTree<Feature> ft = trees.get(0);
                 if (featuresMap==null) {
@@ -318,7 +319,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                     }
                 }
             }
-            proibiospheretree = TermTree.NewInstance();
+            proibiospheretree = TermTree.NewFeatureInstance();
             proibiospheretree.setUuid(proIbioTreeUUID);
         }
 
@@ -331,17 +332,15 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                 }catch(Exception e){logger.warn("Can't remove child from FeatureTree "+e);}
                 nbChildren --;
             }
-
         }
 
         for (Feature feature:featuresMap.values()) {
             root2.addChild(feature);
         }
-        importer.getFeatureTreeService().saveOrUpdate(proibiospheretree);
+        importer.getTermTreeService().saveOrUpdate(proibiospheretree);
 
     }
 
-
     /**
      * @param keys
      * @param acceptedTaxon: the current acceptedTaxon
@@ -1169,10 +1168,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
      * @param nametosave
      * @param refMods
      * @param insideNodes
-     * @param blabla
-     * @param j
      */
-    @SuppressWarnings({ "rawtypes" })
     private String getInlineTextForName(List<TaxonName> nametosave, Reference refMods, Node insideNode) {
         if (true){
                NodeList children = insideNode.getChildNodes();
@@ -1575,7 +1571,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
             }
             if (!synonymsSet.contains(synonym) && ! (synoExist)) {
                 sourceHandler.addSource(refMods, synonym);
-                acceptedTaxon.addSynonym(synonym, SynonymType.SYNONYM_OF());
+                acceptedTaxon.addSynonym(synonym, SynonymType.SYNONYM_OF);
             }
         }
         importer.getTaxonService().saveOrUpdate(acceptedTaxon);
@@ -1751,7 +1747,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                     if (!synonymsSet.contains(synonym) && ! (synoExist)) {
                         sourceHandler.addSource(refMods, synonym);
 
-                        acceptedTaxon.addSynonym(synonym, SynonymType.SYNONYM_OF());
+                        acceptedTaxon.addSynonym(synonym, SynonymType.SYNONYM_OF);
                     }
                 }
 
@@ -1784,12 +1780,10 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                     if (!synonymsSet.contains(synonym) && ! (synoExist)) {
                         sourceHandler.addSource(refMods, synonym);
 
-                        acceptedTaxon.addSynonym(synonym, SynonymType.SYNONYM_OF());
+                        acceptedTaxon.addSynonym(synonym, SynonymType.SYNONYM_OF);
                     }
-
                 }
 
-
                 if (!currentMyName.getIdentifier().isEmpty() && (currentMyName.getIdentifier().length()>2)){
                     setLSID(currentMyName.getIdentifier(), acceptedTaxon);
                 }
@@ -1860,7 +1854,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                     if (!synonymsSet.contains(synonym) && ! (synoExist)) {
                         sourceHandler.addSource(refMods, synonym);
 
-                        acceptedTaxon.addSynonym(synonym, SynonymType.SYNONYM_OF());
+                        acceptedTaxon.addSynonym(synonym, SynonymType.SYNONYM_OF);
                     }
                 }
             }
@@ -1868,13 +1862,6 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
         }
     }
 
-
-
-    /**
-     * @param identifier
-     * @param acceptedTaxon
-     */
-    @SuppressWarnings("rawtypes")
     private void setLSID(String identifier, TaxonBase<?> taxon) {
         //logger.info("setLSID");
         //        boolean lsidok=false;
@@ -1888,7 +1875,6 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
             } catch (MalformedLSIDException e) {
                 logger.warn("Malformed LSID");
             }
-
         }
 
         //logger.info("search reference for LSID");
@@ -1972,7 +1958,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
             if (nomenclaturalCode.equals(NomenclaturalCode.ICZN)){
                 nameTBF = TaxonNameFactory.NewZoologicalInstance(null);
             }
-            if (nomenclaturalCode.equals(NomenclaturalCode.ICNB)){
+            if (nomenclaturalCode.equals(NomenclaturalCode.ICNP)){
                 nameTBF= TaxonNameFactory.NewBacterialInstance(null);
             }
             parser.parseReferencedName(nameTBF, fullname, rank, false);
@@ -2004,7 +1990,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                     if (nomenclaturalCode.equals(NomenclaturalCode.ICZN)) {
                         ((ZoologicalName) nameTBF).setAuthorshipCache(currentMyName.getAuthor());
                     }
-                    if (nomenclaturalCode.equals(NomenclaturalCode.ICNB)) {
+                    if (nomenclaturalCode.equals(NomenclaturalCode.ICNP)) {
                         ((BacterialName) nameTBF).setAuthorshipCache(currentMyName.getAuthor());
                     }
                 }
@@ -2305,7 +2291,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                     if (nomenclaturalCode.equals(NomenclaturalCode.ICZN)){
                         nameToBeFilled = TaxonNameFactory.NewZoologicalInstance(null);
                     }
-                    if (nomenclaturalCode.equals(NomenclaturalCode.ICNB)){
+                    if (nomenclaturalCode.equals(NomenclaturalCode.ICNP)){
                         nameToBeFilled = TaxonNameFactory.NewBacterialInstance(null);
                     }
                     nameToBeFilled.setTitleCache(s, true);
@@ -2401,7 +2387,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                     if (atomisedNameStr.length()>fullName.length()) {
                         newName=atomisedNameStr;
                     } else {
-                        if (fullName.length()>atomisedNameStr.length() && (rank.isLower(Rank.SPECIES()) && fullName.length()>2 && !fullName.substring(0, 1).equals("."))) {
+                        if (fullName.length()>atomisedNameStr.length() && (rank.isLowerThan(RankClass.Species) && fullName.length()>2 && !fullName.substring(0, 1).equals("."))) {
                             newName=askWhichScientificName(fullName,atomisedNameStr,classification.getTitleCache(),name);
                         } else {
                             newName=fullName;
@@ -2542,7 +2528,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                     if (atomisedNameStr.length()>fullName.length()) {
                         newName = atomisedNameStr;
                     } else {
-                        if (fullName.length()>atomisedNameStr.length() && (rank.isLower(Rank.SPECIES()) && fullName.length()>2 && !fullName.substring(0, 1).equals("."))) {
+                        if (fullName.length()>atomisedNameStr.length() && (rank.isLowerThan(RankClass.Species) && fullName.length()>2 && !fullName.substring(0, 1).equals("."))) {
                             newName = askWhichScientificName(fullName, atomisedNameStr, classification.getTitleCache(), name);
                         } else {
                             newName = fullName;
@@ -2753,7 +2739,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                 } else if(rankListToPrint.contains(nodeName.toLowerCase())) {
                     atomisedName.add(node.getTextContent().trim());
                 } else{
-                    if (rank.isHigher(Rank.GENUS()) && (nodeName.indexOf("dwcranks:")>-1 || nodeName.indexOf("dwc:Family")>-1)) {
+                    if (rank.isSupraGeneric() && (nodeName.indexOf("dwcranks:")>-1 || nodeName.indexOf("dwc:Family")>-1)) {
                         atomisedName.add(node.getTextContent().trim());
                     }else if (nodeName.equals("#text")){
                        String text = node.getTextContent();
@@ -2797,19 +2783,12 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
         return fullName;
     }
 
-    /**
-     * @param rank
-     * @param fullName
-     * @param atomisedMap
-     * @param myname
-     * @return
-     */
     private String extractAuthorFromNames(Rank rank, String name, HashMap<String, String> atomisedMap, MyName myname) {
         logger.info("extractAuthorFromNames");
         String fullName=name;
         if (atomisedMap.get("dwc:scientificnameauthorship") == null && fullName!=null){
             //            System.out.println("rank : "+rank.toString());
-            if(rank.isHigher(Rank.SPECIES())){
+            if(rank.isSupraSpecific()){
                 try{
                     String author=null;
                     if(atomisedMap.get("dwcranks:subgenus") != null) {
@@ -3907,7 +3886,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                     TaxonName tnb =  tmpb.getName();
                     Rank crank=null;
                     if (tnb != null){
-                         if(globalrank.equals(rank) || (globalrank.isLower(Rank.SPECIES()) && rank.equals(Rank.SPECIES()))){
+                         if(globalrank.equals(rank) || (globalrank.isLowerThan(RankClass.Species) && rank.equals(Rank.SPECIES()))){
                             if (tnb.getTitleCache().split("sec.")[0].trim().equalsIgnoreCase(fullname) ){
                                 crank =tnb.getRank();
                                 if (crank !=null && rank !=null){
@@ -3986,11 +3965,11 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
                     tnb.setTitleCache(fullname, true);
                     //                    tnb.setGenusOrUninomial(fullname);
                 }
-                if(rank.isHigher(Rank.GENUS())) {
+                if(rank.isSupraGeneric()) {
                     tnb.setGenusOrUninomial(partialname);
                 }
 
-                if(rank.isHigher(Rank.SPECIES())) {
+                if(rank.isSupraSpecific()) {
                     tnb.setTitleCache(partialname, true);
                 }
 
@@ -4465,7 +4444,7 @@ public class TaxonXTreatmentExtractor extends TaxonXExtractor{
         @SuppressWarnings("rawtypes")
         private Person findOrCreateAuthor(String author2) {
             //logger.info("findOrCreateAuthor");
-            List<UuidAndTitleCache<Person>> hiberPersons = importer.getAgentService().getPersonUuidAndTitleCache();
+            List<UuidAndTitleCache<Person>> hiberPersons = importer.getAgentService().getUuidAndTitleCache(Person.class, null, null);
             for (UuidAndTitleCache<Person> hibernateP:hiberPersons){
                 if(hibernateP.getTitleCache().equals(author2)) {
                     AgentBase existing = importer.getAgentService().find(hibernateP.getUuid());