Project

General

Profile

« Previous | Next » 

Revision 9dc896c9

Added by Andreas Müller almost 7 years ago

fix #6368 rename table and class TaxonNameBase

View differences:

cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/SpecimenImportBase.java
50 50
import eu.etaxonomy.cdm.model.name.Rank;
51 51
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
52 52
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
53
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
53
import eu.etaxonomy.cdm.model.name.TaxonName;
54 54
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
55 55
import eu.etaxonomy.cdm.model.occurrence.Collection;
56 56
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
......
97 97

  
98 98

  
99 99

  
100
	protected TaxonNameBase<?, ?> getOrCreateTaxonName(String scientificName, Rank rank, boolean preferredFlag, STATE state, int unitIndexInAbcdFile){
101
	    TaxonNameBase<?, ?> taxonName = null;
100
	protected TaxonName getOrCreateTaxonName(String scientificName, Rank rank, boolean preferredFlag, STATE state, int unitIndexInAbcdFile){
101
	    TaxonName taxonName = null;
102 102
        SpecimenImportConfiguratorBase<?,?,?> config = state.getConfig();
103 103

  
104 104
        //check atomised name data for rank
......
121 121
            if(config.isIgnoreAuthorship() && parsedName!=null){// && preferredFlag){
122 122
                // do not ignore authorship for non-preferred names because they need
123 123
                // to be created for the determination history
124
                String nameCache = TaxonNameBase.castAndDeproxy(parsedName).getNameCache();
125
                List<TaxonNameBase> names = getNameService().findNamesByNameCache(nameCache, MatchMode.EXACT, null);
124
                String nameCache = TaxonName.castAndDeproxy(parsedName).getNameCache();
125
                List<TaxonName> names = getNameService().findNamesByNameCache(nameCache, MatchMode.EXACT, null);
126 126
                if (!names.isEmpty()){
127
                     taxonName = getBestMatchingName(scientificName, new ArrayList<TaxonNameBase>(names), state);
127
                     taxonName = getBestMatchingName(scientificName, new ArrayList<>(names), state);
128 128
                }
129 129
                if (taxonName == null && !names.isEmpty()){
130 130
                    taxonName = names.get(0);
......
132 132

  
133 133
            } else {
134 134
                //search for existing names
135
                List<TaxonNameBase> names = getNameService().listByTitle(TaxonNameBase.class, scientificName, MatchMode.EXACT, null, null, null, null, null);
135
                List<TaxonName> names = getNameService().listByTitle(TaxonName.class, scientificName, MatchMode.EXACT, null, null, null, null, null);
136 136
                taxonName = getBestMatchingName(scientificName, names, state);
137 137
                //still nothing found -> try with the atomised name full title cache
138 138
                if(taxonName==null && atomisedTaxonName!=null){
139
                    names = getNameService().listByTitle(TaxonNameBase.class, atomisedTaxonName.getFullTitleCache(), MatchMode.EXACT, null, null, null, null, null);
139
                    names = getNameService().listByTitle(TaxonName.class, atomisedTaxonName.getFullTitleCache(), MatchMode.EXACT, null, null, null, null, null);
140 140
                    taxonName = getBestMatchingName(atomisedTaxonName.getTitleCache(), names, state);
141 141
                    //still nothing found -> try with the atomised name title cache
142 142
                    if(taxonName==null){
143
                        names = getNameService().listByTitle(TaxonNameBase.class, atomisedTaxonName.getTitleCache(), MatchMode.EXACT, null, null, null, null, null);
143
                        names = getNameService().listByTitle(TaxonName.class, atomisedTaxonName.getTitleCache(), MatchMode.EXACT, null, null, null, null, null);
144 144
                        taxonName = getBestMatchingName(atomisedTaxonName.getTitleCache(), names, state);
145 145
                    }
146 146
                }
......
150 150
        }
151 151

  
152 152
        if(taxonName==null && atomisedTaxonName!=null){
153
            taxonName = (TaxonNameBase<?, ?>) atomisedTaxonName;
153
            taxonName = (TaxonName<?, ?>) atomisedTaxonName;
154 154
            state.getReport().addName(taxonName);
155 155
            logger.info("Created new taxon name "+taxonName);
156 156
            if(taxonName.hasProblem()){
......
179 179
        return taxonName;
180 180
    }
181 181

  
182
	 protected TaxonNameBase<?, ?> getBestMatchingName(String scientificName, java.util.Collection<TaxonNameBase> names, STATE state){
183
	        Set<TaxonNameBase> namesWithAcceptedTaxa = new HashSet<TaxonNameBase>();
184
	        List<TaxonNameBase> namesWithAcceptedTaxaInClassification = new ArrayList<TaxonNameBase>();
185
	        for (TaxonNameBase name : names) {
182
	 protected TaxonName getBestMatchingName(String scientificName, java.util.Collection<TaxonName> names, STATE state){
183
	        Set<TaxonName> namesWithAcceptedTaxa = new HashSet<>();
184
	        List<TaxonName> namesWithAcceptedTaxaInClassification = new ArrayList<>();
185
	        for (TaxonName name : names) {
186 186
	            if(!name.getTaxa().isEmpty()){
187 187
	                Set<Taxon> taxa = name.getTaxa();
188 188
	                for (Taxon taxon:taxa){
......
224 224
	        }
225 225
	        //no names with accepted taxa found -> check accepted taxa of synonyms
226 226
	        List<Taxon> taxaFromSynonyms = new ArrayList<>();
227
	        for (TaxonNameBase name : names) {
227
	        for (TaxonName name : names) {
228 228
	            Set<TaxonBase> taxonBases = name.getTaxonBases();
229 229
	            for (TaxonBase taxonBase : taxonBases) {
230 230
	                if(taxonBase.isInstanceOf(Synonym.class)){
......
312 312
	     * @param state
313 313
	     * @return the corresponding Botanical or Zoological or... name
314 314
	     */
315
	    protected TaxonNameBase<?,?> setTaxonNameByType(
315
	    protected TaxonName setTaxonNameByType(
316 316
	            HashMap<String, String> atomisedMap, String fullName, STATE state) {
317 317
	        boolean problem = false;
318 318
	        if (logger.isDebugEnabled()){
......
320 320
	        }
321 321

  
322 322
	        if (state.getDataHolder().getNomenclatureCode().equals("Zoological") || state.getDataHolder().getNomenclatureCode().equals(NomenclaturalCode.ICZN.getUuid())) {
323
	            TaxonNameBase<?,?> taxonName = TaxonNameFactory.NewZoologicalInstance(null);
323
	            TaxonName taxonName = TaxonNameFactory.NewZoologicalInstance(null);
324 324
	            taxonName.setFullTitleCache(fullName, true);
325 325
	            taxonName.setGenusOrUninomial(NB(getFromMap(atomisedMap, "Genus")));
326 326
	            taxonName.setInfraGenericEpithet(NB(getFromMap(atomisedMap, "SubGenus")));
......
379 379
	            }
380 380
	        }
381 381
	        else if (state.getDataHolder().getNomenclatureCode().equals("Botanical") || state.getDataHolder().getNomenclatureCode().equals(NomenclaturalCode.ICNAFP.getUuid())) {
382
	            TaxonNameBase taxonName = (TaxonNameBase)parseScientificName(fullName, state, state.getReport(), null);
382
	            TaxonName taxonName = (TaxonName)parseScientificName(fullName, state, state.getReport(), null);
383 383
	            if (taxonName != null){
384 384
	                return taxonName;
385 385
	            }
......
439 439
	            }
440 440
	        }
441 441
	        else if (state.getDataHolder().getNomenclatureCode().equals("Bacterial") || state.getDataHolder().getNomenclatureCode().equals(NomenclaturalCode.ICNB.getUuid())) {
442
	            TaxonNameBase taxonName = TaxonNameFactory.NewBacterialInstance(null);
442
	            TaxonName taxonName = TaxonNameFactory.NewBacterialInstance(null);
443 443
	            taxonName.setFullTitleCache(fullName, true);
444 444
	            taxonName.setGenusOrUninomial(getFromMap(atomisedMap, "Genus"));
445 445
	            taxonName.setInfraGenericEpithet(NB(getFromMap(atomisedMap, "SubGenus")));
......
478 478
	            }
479 479
	        }
480 480
	        else if (state.getDataHolder().getNomenclatureCode().equals("Cultivar")) {
481
	            TaxonNameBase taxonName = TaxonNameFactory.NewCultivarInstance(null);
481
	            TaxonName taxonName = TaxonNameFactory.NewCultivarInstance(null);
482 482

  
483 483
	            if (taxonName.hasProblem()) {
484 484
	                logger.info("pb ICNCP");
......
492 492

  
493 493
	        if (problem) {
494 494
	            logger.info("Problem im setTaxonNameByType ");
495
	            TaxonNameBase<?,?> taxonName = TaxonNameFactory.NewNonViralInstance(null);
495
	            TaxonName taxonName = TaxonNameFactory.NewNonViralInstance(null);
496 496
	            taxonName.setFullTitleCache(fullName, true);
497 497
	            return taxonName;
498 498
	        }
499
	        TaxonNameBase<?,?> tn = TaxonNameFactory.NewNonViralInstance(null);
499
	        TaxonName tn = TaxonNameFactory.NewNonViralInstance(null);
500 500
	        return tn;
501 501
	    }
502 502

  
......
567 567
	            return cdmRepository.getDescriptionService().saveOrUpdate(CdmBase.deproxy(cdmBase, DescriptionBase.class));
568 568
	        }else if (cdmBase.isInstanceOf(TaxonBase.class)){
569 569
	            return cdmRepository.getTaxonService().saveOrUpdate(CdmBase.deproxy(cdmBase, TaxonBase.class));
570
	        }else if (cdmBase.isInstanceOf(TaxonNameBase.class)){
571
	            return cdmRepository.getNameService().saveOrUpdate(CdmBase.deproxy(cdmBase, TaxonNameBase.class));
570
	        }else if (cdmBase.isInstanceOf(TaxonName.class)){
571
	            return cdmRepository.getNameService().saveOrUpdate(CdmBase.deproxy(cdmBase, TaxonName.class));
572 572
	        }else if (cdmBase.isInstanceOf(TaxonNode.class)){
573 573
                return cdmRepository.getTaxonNodeService().saveOrUpdate(CdmBase.deproxy(cdmBase, TaxonNode.class));
574 574
            }else{
......
785 785
	        if(rank!=null){
786 786
	            if (rank.isLower(Rank.GENUS() )){
787 787
	                String genusOrUninomial = nvname.getGenusOrUninomial();
788
	                TaxonNameBase<?,?> taxonName = getOrCreateTaxonName(genusOrUninomial, Rank.GENUS(), preferredFlag, state, -1);
788
	                TaxonName taxonName = getOrCreateTaxonName(genusOrUninomial, Rank.GENUS(), preferredFlag, state, -1);
789 789
	                genus = getOrCreateTaxonForName(taxonName, state);
790 790
	                if (genus == null){
791 791
	                    logger.debug("The genus should not be null " + taxonName);
......
799 799
	                String prefix = nvname.getGenusOrUninomial();
800 800
	                String name = nvname.getInfraGenericEpithet();
801 801
	                if (name != null){
802
	                    TaxonNameBase<?,?> taxonName = getOrCreateTaxonName(prefix+" "+name, Rank.SUBGENUS(), preferredFlag, state, -1);
802
	                    TaxonName taxonName = getOrCreateTaxonName(prefix+" "+name, Rank.SUBGENUS(), preferredFlag, state, -1);
803 803
	                    subgenus = getOrCreateTaxonForName(taxonName, state);
804 804
	                    if (preferredFlag) {
805 805
	                        parent = linkParentChildNode(genus, subgenus, classification, state);
......
811 811
	                    String name = nvname.getInfraGenericEpithet();
812 812
	                    String spe = nvname.getSpecificEpithet();
813 813
	                    if (spe != null){
814
	                        TaxonNameBase<?,?> taxonName = getOrCreateTaxonName(prefix+" "+name+" "+spe, Rank.SPECIES(), preferredFlag, state, -1);
814
	                        TaxonName taxonName = getOrCreateTaxonName(prefix+" "+name+" "+spe, Rank.SPECIES(), preferredFlag, state, -1);
815 815
	                        species = getOrCreateTaxonForName(taxonName, state);
816 816
	                        if (preferredFlag) {
817 817
	                            parent = linkParentChildNode(subgenus, species, classification, state);
......
822 822
	                    String prefix = nvname.getGenusOrUninomial();
823 823
	                    String name = nvname.getSpecificEpithet();
824 824
	                    if (name != null){
825
	                        TaxonNameBase<?,?> taxonName = getOrCreateTaxonName(prefix+" "+name, Rank.SPECIES(), preferredFlag, state, -1);
825
	                        TaxonName taxonName = getOrCreateTaxonName(prefix+" "+name, Rank.SPECIES(), preferredFlag, state, -1);
826 826
	                        species = getOrCreateTaxonForName(taxonName, state);
827 827
	                        if (preferredFlag) {
828 828
	                            parent = linkParentChildNode(genus, species, classification, state);
......
831 831
	                }
832 832
	            }
833 833
	            if (rank.isLower(Rank.INFRASPECIES())){
834
	                TaxonNameBase<?,?> taxonName = getOrCreateTaxonName(nvname.getFullTitleCache(), Rank.SUBSPECIES(), preferredFlag, state, -1);
834
	                TaxonName taxonName = getOrCreateTaxonName(nvname.getFullTitleCache(), Rank.SUBSPECIES(), preferredFlag, state, -1);
835 835
	                subspecies = getOrCreateTaxonForName(taxonName, state);
836 836
	                if (preferredFlag) {
837 837
	                    parent = linkParentChildNode(species, subspecies, classification, state);
......
891 891
	        return null;
892 892
	    }
893 893

  
894
	    protected Taxon getOrCreateTaxonForName(TaxonNameBase<?, ?> taxonNameBase, STATE state){
895
	        if (taxonNameBase != null){
896
    	        Set<Taxon> acceptedTaxa = taxonNameBase.getTaxa();
894
	    protected Taxon getOrCreateTaxonForName(TaxonName taxonName, STATE state){
895
	        if (taxonName != null){
896
    	        Set<Taxon> acceptedTaxa = taxonName.getTaxa();
897 897
    	        if(acceptedTaxa.size()>0){
898 898
    	            Taxon firstAcceptedTaxon = acceptedTaxa.iterator().next();
899 899
    	            if(acceptedTaxa.size()>1){
900 900
    	                String message = "More than one accepted taxon was found for taxon name: "
901
    	                        + taxonNameBase.getTitleCache() + "!\n" + firstAcceptedTaxon + "was chosen for "+state.getDerivedUnitBase();
901
    	                        + taxonName.getTitleCache() + "!\n" + firstAcceptedTaxon + "was chosen for "+state.getDerivedUnitBase();
902 902
    	                state.getReport().addInfoMessage(message);
903 903
    	                logger.warn(message);
904 904
    	            }
......
907 907
    	            }
908 908
    	        }
909 909
    	        else{
910
    	            Set<TaxonBase> taxonAndSynonyms = taxonNameBase.getTaxonBases();
910
    	            Set<TaxonBase> taxonAndSynonyms = taxonName.getTaxonBases();
911 911
    	            for (TaxonBase taxonBase : taxonAndSynonyms) {
912 912
    	                if(taxonBase.isInstanceOf(Synonym.class)){
913 913
    	                    Synonym synonym = HibernateProxyHelper.deproxy(taxonBase, Synonym.class);
914 914
    	                    Taxon acceptedTaxonOfSynonym = synonym.getAcceptedTaxon();
915 915
    	                    if(acceptedTaxonOfSynonym == null){
916 916
    	                        String message = "No accepted taxon could be found for taxon name: "
917
    	                                + taxonNameBase.getTitleCache()
917
    	                                + taxonName.getTitleCache()
918 918
    	                                + "!";
919 919
    	                        state.getReport().addInfoMessage(message);
920 920
    	                        logger.warn(message);
......
925 925
    	                }
926 926
    	            }
927 927
    	        }
928
    	        Taxon taxon = Taxon.NewInstance(taxonNameBase, state.getRef());
928
    	        Taxon taxon = Taxon.NewInstance(taxonName, state.getRef());
929 929
    	        save(taxon, state);
930 930
    	        state.getReport().addTaxon(taxon);
931 931
    	        logger.info("Created new taxon "+ taxon);
......
988 988
    	                state.getDataHolder().setNomenclatureCode(identification.getCode());
989 989
    	            }
990 990
	            }
991
	            TaxonNameBase<?,?> taxonName = getOrCreateTaxonName(scientificName, null, preferredFlag, state, i);
991
	            TaxonName taxonName = getOrCreateTaxonName(scientificName, null, preferredFlag, state, i);
992 992
	            Taxon taxon = getOrCreateTaxonForName(taxonName, state);
993 993
	            addTaxonNode(taxon, state,preferredFlag);
994 994
	            linkDeterminationEvent(state, taxon, preferredFlag, derivedUnitFacade, identification.getIdentifier(), identification.getDate());
......
1099 1099
	                }
1100 1100
	                specimenTypeDesignationstatus = (SpecimenTypeDesignationStatus) cdmAppController.getTermService().find(specimenTypeDesignationstatus.getUuid());
1101 1101
	                //Designation
1102
	                TaxonNameBase<?,?> name = taxon.getName();
1102
	                TaxonName name = taxon.getName();
1103 1103
	                SpecimenTypeDesignation designation = SpecimenTypeDesignation.NewInstance();
1104 1104

  
1105 1105
	                designation.setTypeStatus(specimenTypeDesignationstatus);

Also available in: Unified diff