.
authorem.lee <em.lee@localhost>
Wed, 24 Feb 2010 09:41:10 +0000 (09:41 +0000)
committerem.lee <em.lee@localhost>
Wed, 24 Feb 2010 09:41:10 +0000 (09:41 +0000)
.gitattributes
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiTransformer.java [new file with mode: 0644]

index c15ae7f720d4c57fc8359bd25fcd48f6c5322463..9a1b5434d4e8b92dc083a5e1b5985fe37ade4342 100644 (file)
@@ -1340,6 +1340,7 @@ cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiNoteExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiRelTaxonExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiSourceExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiTaxonExport.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiTransformer.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pilotOutputHtml/PilotOutputDescriptionExporter.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pilotOutputHtml/PilotOutputDocumentBuilder.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pilotOutputHtml/PilotOutputExportConfigurator.java -text
diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiTransformer.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiTransformer.java
new file mode 100644 (file)
index 0000000..036a643
--- /dev/null
@@ -0,0 +1,275 @@
+// $Id$\r
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.io.pesi.out;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
+import eu.etaxonomy.cdm.model.reference.ISectionBase;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @author e.-m.lee\r
+ * @date 16.02.2010\r
+ *\r
+ */\r
+public final class PesiTransformer {\r
+       private static final Logger logger = Logger.getLogger(PesiTransformer.class);\r
+\r
+       // References\r
+       public static int REF_ARTICLE_IN_PERIODICAL = 1;\r
+       public static int REF_PART_OF_OTHER = 2;\r
+       public static int REF_BOOK = 3;\r
+       public static int REF_DATABASE = 4;\r
+       public static int REF_INFORMAL = 5;\r
+       public static int REF_NOT_APPLICABLE = 6;\r
+       public static int REF_WEBSITE = 7;\r
+       public static int REF_PUBLISHED = 8;\r
+       public static int REF_JOURNAL = 9;\r
+       public static int REF_UNRESOLVED = 10;\r
+       public static int REF_PUBLICATION = 11;\r
+\r
+       public static String REF_STR_ARTICLE_IN_PERIODICAL = "Article in periodical";\r
+       public static String REF_STR_PART_OF_OTHER = "Part of other";\r
+       public static String REF_STR_BOOK = "Book";\r
+       public static String REF_STR_DATABASE = "Database";\r
+       public static String REF_STR_INFORMAL = "Informal";\r
+       public static String REF_STR_NOT_APPLICABLE = "Not applicable";\r
+       public static String REF_STR_WEBSITE = "Website";\r
+       public static String REF_STR_PUBLISHED = "Published";\r
+       public static String REF_STR_JOURNAL = "Journal";\r
+       public static String REF_STR_UNRESOLVED = "Unresolved";\r
+       public static String REF_STR_PUBLICATION = "Publication";\r
+       \r
+       // Ranks\r
+//     public static int RANK_KINGDOM = 10; x\r
+//     public static int RANK_SUBKINGDOM = 20;\r
+//     public static int RANK_SUPERPHYLUM = 23;\r
+//     public static int RANK_PHYLUM = 30;\r
+//     public static int RANK_SUBPHYLUM = 40;\r
+//     public static int RANK_INFRAPHYLUM = 45;\r
+//     public static int RANK_SUPERCLASS = 50;\r
+//     public static int RANK_CLASS = 60;\r
+//     public static int RANK_SUBCLASS = 70;\r
+//     public static int RANK_INFRACLASS = 80;\r
+//     public static int RANK_SUPERORDER = 90;\r
+//     public static int RANK_ORDER = 100;\r
+//     public static int RANK_SUBORDER = 110;\r
+//     public static int RANK_INFRAORDER = 120;\r
+//     public static int RANK_SECTION = 121;\r
+//     public static int RANK_SUBSECTION = 122;\r
+//     public static int RANK_SUPERFAMILY = 130;\r
+//     public static int RANK_FAMILY = 140;\r
+//     public static int RANK_SUBFAMILY = 150;\r
+//     public static int RANK_TRIBE = 160;\r
+//     public static int RANK_SUBTRIBE = 170;\r
+//     public static int RANK_GENUS = 180;\r
+//     public static int RANK_SUBGENUS = 190;\r
+//     public static int RANK_SPECIES = 220;\r
+//     public static int RANK_SUBSPECIES = 230;\r
+//     public static int RANK_NATIO = 235;\r
+//     public static int RANK_VARIETY = 240;\r
+//     public static int RANK_SUBVARIETY = 250;\r
+//     public static int RANK_FORMA = 260;\r
+\r
+       // Kingdoms\r
+       public static int KINGDOM_NULL = 0;\r
+       public static int KINGDOM_ANIMALIA = 2;\r
+       public static int KINGDOM_PLANTAE = 3;\r
+       public static int KINGDOM_FUNGI = 4;\r
+       public static int KINGDOM_PROTOCTISTA = 5;\r
+       public static int KINGDOM_MONERA = 6;\r
+\r
+       // RelTaxonQualifier\r
+       public static int IS_BASIONYM_FOR = 1;\r
+       public static int IS_LATER_HOMONYM_OF = 2;\r
+       public static int IS_REPLACED_SYNONYM_FOR = 3;\r
+       public static int IS_VALIDATION_OF = 4;\r
+       public static int IS_LATER_VALIDATION_OF = 5;\r
+       public static int IS_TYPE_OF = 6;\r
+       public static int IS_CONSERVED_TYPE_OF = 7;\r
+       public static int IS_REJECTED_TYPE_OF = 8;\r
+       public static int IS_FIRST_PARENT_OF = 9;\r
+       public static int IS_SECOND_PARENT_OF = 10;\r
+       public static int IS_FEMALE_PARENT_OF = 11;\r
+       public static int IS_MALE_PARENT_OF = 12;\r
+       public static int IS_CONSERVED_AGAINST = 13;\r
+       public static int IS_REJECTED_IN_FAVOUR_OF = 14;\r
+       public static int IS_TREATED_AS_LATER_HOMONYM_OF = 15;\r
+       public static int IS_ORTHOGRAPHIC_VARIANT_OF = 16;\r
+       public static int IS_ALTERNATIVE_NAME_FOR = 17;\r
+       public static int HAS_SAME_TYPE_AS = 18;\r
+       public static int IS_LECTOTYPE_OF = 61;\r
+       public static int TYPE_NOT_DESIGNATED = 62;\r
+       public static int IS_TAXONOMICALLY_INCLUDED_IN = 101;\r
+       public static int IS_SYNONYM_OF = 102;\r
+       public static int IS_MISAPPLIED_NAME_FOR = 103;\r
+       public static int IS_PRO_PARTE_SYNONYM_OF = 104;\r
+       public static int IS_PARTIAL_SYNONYM_OF = 105;\r
+       public static int IS_HETEROTYPIC_SYNONYM_OF = 106;\r
+       public static int IS_HOMOTYPIC_SYNONYM_OF = 107;\r
+       public static int IS_PRO_PARTE_AND_HOMOTYPIC_SYNONYM_OF = 201;\r
+       public static int IS_PRO_PARTE_AND_HETEROTYPIC_SYNONYM_OF = 202;\r
+       public static int IS_PARTIAL_AND_HOMOTYPIC_SYNONYM_OF = 203;\r
+       public static int IS_PARTIAL_AND_HETEROTYPIC_SYNONYM_OF = 204;\r
+\r
+       /**\r
+        * Returns the {@link SourceCategory SourceCategory} representation of the given {@link ReferenceType ReferenceType} in PESI.\r
+        * @param reference The {@link ReferenceBase ReferenceBase}.\r
+        * @return The {@link SourceCategory SourceCategory} representation in PESI.\r
+        */\r
+       public static Integer reference2SourceCategoryFK(ReferenceBase<?> reference) {\r
+               if (reference == null){\r
+                       return null;\r
+               } else if (reference.getType().equals(ReferenceType.Article)) {\r
+                       return REF_ARTICLE_IN_PERIODICAL;\r
+               } else if (reference instanceof ISectionBase) {\r
+                       return REF_PART_OF_OTHER;\r
+               } else if (reference.getType().equals(ReferenceType.Book)) {\r
+                       return REF_BOOK;\r
+               } else if (reference.getType().equals(ReferenceType.Database)) {\r
+                       return REF_DATABASE;\r
+               } else if (reference.getType().equals(ReferenceType.WebPage)) {\r
+                       return REF_WEBSITE;\r
+               } else if (reference.getType().equals(ReferenceType.CdDvd)) {\r
+                       return REF_NOT_APPLICABLE;\r
+               } else if (reference.getType().equals(ReferenceType.Journal)) {\r
+                       return REF_JOURNAL;\r
+               } else if (reference.getType().equals(ReferenceType.Generic)) {\r
+                       return REF_UNRESOLVED;\r
+               } else if (reference.getType().equals(ReferenceType.PrintSeries)) {\r
+                       return REF_PUBLISHED;\r
+               } else if (reference.getType().equals(ReferenceType.Proceedings)) {\r
+                       return REF_PUBLISHED;\r
+               } else if (reference.getType().equals(ReferenceType.Patent)) {\r
+                       return REF_NOT_APPLICABLE;\r
+               } else if (reference.getType().equals(ReferenceType.PersonalCommunication)) {\r
+                       return REF_INFORMAL;\r
+               } else if (reference.getType().equals(ReferenceType.Report)) {\r
+                       return REF_NOT_APPLICABLE;\r
+               } else if (reference.getType().equals(ReferenceType.Thesis)) {\r
+                       return REF_NOT_APPLICABLE;\r
+               } else {\r
+                       //TODO Figure out a way to handle this gracefully.\r
+                       logger.warn("Reference type not yet supported in PESI: "+ reference.getClass().getSimpleName());\r
+                       return null;\r
+               }\r
+       }\r
+       \r
+       /**\r
+        * Returns the {@link SourceCategoryCache SourceCategoryCache}.\r
+        * @param reference The {@link ReferenceBase ReferenceBase}.\r
+        * @return The {@link SourceCategoryCache SourceCategoryCache}.\r
+        */\r
+       public static String getSourceCategoryCache(ReferenceBase<?> reference) {\r
+               if (reference == null){\r
+                       return null;\r
+               } else if (reference.getType().equals(ReferenceType.Article)) {\r
+                       return REF_STR_ARTICLE_IN_PERIODICAL;\r
+               } else if (reference instanceof ISectionBase) {\r
+                       return REF_STR_PART_OF_OTHER;\r
+               } else if (reference.getType().equals(ReferenceType.Book)) {\r
+                       return REF_STR_BOOK;\r
+               } else if (reference.getType().equals(ReferenceType.Database)) {\r
+                       return REF_STR_DATABASE;\r
+               } else if (reference.getType().equals(ReferenceType.WebPage)) {\r
+                       return REF_STR_WEBSITE;\r
+               } else if (reference.getType().equals(ReferenceType.CdDvd)) {\r
+                       return REF_STR_NOT_APPLICABLE;\r
+               } else if (reference.getType().equals(ReferenceType.Journal)) {\r
+                       return REF_STR_JOURNAL;\r
+               } else if (reference.getType().equals(ReferenceType.Generic)) {\r
+                       return REF_STR_UNRESOLVED;\r
+               } else if (reference.getType().equals(ReferenceType.PrintSeries)) {\r
+                       return REF_STR_PUBLISHED;\r
+               } else if (reference.getType().equals(ReferenceType.Proceedings)) {\r
+                       return REF_STR_PUBLISHED;\r
+               } else if (reference.getType().equals(ReferenceType.Patent)) {\r
+                       return REF_STR_NOT_APPLICABLE;\r
+               } else if (reference.getType().equals(ReferenceType.PersonalCommunication)) {\r
+                       return REF_STR_INFORMAL;\r
+               } else if (reference.getType().equals(ReferenceType.Report)) {\r
+                       return REF_STR_NOT_APPLICABLE;\r
+               } else if (reference.getType().equals(ReferenceType.Thesis)) {\r
+                       return REF_STR_NOT_APPLICABLE;\r
+               } else {\r
+                       //TODO Figure out a way to handle this gracefully.\r
+                       logger.warn("Reference type not yet supported in PESI: "+ reference.getClass().getSimpleName());\r
+                       return null;\r
+               }\r
+       }\r
+       \r
+//     public static Integer rank2RankId(Rank rank) {\r
+//             if (rank == null){\r
+//                     return null;\r
+//             }\r
+//             else if (rank.equals(Rank.KINGDOM())) {\r
+//                     return RANK_KINGDOM;\r
+//             } else if (rank.equals(Rank.SUBKINGDOM())) {\r
+//                     return RANK_SUBKINGDOM;\r
+//             } else if (rank.equals(Rank.SUPERPHYLUM())) {\r
+//                     return RANK_SUPERPHYLUM;\r
+//             } else if (rank.equals(Rank.PHYLUM())) {\r
+//                     return RANK_PHYLUM;\r
+//             } else if (rank.equals(Rank.SUBPHYLUM())) {\r
+//                     return RANK_SUBPHYLUM;\r
+//             } else if (rank.equals(Rank.INFRAPHYLUM())) {\r
+//                     return RANK_INFRAPHYLUM;\r
+//             } else if (rank.equals(Rank.SUPERCLASS())) {\r
+//                     return RANK_SUPERCLASS;\r
+//             } else if (rank.equals(Rank.CLASS())) {\r
+//                     return RANK_CLASS;\r
+//             } else if (rank.equals(Rank.SUBCLASS())) {\r
+//                     return RANK_SUBCLASS;\r
+//             } else if (rank.equals(Rank.INFRACLASS())) {\r
+//                     return RANK_INFRACLASS;\r
+//             } else if (rank.equals(Rank.SUPERORDER())) {\r
+//                     return RANK_SUPERORDER;\r
+//             } else if (rank.equals(Rank.ORDER())) {\r
+//                     return RANK_ORDER;\r
+//             } else if (rank.equals(Rank.SUBORDER())) {\r
+//                     return RANK_SUBORDER;\r
+//             } else if (rank.equals(Rank.INFRAORDER())) {\r
+//                     return RANK_INFRAORDER;\r
+//             } else if (rank.equals(Rank.secti)) {\r
+//                     return RANK_;\r
+//             }\r
+//             \r
+//             public static int RANK_SECTION = 121;\r
+//             public static int RANK_SUBSECTION = 122;\r
+//             public static int RANK_SUPERFAMILY = 130;\r
+//             public static int RANK_FAMILY = 140;\r
+//             public static int RANK_SUBFAMILY = 150;\r
+//             public static int RANK_TRIBE = 160;\r
+//             public static int RANK_SUBTRIBE = 170;\r
+//             public static int RANK_GENUS = 180;\r
+//             public static int RANK_SUBGENUS = 190;\r
+//             public static int RANK_SPECIES = 220;\r
+//             public static int RANK_SUBSPECIES = 230;\r
+//             public static int RANK_NATIO = 235;\r
+//             public static int RANK_VARIETY = 240;\r
+//             public static int RANK_SUBVARIETY = 250;\r
+//             public static int RANK_FORMA = 260;\r
+//     }\r
+       \r
+       public static Integer taxRelation2RelTaxonQualifierFk (RelationshipBase<?,?,?> relationship){\r
+//             if (relationship == null) {\r
+//                     return null;\r
+//             } else {\r
+//                     if ((relationship.getType()).equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())) {\r
+//                             return TAX_REL_IS_INCLUDED_IN;\r
+//                     }\r
+//             }\r
+               return null;\r
+       }\r
+}\r