ref #7903: add comparator for taxa in cdm light configurator
authorKatja Luther <k.luther@bgbm.org>
Wed, 9 Jan 2019 13:11:35 +0000 (14:11 +0100)
committerKatja Luther <k.luther@bgbm.org>
Wed, 9 Jan 2019 13:11:35 +0000 (14:11 +0100)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightClassificationExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightExportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/cdmLight/CdmLightExportResultProcessor.java

index b9c5101d677e4c8951376a161d40e541fb75f973..f95b03a92224d018f203b26dae535ce99b4b860c 100755 (executable)
@@ -11,6 +11,7 @@ package eu.etaxonomy.cdm.io.cdmLight;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -169,7 +170,10 @@ public class CdmLightClassificationExport
               //create sortIndex for nodes
                 for(Entry<Integer, List<TaxonNodeDto>> entry :state.getNodeChildrenMap().entrySet()){
                     List<TaxonNodeDto> children = entry.getValue();
-                    TaxonNodeDtoByRankAndNameComparator comp = new TaxonNodeDtoByRankAndNameComparator();
+                    Comparator<TaxonNodeDto> comp = state.getConfig().getComparator();
+                    if (comp == null){
+                        comp = new TaxonNodeDtoByRankAndNameComparator();
+                    }
                     Collections.sort(children, comp);
                     int index = 0;
                     for (TaxonNodeDto child:children) {
index 4b9c90142800ea827b127608920330b9704b8a00..6c3f651d3adcc98430ecd3226c0a549190733185 100755 (executable)
@@ -9,11 +9,13 @@
 package eu.etaxonomy.cdm.io.cdmLight;
 
 import java.io.File;
+import java.util.Comparator;
 
 import eu.etaxonomy.cdm.io.common.CsvIOConfigurator;
 import eu.etaxonomy.cdm.io.common.ExportConfiguratorBase;
 import eu.etaxonomy.cdm.io.common.ExportResultType;
 import eu.etaxonomy.cdm.io.common.mapping.out.IExportTransformer;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
 
 /**
  * @author k.luther
@@ -39,6 +41,8 @@ public class CdmLightExportConfigurator
 
     private boolean isFilterIntextReferences = true;
 
+    private Comparator<TaxonNodeDto> comparator;
+
     /**
      * @param transformer
      */
@@ -136,6 +140,22 @@ public class CdmLightExportConfigurator
     }
 
 
+    /**
+     * @return the comparator
+     */
+    public Comparator<TaxonNodeDto> getComparator() {
+        return comparator;
+    }
+
+
+    /**
+     * @param comparator the comparator to set
+     */
+    public void setComparator(Comparator<TaxonNodeDto> comparator) {
+        this.comparator = comparator;
+    }
+
+
 //    public Set<UUID> getTaxonNodeUuids() {
 //        return taxonNodeUuids;
 //    }
index 3ec3ddff885bcb97d890dac465b5ac9f23c9ef2e..3899075959ebbb84d817858aeed8e199a9190754 100755 (executable)
@@ -105,6 +105,7 @@ public class CdmLightExportResultProcessor {
             state.setHomotypicalGroupStore(new HashMap<>());
             state.setReferenceStore(new HashMap<>());
             state.setSpecimenStore(new HashMap<>());
+            state.setNodeChildrenMap(new HashMap<>());
             //Replace quotes by double quotes
             for (CdmLightExportTable table: result.keySet()){
                 //schreibe jede Tabelle in einen Stream...