Enhance ABCD import report
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 2 Sep 2015 09:08:05 +0000 (11:08 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 2 Sep 2015 09:08:17 +0000 (11:08 +0200)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/specimen/abcd206/in/Abcd206ImportReport.java

index 1a4aa7a2adbf6d5a1d99f1d204da0cde3d750315..0c4226ec389c94b51b9c83ba6c4320e7eec4ad39 100644 (file)
@@ -26,6 +26,7 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 
@@ -118,16 +119,40 @@ public class Abcd206ImportReport {
     public void printReport(PrintStream out) {
 
         out.println("++++++++Import Report+++++++++");
+      //all specimens
+        Set<UnitIdSpecimen> allSpecimens = new HashSet<UnitIdSpecimen>();
+        Map<SpecimenOrObservationType, Integer> specimenTypeToCount = new HashMap<SpecimenOrObservationType, Integer>();
+        for (Entry<UnitIdSpecimen, List<UnitIdSpecimen>> entry : derivateMap.entrySet()) {
+            UnitIdSpecimen parentSpecimen = entry.getKey();
+            incrementSpecimenTypeCount(specimenTypeToCount, parentSpecimen);
+            allSpecimens.add(parentSpecimen);
+            for (UnitIdSpecimen childSpecimen : entry.getValue()) {
+                incrementSpecimenTypeCount(specimenTypeToCount, childSpecimen);
+                allSpecimens.add(childSpecimen);
+            }
+        }
+        out.println("Specimens created: "+allSpecimens.size());
+        for(Entry<SpecimenOrObservationType, Integer> entry:specimenTypeToCount.entrySet()){
+            SpecimenOrObservationType type = entry.getKey();
+            out.println(type+": "+entry.getValue());
+        }
+        out.println("\n");
+
+        //taxon name
         out.println("---Created Taxon Names ("+createdNames.size()+")---");
         for (TaxonNameBase<?, ?> taxonName : createdNames) {
             out.println(taxonName.getTitleCache());
         }
         out.println("\n");
+
+        //taxa
         out.println("---Created Taxa ("+createdTaxa.size()+")---");
         for (Taxon taxon : createdTaxa) {
             out.println(taxon.getTitleCache());
         }
         out.println("\n");
+
+        //taxon nodes
         out.println("---Created Taxon Nodes ("+createdTaxonNodes.size()+")---");
         for (TaxonNode taxonNode : createdTaxonNodes) {
             String nodeString = taxonNode.toString();
@@ -143,6 +168,15 @@ public class Abcd206ImportReport {
             out.println(nodeString);
         }
         out.println("\n");
+
+        //not imported
+        out.println("---Already existing specimen (not imported)---");
+        for(UnitIdSpecimen specimen:alreadyExistingSpecimens){
+            out.println(formatSpecimen(specimen));
+        }
+        out.println("\n");
+
+        //taxa with associated specimens
         out.println("---Taxa with associated specimens---");
         for(Entry<Taxon, List<UnitIdSpecimen>> entry:taxonToAssociatedSpecimens.entrySet()){
             Taxon taxon = entry.getKey();
@@ -158,19 +192,8 @@ public class Abcd206ImportReport {
             }
         }
         out.println("\n");
-        //all specimens
-        Set<UnitIdSpecimen> allSpecimens = new HashSet<UnitIdSpecimen>();
-        for (Entry<UnitIdSpecimen, List<UnitIdSpecimen>> entry : derivateMap.entrySet()) {
-            allSpecimens.add(entry.getKey());
-            allSpecimens.addAll(entry.getValue());
-        }
-        out.println("Specimens created: "+allSpecimens.size());
-        out.println("\n");
-        out.println("---Already existing specimen (not imported)---");
-        for(UnitIdSpecimen specimen:alreadyExistingSpecimens){
-            out.println(formatSpecimen(specimen));
-        }
         out.println("\n");
+        //info messages
         out.println("---Info messages---");
         for(String message:infoMessages){
             out.println(message);
@@ -181,6 +204,19 @@ public class Abcd206ImportReport {
         }
     }
 
+    private void incrementSpecimenTypeCount(Map<SpecimenOrObservationType, Integer> specimenTypeToCount,
+            UnitIdSpecimen specimen) {
+        SpecimenOrObservationType specimenType = specimen.getSpecimen().getRecordBasis();
+        Integer count = specimenTypeToCount.get(specimenType);
+        if(count==null){
+            count = 1;
+        }
+        else{
+            count++;
+        }
+        specimenTypeToCount.put(specimenType, count);
+    }
+
     private String formatSpecimen(UnitIdSpecimen specimen){
         return "("+specimen.getUnitId()+") ["+specimen.getSpecimen().getRecordBasis()+"] "+specimen.getSpecimen().getTitleCache();
     }