fix creation of new namedAreas in specimen import and search for isocode
authorKatja Luther <k.luther@bgbm.org>
Wed, 20 Sep 2017 12:22:23 +0000 (14:22 +0200)
committerKatja Luther <k.luther@bgbm.org>
Wed, 20 Sep 2017 12:23:00 +0000 (14:23 +0200)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightExportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/ExportConfiguratorBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaTaxExportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/UnitsGatheringArea.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IDefinedTermDao.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/DefinedTermDaoImpl.java

index a66a6128b6dba2f51a0112fa9b04c8baa4de44f7..67bbfad96cd613f41548df9ecf830771468f37d1 100755 (executable)
@@ -10,7 +10,6 @@ package eu.etaxonomy.cdm.io.cdmLight;
 
 import java.io.File;
 
-import eu.etaxonomy.cdm.filter.TaxonNodeFilter;
 import eu.etaxonomy.cdm.io.common.CsvIOConfigurator;
 import eu.etaxonomy.cdm.io.common.ExportConfiguratorBase;
 import eu.etaxonomy.cdm.io.common.ExportResultType;
@@ -29,7 +28,7 @@ public class CdmLightExportConfigurator extends ExportConfiguratorBase<CdmLightE
 //    private Set<UUID> classificationUuids = new HashSet<>();
 //
 //    private Set<UUID> taxonNodeUuids = new HashSet<>();
-    private TaxonNodeFilter taxonNodeFilter = new TaxonNodeFilter();
+
 
     private CsvIOConfigurator csvIOConfig = CsvIOConfigurator.NewInstance();
 
@@ -128,13 +127,6 @@ public class CdmLightExportConfigurator extends ExportConfiguratorBase<CdmLightE
 //    }
 
 
-    public TaxonNodeFilter getTaxonNodeFilter() {
-        return taxonNodeFilter;
-    }
-
 
-    public void setTaxonNodeFilter(TaxonNodeFilter taxonNodeFilter) {
-        this.taxonNodeFilter = taxonNodeFilter;
-    }
 
 }
index 62087550982d1894a8d8cb7125ea06c1bd2a1f2c..af8b054446ce4c34cb19ef43c8b519771251ede3 100644 (file)
@@ -11,6 +11,7 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
 import eu.etaxonomy.cdm.api.application.ICdmRepository;\r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
+import eu.etaxonomy.cdm.filter.TaxonNodeFilter;\r
 import eu.etaxonomy.cdm.io.common.mapping.out.IExportTransformer;\r
 import eu.etaxonomy.cdm.model.reference.IDatabase;\r
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
@@ -36,6 +37,8 @@ public abstract class ExportConfiguratorBase<STATE extends ExportStateBase, TRAN
        protected IDatabase sourceReference;\r
        protected Class<ICdmIO>[] ioClassList;\r
 \r
+        private TaxonNodeFilter taxonNodeFilter = new TaxonNodeFilter();\r
+\r
        protected ExportResultType resultType;\r
        /**\r
      * @param resultType the resultType to set\r
@@ -197,6 +200,13 @@ public abstract class ExportConfiguratorBase<STATE extends ExportStateBase, TRAN
 \r
        @Override\r
        public ExportResultType getResultType(){return resultType;}\r
+       public TaxonNodeFilter getTaxonNodeFilter() {\r
+        return taxonNodeFilter;\r
+    }\r
 \r
 \r
+    public void setTaxonNodeFilter(TaxonNodeFilter taxonNodeFilter) {\r
+        this.taxonNodeFilter = taxonNodeFilter;\r
+    }\r
+\r
 }\r
index 5e0c2519365504f2efd5ca6f4af0e5d77fddbf2d..8daff5b8e896ff354c06248a29035334761c0727 100644 (file)
@@ -17,7 +17,6 @@ import java.util.UUID;
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.database.ICdmDataSource;\r
-import eu.etaxonomy.cdm.filter.TaxonNodeFilter;\r
 import eu.etaxonomy.cdm.io.common.ExportResultType;\r
 import eu.etaxonomy.cdm.io.common.XmlExportConfiguratorBase;\r
 \r
@@ -65,7 +64,7 @@ public class DwcaTaxExportConfigurator extends XmlExportConfiguratorBase<DwcaTax
 \r
        private List<UUID> featureExclusions = new ArrayList<>();\r
 \r
-       private TaxonNodeFilter taxonNodeFilter = new TaxonNodeFilter();\r
+\r
 \r
        private String defaultTaxonSource;\r
 \r
@@ -313,12 +312,7 @@ public class DwcaTaxExportConfigurator extends XmlExportConfiguratorBase<DwcaTax
                return fieldsTerminatedBy;\r
        }\r
 \r
-       public TaxonNodeFilter getTaxonNodeFilter() {\r
-           return taxonNodeFilter;\r
-       }\r
-       public void setTaxonNodeFilter(TaxonNodeFilter taxonNodeFilter) {\r
-           this.taxonNodeFilter = taxonNodeFilter;\r
-       }\r
+\r
 \r
 \r
     public boolean isDoSynonyms() {\r
index 3e34e0730fc7570eec26dd8dbb314a9370235005..5c9e96e33b231e75eb1f611644611ef0351bfa18 100644 (file)
@@ -185,18 +185,18 @@ public class UnitsGatheringArea {
             IVocabularyService vocabularyService, String namedAreaStr, String namedAreaClass) {
         NamedArea ar = NamedArea.NewInstance(namedAreaStr, namedAreaStr, namedAreaStr);
         ar.setTitleCache(namedAreaStr, true);
-        if (namedAreaClass != null){
-            if (namedAreaClass.equals("continent")){
-                if (continentVocabulary == null){
-                    continentVocabulary = vocabularyService.load(NamedArea.uuidContinentVocabulary);
-                }
-                continentVocabulary.addTerm(ar);
-            }else if(namedAreaClass.equals("country") ){
-                if (countryVocabulary == null){
-                   countryVocabulary = vocabularyService.load(NamedArea.uuidContinentVocabulary);
-                }
-                countryVocabulary.addTerm(ar);
-            } else{
+//        if (namedAreaClass != null){
+//            if (namedAreaClass.equals("continent")){
+//                if (continentVocabulary == null){
+//                    continentVocabulary = vocabularyService.load(NamedArea.uuidContinentVocabulary);
+//                }
+//                continentVocabulary.addTerm(ar);
+//            }else if(namedAreaClass.equals("country") ){
+//                if (countryVocabulary == null){
+//                   countryVocabulary = vocabularyService.load(NamedArea.);
+//                }
+//                countryVocabulary.addTerm(ar);
+//            } else{
                 if (specimenImportVocabulary == null){
                     specimenImportVocabulary = vocabularyService.load(CdmImportBase.uuidUserDefinedNamedAreaVocabulary);
                     if (specimenImportVocabulary == null){
@@ -207,8 +207,8 @@ public class UnitsGatheringArea {
                     specimenImportVocabulary.addTerm(ar);
                 }
 
-            }
-        }
+//            }
+//        }
 
         termService.saveOrUpdate(ar);
         this.areas.add(ar);
@@ -274,8 +274,9 @@ public class UnitsGatheringArea {
                        List<UUID> countryUuids = new ArrayList<UUID>();
                        HashMap<String, UUID> matchingTerms = new HashMap<String, UUID>();
 
-                       List<Country> countryList = termService.list(Country.class, 0, 0, null, null);
-                       for (NamedArea na:countryList){
+                       Pager<Country> countryList = termService.findByRepresentationText(fullName, Country.class, 100, 0);
+
+                       for (NamedArea na:countryList.getRecords()){
                                if (na.getTitleCache().equalsIgnoreCase(fullName)) {
                                        countryUuids.add(na.getUuid());
                                }
index d2d6f157a682dd23c09bd9ce49dfc151a6024088..fe5f68cd925f9712d71bf417b020a503a7a371c4 100644 (file)
@@ -42,6 +42,13 @@ public interface IDefinedTermDao extends IIdentifiableDao<DefinedTermBase>, ITit
 
        public List<Language> getLanguagesByLocale(Enumeration<Locale> locales);
 
+        /**
+     * Returns the country with the isoCode iso639, works only with string length 2 or 3
+     *
+     * @param iso639 the isoCode of the searched country
+     *
+     * @return country with isoCode iso639
+     */
        public Country getCountryByIso(String iso639);
 
        public <TYPE extends DefinedTermBase> List<TYPE> getDefinedTermByRepresentationText(String text, Class<TYPE> clazz );
index 7e5f72a558fd54c9c994685412b2caf30a916df1..213f62f41d6348e7b6ebb7df0989ff50ca7e0c74 100644 (file)
@@ -158,15 +158,16 @@ public class DefinedTermDaoImpl extends IdentifiableDaoBase<DefinedTermBase> imp
        @Override
     public Country getCountryByIso(String iso3166) {
                // If iso639 = "" query returns non-unique result. We prevent this here:
-               if (StringUtils.isBlank(iso3166)) { return null; }
+               if (StringUtils.isBlank(iso3166) || iso3166.length()<2 || iso3166.length()>3) { return null; }
                AuditEvent auditEvent = getAuditEventFromContext();
                if(auditEvent.equals(AuditEvent.CURRENT_VIEW)) {
-                 Query query = getSession().createQuery("from Country where iso3166_A2 = :isoCode");
+                 Query query = getSession().createQuery("from Country where iso3166_A2 = :isoCode OR idInVocabulary = :isoCode");
                  query.setParameter("isoCode", iso3166);
                  return (Country) query.uniqueResult();
                } else {
                        AuditQuery query = getAuditReader().createQuery().forEntitiesAtRevision(Country.class,auditEvent.getRevisionNumber());
                        query.add(AuditEntity.property("iso3166_A2").eq(iso3166));
+                       query.add(AuditEntity.property("idInVocabulary").eq(iso3166));
                        return (Country) query.getSingleResult();
                }
        }