ref #6026 improving specimenType parsers: better recognition of 'Coll. something...
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Thu, 15 Sep 2016 15:51:05 +0000 (17:51 +0200)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Thu, 15 Sep 2016 15:51:05 +0000 (17:51 +0200)
app-import/src/main/java/eu/etaxonomy/cdm/io/iapt/IAPTExcelImport.java
app-import/src/test/java/eu/etaxonomy/cdm/io/iapt/IAPTImportTest.java

index 3e32113a84db7b45e2a2a120d5a563bf07e8ba5e..80d98addc6fc13bb49402e3778e91116ea7659ca 100644 (file)
@@ -95,7 +95,7 @@ public class IAPTExcelImport<CONFIG extends IAPTImportConfigurator> extends Simp
             Pattern.compile("^(?<monthName>[IVX]{1,2})([\\.\\-/])(?<year>(?:1[7,8,9])?[0-9]{2})$"), // partial date like VI-1969
             Pattern.compile("^(?<day>[0-9]{1,2})(?:[\\./]|th|rd|st)?\\s(?<monthName>\\p{L}+\\.?),?\\s?(?<year>(?:1[7,8,9])?[0-9]{2})$"), // full date like 12. April 1969 or april 1999 or 22 Dec.1999
         };
-    private static final Pattern typeSpecimenSplitPattern =  Pattern.compile("^(?:\"*[Tt]ype: (?<fieldUnit>.*?))(?:[Hh]olotype:(?<holotype>.*?)\\.?)?(?:[Ii]sotype[^:]*:(?<isotype>.*)\\.?)?\\.?$");
+    private static final Pattern typeSpecimenSplitPattern =  Pattern.compile("^(?:\"*[Tt]ype: (?<fieldUnit>.*?))(?:[Hh]olotype:(?<holotype>.*?)\\.?)?(?:[Ii]sotype.*?[:\\(](?<isotype>.*)\\.?)?\\.?$");
 
     private static final Pattern typeNameBasionymPattern =  Pattern.compile("\\([Bb]asionym\\s?\\:\\s?(?<basionymName>[^\\)]*).*$");
     private static final Pattern typeNameNotePattern =  Pattern.compile("\\[([^\\[]*)"); // matches the inner of '[...]'
@@ -111,8 +111,8 @@ public class IAPTExcelImport<CONFIG extends IAPTImportConfigurator> extends Simp
     private static final Pattern[] specimenTypePatterns = new Pattern[]{
             Pattern.compile("^(?<colCode>[A-Z]+|CPC Micropaleontology Lab\\.?)\\s+(?:\\((?<institute>.*[^\\)])\\))(?<accNumber>.*)?$"), // like: GAUF (Gansu Agricultural University) No. 1207-1222
             Pattern.compile("^(?<colCode>[A-Z]+|CPC Micropaleontology Lab\\.?)\\s+(?:Coll\\.\\s(?<subCollection>[^\\.,;]*)(.))(?<accNumber>.*)?$"), // like KASSEL Coll. Krasske, Praep. DII 78
-            Pattern.compile("^(?<institute>Coll\\.\\s.*?)\\s+(?<accNumber>(Praep|slide).*)?$"), // like Coll. Lange-Bertalot, Bot. Inst., Univ. Frankfurt/Main, Germany Praep. Neukaledonien OTL 62
-           //  Pattern.compile("^.*(?<accNumber>Praep.*)$"), // like Coll. Lange-Bertalot, Bot. Inst., Univ. Frankfurt/Main, Germany Praep. Neukaledonien OTL 62
+            Pattern.compile("^(?:in\\s)?(?<institute>[Cc]oll\\.\\s.*?)(?:\\s+(?<accNumber>(Praep\\.|slide|No\\.|Inv\\. Nr\\.|Nr\\.).*))?$"), // like Coll. Lange-Bertalot, Bot. Inst., Univ. Frankfurt/Main, Germany Praep. Neukaledonien OTL 62
+            Pattern.compile("^(?<institute>Inst\\.\\s.*?)\\s+(?<accNumber>N\\s.*)?$"), // like Inst. Geological Sciences, Acad. Sci. Belarus, Minsk N 212 A
             Pattern.compile("^(?<colCode>[A-Z]+)(?:\\s+(?<accNumber>.*))?$"), // identifies the Collection code and takes the rest as accessionNumber if any
     };
 
index 2bdc5f0eb313bb36079a8eae18f1e8a792a51fc7..2089bf921643c74639daa1499e7f92b5e9b38cb6 100644 (file)
@@ -65,6 +65,13 @@ public class IAPTImportTest {
                 "KASSEL Coll. Krasske, Praep. DII 78",
                 "Coll. Lange-Bertalot, Botanisches Institut, Frankfurt am Main slide Eh-B 91",
                 "Coll. Østrup, Botan. Museum Copenhagen, Dänemark Praep. 3944",
+                "Coll. L.P.B.V. No. 0736",
+                "Coll. Ruhr University-Bochum, Inst. of Geology No. 11532",
+                "Coll. Paläontol. Inst. Univ. Bucuresti. Nr. 2515",
+                "Coll. Dr.h.c. R. Mundlos (Bad Friedrichshall, später Stuttgart) Inv. Nr. P 1396",
+                "Inst. Geological Sciences, Acad. Sci. Belarus, Minsk N 212 A",
+                "Coll. Lange-Bertalot, Bot. Inst., Univ. Frankfurt/Main, Germany",
+                "in coll. H. F. Paulus (Wien)",
 
 
         };