fix CubaCondensedStringComposer
authorKatja Luther <k.luther@bgbm.org>
Fri, 3 Jun 2016 09:17:47 +0000 (11:17 +0200)
committerKatja Luther <k.luther@bgbm.org>
Fri, 3 Jun 2016 09:17:47 +0000 (11:17 +0200)
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/geo/CondensedDistributionComposerBase.java
cdmlib-ext/src/main/java/eu/etaxonomy/cdm/ext/geo/FloraCubaCondensedDistributionComposer.java
cdmlib-ext/src/test/java/eu/etaxonomy/cdm/ext/geo/FloraCubaCondensedDistributionComposerTest.java

index 366ccde4c646dc39ed99e19b78b47dc3665bba7a..17b6fc80679c7eae48ef678e86cb5fa2fc313eb1 100644 (file)
@@ -26,6 +26,14 @@ public abstract class CondensedDistributionComposerBase implements ICondensedDis
 
     protected static Map<UUID, String> statusSymbols;
 
+
+
+    protected String areaPreTag = "<b>";
+
+    protected String areaPostTag = "</b>";
+
+
+
     /**
      * @param status
      * @return
@@ -69,4 +77,23 @@ public abstract class CondensedDistributionComposerBase implements ICondensedDis
         return symbol;
     }
 
+
+    public String getAreaPreTag() {
+        return areaPreTag;
+    }
+
+    public void setAreaPreTag(String areaPreTag) {
+        this.areaPreTag = areaPreTag;
+    }
+
+    public String getAreaPostTag() {
+        return areaPostTag;
+    }
+
+    public void setAreaPostTag(String areaPostTag) {
+        this.areaPostTag = areaPostTag;
+    }
+
+
+
 }
index 361d18ef0d9052dec2c2efab5daac0bcb98823d6..87f808f436cce5e31c1fc2e51eb9a2eb49cf14fa 100644 (file)
@@ -21,6 +21,7 @@ import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 
 import eu.etaxonomy.cdm.api.service.dto.CondensedDistribution;
+import eu.etaxonomy.cdm.common.UTF8;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Language;
@@ -41,6 +42,11 @@ public class FloraCubaCondensedDistributionComposer extends CondensedDistributio
 
     private static Set<UUID> foreignStatusUuids;
 
+    private UUID uuidInternalArea = UUID.fromString("d0144a6e-0e17-4a1d-bce5-d464a2aa7229");  //Cuba
+
+    private String internalAreaSeparator = UTF8.EN_DASH.toString() + " ";
+
+
     // these status uuids are special for EuroPlusMed and might also be used
     private final static UUID REPORTED_IN_ERROR_UUID =  UUID.fromString("38604788-cf05-4607-b155-86db456f7680");
 
@@ -78,17 +84,30 @@ public class FloraCubaCondensedDistributionComposer extends CondensedDistributio
             areaList.add(0, (NamedArea)CdmBase.deproxy(dtb));
         }
 
+
+        boolean isFirstAfterInternalArea = false;
         for (NamedArea area : areaList){
 
             if (area.getPartOf() != null){
                 continue;  //subarea are handled later
             }
+
             StringBuilder areaStatusString = new StringBuilder();
+
+
+
             Distribution distribution = getDistribution(area, filteredDistributions);
             if (distribution == null){
                 continue;
             }
 
+            if (area.getUuid().equals(uuidInternalArea)){
+                isFirstAfterInternalArea = true;
+            }else if(isFirstAfterInternalArea && !area.getUuid().equals(uuidInternalArea)){
+                areaStatusString.append(internalAreaSeparator);
+                isFirstAfterInternalArea = false;
+            }
+
             PresenceAbsenceTerm status = distribution.getStatus();
 
             String statusSymbol = statusSymbol(status);
@@ -103,6 +122,7 @@ public class FloraCubaCondensedDistributionComposer extends CondensedDistributio
 //                areaStatusString.append(')');
             }
 
+
 //            if(isForeignStatus(status)) {
 //                condensedDistribution.addForeignDistributionItem(status, areaStatusString.toString(), areaLabel);
 //            } else {
@@ -199,7 +219,18 @@ public class FloraCubaCondensedDistributionComposer extends CondensedDistributio
      * @return
      */
     private String makeAreaLabel(List<Language> langs, NamedArea area) {
-        return area.getIdInVocabulary() != null ? area.getIdInVocabulary() :area.getPreferredRepresentation(langs).getAbbreviatedLabel();
+        String result = area.getIdInVocabulary() != null ? area.getIdInVocabulary() :area.getPreferredRepresentation(langs).getAbbreviatedLabel();
+        return areaPreTag + result + areaPostTag;
+    }
+
+
+
+    public String getInternalAreaSeparator() {
+        return internalAreaSeparator;
+    }
+
+    public void setInternalAreaSeparator(String internalAreaSeparator) {
+        this.internalAreaSeparator = internalAreaSeparator;
     }
 
     /**
@@ -257,4 +288,6 @@ public class FloraCubaCondensedDistributionComposer extends CondensedDistributio
         }
     }
 
+
+
 }
index 7f46406e17846b0237b9f6d0ab4829de4401a501..c7c9a385b0b5de84d550b35798d7af329b1729fb 100644 (file)
@@ -130,6 +130,8 @@ public class FloraCubaCondensedDistributionComposerTest {
     @Test
     public void testCreateCondensedDistribution() {
         FloraCubaCondensedDistributionComposer composer = new FloraCubaCondensedDistributionComposer();
+        composer.setAreaPreTag("");
+        composer.setAreaPostTag("");
 
         Set<Distribution> filteredDistributions = new HashSet<Distribution>();
         filteredDistributions.add(Distribution.NewInstance(cuba, PresenceAbsenceTerm.NATURALISED()));
@@ -142,7 +144,7 @@ public class FloraCubaCondensedDistributionComposerTest {
         CondensedDistribution condensedDistribution = composer.createCondensedDistribution(filteredDistributions, null);
         String condensedString = condensedDistribution.toString();
 
-        Assert.assertEquals("Condensed string for Cuba differs", "nCu((c)CuE(nHo)) Bah ?VM ", condensedString);
+        Assert.assertEquals("Condensed string for Cuba differs", "nCu((c)CuE(nHo)) "+composer.getInternalAreaSeparator() +"Bah ?VM ", condensedString);
 
 
         //TODO work in progress
@@ -162,7 +164,7 @@ public class FloraCubaCondensedDistributionComposerTest {
         //Cuba
         label = "Cuba";
         abbrev = "Cu";
-        UUID uuid = UUID.randomUUID();
+        UUID uuid = UUID.fromString("d0144a6e-0e17-4a1d-bce5-d464a2aa7229");
         cuba = getNamedArea(uuid, label, abbrev, cubaAreasVocabualary);
 
         //Western Cuba