ref #10082 split MAN pro parte symbol in formatter
authorAndreas Müller <a.mueller@bgbm.org>
Fri, 29 Jul 2022 18:14:51 +0000 (20:14 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Fri, 29 Jul 2022 18:14:51 +0000 (20:14 +0200)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/format/taxon/TaxonRelationshipFormatter.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/format/taxon/TaxonRelationshipFormatterTest.java

index 986ed9987a9c44f7e516fcdeeef306e49dc51a52..9bbd4dc4492c05f6b2cf5a397fd180f1b6011b35 100644 (file)
@@ -163,6 +163,20 @@ public class TaxonRelationshipFormatter {
             }
         }
 
+        //p.p.
+        if (isMisapplied) {
+            if (isProParteMAN(type, inverse)) {
+                builder.addSeparator(", ");
+                symbol = "p.p.";
+                builder.add(TagEnum.symbol, symbol);
+            } else if (isProParteMAN(type, inverse)) {
+                builder.addSeparator(", ");
+                symbol = "part.";
+                builder.add(TagEnum.symbol, symbol);
+            }
+        }
+
+        //rel sec
         List<TaggedText> relSecTags = getReferenceTags(taxonRelationship.getCitation(),
                 taxonRelationship.getCitationMicroReference(),true);
         if (!relSecTags.isEmpty()){
@@ -239,6 +253,10 @@ public class TaxonRelationshipFormatter {
         //symbol
         String symbol = inverse? type.getInverseSymbol():type.getSymbol();
         if (isNotBlank(symbol)){
+            //handle p.p. MAN specific #10082
+            if (isProParteMAN(type, inverse) || isPartialMAN(type, inverse)) {
+                return TaxonRelationshipType.MISAPPLIED_NAME_FOR().getInverseSymbol();
+            }
             return symbol;
         }
 
@@ -276,6 +294,14 @@ public class TaxonRelationshipFormatter {
         return UNDEFINED_SYMBOL;
     }
 
+    private boolean isPartialMAN(TaxonRelationshipType type, boolean inverse) {
+        return inverse && type.getUuid().equals(TaxonRelationshipType.uuidPartialMisappliedNameFor);
+    }
+
+    private boolean isProParteMAN(TaxonRelationshipType type, boolean inverse) {
+        return inverse && type.getUuid().equals(TaxonRelationshipType.uuidProParteMisappliedNameFor);
+    }
+
     private boolean isNotBlank(String str) {
         return StringUtils.isNotBlank(str);
     }
index d42e48654380b325b0b8cf97578315efc95f4513..eca05733c5c823d7adffff511d417eb76cabcd2e 100644 (file)
@@ -148,13 +148,14 @@ public class TaxonRelationshipFormatterTest extends TermTestBase{
 
         inverse = true;
         TaxonRelationshipType type = TaxonRelationshipType.PRO_PARTE_MISAPPLIED_NAME_FOR();
-        String inverseSymbol = type.getInverseSymbol();
+        String manInverseSymbol = TaxonRelationshipType.MISAPPLIED_NAME_FOR().getInverseSymbol();
         String symbol = type.getSymbol();
         taxonRel.setType(type);
 
         List<TaggedText> tags = formatter.getTaggedText(taxonRel, inverse, languages);
         String str = TaggedCacheHelper.createString(tags);
-        Assert.assertEquals(inverseSymbol + " \"Abies alba\" sensu Macfarlane 1918, err. sec. Cheek 1919: 123", str);
+        //#10082
+        Assert.assertEquals("We split the inverse symbol here", manInverseSymbol + " \"Abies alba\" sensu Macfarlane 1918, p.p., err. sec. Cheek 1919: 123", str);
 
         //inverse
         tags = formatter.getTaggedText(taxonRel, !inverse, languages);