latest changes for PESI description export and transformer
[cdmlib-apps.git] / cdm-pesi / src / main / java / eu / etaxonomy / cdm / io / pesi / out / PesiDescriptionExport.java
index 6d7473edbc99ff3900d9398b52e34c6a5b0ef0a9..c31063d7be069923acc033df2031c19d89d1b48a 100644 (file)
@@ -21,6 +21,7 @@ import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;\r
 import org.springframework.transaction.TransactionStatus;\r
 \r
+import eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer;\r
 import eu.etaxonomy.cdm.io.common.DbExportStateBase;\r
 import eu.etaxonomy.cdm.io.common.Source;\r
 import eu.etaxonomy.cdm.io.common.mapping.UndefinedTransformerMethodException;\r
@@ -48,6 +49,7 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TaxonInteraction;\r
 import eu.etaxonomy.cdm.model.description.TextData;\r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.cdm.model.location.TdwgArea;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 \r
@@ -227,6 +229,32 @@ public class PesiDescriptionExport extends PesiExportBase {
 \r
        private boolean isPesiDistribution(PesiExportState state, Distribution distribution) {\r
                Integer key;\r
+               //area filter\r
+               NamedArea area = distribution.getArea();\r
+               if (area == null){\r
+                       logger.warn("Area is null for distribution " +  distribution.getUuid());\r
+                       return false;\r
+               }else if (area.getUuid().equals(BerlinModelTransformer.euroMedUuid)){\r
+                       //E+M area only holds endemic status information and therefore is not exported to PESI\r
+                       return false;\r
+               }else if (area.equals(TdwgArea.getAreaByTdwgAbbreviation("1"))){\r
+                       //Europe area never holds status information (may probably deleted in E+M)\r
+                       return false;\r
+               }else if (area.equals(TdwgArea.getAreaByTdwgAbbreviation("21"))){\r
+                       //Macaronesia records should not be exported to PESI\r
+                       return false;\r
+               } else\r
+                       try {\r
+                               if (state.getTransformer().getKeyByNamedArea(area) == null){\r
+                                       logger.warn("Area not available in PESI transformer " +  area.getTitleCache() + ", " + area.getRepresentation(Language.ENGLISH()).getAbbreviatedLabel());\r
+                                       return false;\r
+                               }\r
+                       } catch (UndefinedTransformerMethodException e1) {\r
+                               logger.warn("Area not available in PESI transformer " +  area.getTitleCache());\r
+                               return false;\r
+                       }\r
+               \r
+               //status\r
                PresenceAbsenceTermBase<?> status = distribution.getStatus();\r
                if (status == null){\r
                        logger.warn("No status for distribution: " +  distribution.getUuid());\r
@@ -237,6 +265,7 @@ public class PesiDescriptionExport extends PesiExportBase {
                        if (key != null){\r
                                return true;\r
                        }else{\r
+                               logger.warn("PresenceAbsenceTerm " + status.getTitleCache() + "not handled in transformer");\r
                                return false;\r
                        }\r
                } catch (UndefinedTransformerMethodException e) {\r