all nom. status should parse correctly now (#2355)
authorAndreas Müller <a.mueller@bgbm.org>
Mon, 9 May 2011 22:35:26 +0000 (22:35 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Mon, 9 May 2011 22:35:26 +0000 (22:35 +0000)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/strategy/parser/NonViralNameParserImplRegExBase.java
cdmlib-model/src/test/java/eu/etaxonomy/cdm/strategy/parser/NonViralNameParserImplTest.java

index e7286c27bbaaedd12d60481dc61ad2f1612aae3f..637024f8e29e8c72ecad76964b0ff2332c0ad561 100644 (file)
@@ -213,10 +213,13 @@ public abstract class NonViralNameParserImplRegExBase  {
     protected static Pattern referencePattern = Pattern.compile(pReference);\r
     protected static Pattern referenceSineDetailPattern = Pattern.compile(pReferenceSineDetail);\r
     \r
-    protected static String pNomStatusNom = "nom\\." + fWs + "(superfl\\.|nud\\.|illeg\\.|inval\\.|cons\\.|alternativ\\.|subnud.|"+\r
-                                       "rej\\.|rej\\."+ fWs + "prop\\.|provis\\.)";\r
+    protected static String pNomStatusNom = "nom\\." + fWs + "(ambig\\.|dub\\.|confus\\.|superfl\\.|nud\\.|illeg\\.|inval\\.|cons\\.(\\s?prop\\.)?|altern(ativ)?\\.|subnud.|nov\\.|legit\\.|sanct\\.|valid|"+\r
+                                       "rej\\.("+ fWs + "prop\\.)?|provis\\.|utique"+fWs+"rej\\.("+fWs+"prop\\.)?|orth\\."+fWs+"cons\\.("+fWs+"prop\\.)?)";\r
     protected static String pNomStatusOrthVar = "orth\\." + fWs + "var\\.";\r
-    protected static String pNomStatus = "(" + pNomStatusNom + "|" + pNomStatusOrthVar +  ")";\r
+    protected static String pNomStatusComb = "comb\\." + fWs + "(inval\\.|illeg\\.)";\r
+    protected static String pNomStatusOpus = "opus\\."+fWs+"utique"+fWs+"oppr\\.";\r
+    \r
+    protected static String pNomStatus = "(" + pNomStatusNom + "|" + pNomStatusOrthVar + "|" +pNomStatusComb + "|" + pNomStatusOpus + ")";\r
     protected static String pNomStatusPhrase1 = "," + fWs + pNomStatus;\r
     protected static String pNomStatusPhrase2 = "\\[" + fWs + pNomStatus + "\\]";\r
     \r
index 069bd253ddc83742da719fd59e2daf3546040ecd..dcde0966f4c60cc351bb2331a4ce7c604aafa9e4 100644 (file)
@@ -18,16 +18,12 @@ import static org.junit.Assert.assertTrue;
 import java.lang.reflect.InvocationTargetException;\r
 import java.lang.reflect.Method;\r
 import java.util.List;\r
-import java.util.Set;\r
-import java.util.SortedSet;\r
 import java.util.regex.Matcher;\r
 import java.util.regex.Pattern;\r
 \r
 import junit.framework.Assert;\r
 \r
 import org.apache.log4j.Logger;\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
 import org.junit.Before;\r
 import org.junit.BeforeClass;\r
 import org.junit.Test;\r
@@ -38,21 +34,18 @@ import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
 import eu.etaxonomy.cdm.model.name.BotanicalName;\r
 import eu.etaxonomy.cdm.model.name.HybridRelationship;\r
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
 import eu.etaxonomy.cdm.model.name.Rank;\r
 import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
-//import eu.etaxonomy.cdm.model.reference.Article;\r
-//import eu.etaxonomy.cdm.model.reference.Book;\r
-//import eu.etaxonomy.cdm.model.reference.BookSection;\r
 import eu.etaxonomy.cdm.model.reference.IArticle;\r
 import eu.etaxonomy.cdm.model.reference.IBook;\r
 import eu.etaxonomy.cdm.model.reference.IBookSection;\r
 import eu.etaxonomy.cdm.model.reference.IJournal;\r
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
 import eu.etaxonomy.cdm.model.reference.IVolumeReference;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
-//import eu.etaxonomy.cdm.model.reference.Journal;\r
 import eu.etaxonomy.cdm.model.reference.Reference;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
 /**\r
  * @author a.mueller\r
  *\r
@@ -450,6 +443,196 @@ public class NonViralNameParserImplTest {
                assertEquals(problemString, nameProblem.getTitleCache());\r
        }\r
        \r
+       \r
+       /**\r
+        * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseReferencedName(NonViralName, java.lang.String, eu.etaxonomy.cdm.model.name.Rank, boolean)(, )}.\r
+        */\r
+       @Test\r
+       public final void testParseNomStatus() {\r
+               //nom. ambig.\r
+               String strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. ambig.";\r
+               NonViralName<?> nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.AMBIGUOUS(), nameTestStatus.getStatus().iterator().next().getType());\r
+               \r
+               //nom. dub.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. dub.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.DOUBTFUL(), nameTestStatus.getStatus().iterator().next().getType());\r
+               \r
+               //nom. confus.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. confus.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.CONFUSUM(), nameTestStatus.getStatus().iterator().next().getType());\r
+               \r
+               //nom. illeg.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. illeg.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.ILLEGITIMATE(), nameTestStatus.getStatus().iterator().next().getType());\r
+               \r
+               //nom. superfl.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. superfl.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.SUPERFLUOUS(), nameTestStatus.getStatus().iterator().next().getType());\r
+               \r
+               //nom. rej.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. rej.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.REJECTED(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. utique rej.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. utique rej.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.UTIQUE_REJECTED(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. cons. prop.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. cons. prop.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.CONSERVED_PROP(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. orth. cons. prop.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. orth. cons. prop.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.ORTHOGRAPHY_CONSERVED_PROP(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. legit.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. legit.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.LEGITIMATE(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. altern.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. altern.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.ALTERNATIVE(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. alternativ.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. alternativ.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.ALTERNATIVE(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. nov.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. nov.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.NOVUM(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. utique rej. prop.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. utique rej. prop.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.UTIQUE_REJECTED_PROP(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. orth. cons.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. orth. cons.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.ORTHOGRAPHY_CONSERVED(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. rej. prop.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. rej. prop.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.REJECTED_PROP(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. cons.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. cons.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.CONSERVED(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. sanct.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. sanct.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.SANCTIONED(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. inval.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. inval.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.INVALID(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. nud.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. nud.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.NUDUM(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //comb. inval.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, comb. inval.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.COMBINATION_INVALID(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //comb. illeg.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, comb. illeg.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.COMBINATION_ILLEGITIMATE(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. provis.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. provis.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.PROVISIONAL(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. valid\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. valid";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.VALID(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //nom. subnud.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, nom. subnud.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.SUBNUDUM(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+               //opus. utique oppr.\r
+               strTestStatus = "Abies alba Mill., Sp. Pl. 4: 455. 1987, opus. utique oppr.";\r
+               nameTestStatus = parser.parseReferencedName(strTestStatus, null, Rank.SPECIES());\r
+               assertFullRefStandard(nameTestStatus);\r
+               assertTrue(nameTestStatus.getStatus().size()== 1);\r
+               assertEquals( NomenclaturalStatusType.OPUS_UTIQUE_OPPR(), nameTestStatus.getStatus().iterator().next().getType());\r
+\r
+       }\r
+       \r
        /**\r
         * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseReferencedName(NonViralName, java.lang.String, eu.etaxonomy.cdm.model.name.Rank, boolean)(, )}.\r
         */\r