some further improvements to DwcA-O
authorAndreas Müller <a.mueller@bgbm.org>
Wed, 27 Apr 2011 14:45:40 +0000 (14:45 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Wed, 27 Apr 2011 14:45:40 +0000 (14:45 +0000)
14 files changed:
.gitattributes
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaDescriptionExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaDistributionExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaExportBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaImageExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaMetaDataExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaMetaRecord.java [new file with mode: 0644]
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaReferenceExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaResourceRelationExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaTaxExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaTaxExportConfigurator.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaTaxExportState.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaTypesExport.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaVernacularExport.java

index 703e226b8ead3ac71e0f3fdd0592a2ca8e954c36..00fc3e7349617509c6d5557025e87ae9cbcd4654 100644 (file)
@@ -259,6 +259,7 @@ cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaImageExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaImageRecord.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaMetaDataExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaMetaDataRecord.java -text
+cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaMetaRecord.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaRecordBase.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaReferenceExport.java -text
 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaReferenceRecord.java -text
index ca2d4cf598ef754f29c27d6a0fb680bf22adbb13..6b5e3a8ea5157e31674d9c9289e99bd60e2125d5 100644 (file)
@@ -9,11 +9,8 @@
 \r
 package eu.etaxonomy.cdm.io.dwca.out;\r
 \r
-import java.io.File;\r
 import java.io.FileNotFoundException;\r
-import java.io.FileOutputStream;\r
 import java.io.IOException;\r
-import java.io.OutputStreamWriter;\r
 import java.io.PrintWriter;\r
 import java.io.UnsupportedEncodingException;\r
 import java.util.ArrayList;\r
@@ -41,6 +38,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 @Component\r
 public class DwcaDescriptionExport extends DwcaExportBase {\r
        private static final Logger logger = Logger.getLogger(DwcaDescriptionExport.class);\r
+       \r
+       private static final String fileName = "description.txt";\r
 \r
        /**\r
         * Constructor\r
@@ -61,20 +60,11 @@ public class DwcaDescriptionExport extends DwcaExportBase {
        @Override\r
        protected boolean doInvoke(DwcaTaxExportState state){\r
                DwcaTaxExportConfigurator config = state.getConfig();\r
-               String fileName = config.getDestinationNameString();\r
                TransactionStatus txStatus = startTransaction(true);\r
 \r
                try {\r
+                       PrintWriter writer = createPrintWriter(fileName, config);\r
                        \r
-                       final String coreTaxFileName = "description.txt";\r
-                       fileName = fileName + File.separatorChar + coreTaxFileName;\r
-                       File f = new File(fileName);\r
-                       if (!f.exists()){\r
-                               f.createNewFile();\r
-                       }\r
-                       FileOutputStream fos = new FileOutputStream(f);\r
-                       PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos, "UTF8"), true);\r
-\r
                        List<TaxonNode> allNodes =  getAllNodes(null);\r
                        for (TaxonNode node : allNodes){\r
                                Taxon taxon = CdmBase.deproxy(node.getTaxon(), Taxon.class);\r
index 85d6801427d431a833af6b21963904048ce4b175..d3ecf94925e0f57cf43626d550ca708f23ac3396 100644 (file)
@@ -9,11 +9,8 @@
 \r
 package eu.etaxonomy.cdm.io.dwca.out;\r
 \r
-import java.io.File;\r
 import java.io.FileNotFoundException;\r
-import java.io.FileOutputStream;\r
 import java.io.IOException;\r
-import java.io.OutputStreamWriter;\r
 import java.io.PrintWriter;\r
 import java.io.UnsupportedEncodingException;\r
 import java.util.List;\r
@@ -39,6 +36,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 public class DwcaDistributionExport extends DwcaExportBase {\r
        private static final Logger logger = Logger.getLogger(DwcaDistributionExport.class);\r
 \r
+       private static final String fileName = "distribution.txt";\r
+\r
        /**\r
         * Constructor\r
         */\r
@@ -58,23 +57,10 @@ public class DwcaDistributionExport extends DwcaExportBase {
        @Override\r
        protected boolean doInvoke(DwcaTaxExportState state){\r
                DwcaTaxExportConfigurator config = state.getConfig();\r
-               String dbname = config.getSource() != null ? config.getSource().getName() : "unknown";\r
-       String fileName = config.getDestinationNameString();\r
-               logger.info("Serializing DB " + dbname + " to file " + fileName);\r
                TransactionStatus txStatus = startTransaction(true);\r
 \r
                try {\r
-                       \r
-                       final String coreTaxFileName = "distribution.txt";\r
-                       fileName = fileName + File.separatorChar + coreTaxFileName;\r
-                       File f = new File(fileName);\r
-                       if (!f.exists()){\r
-                               f.createNewFile();\r
-                       }\r
-                       FileOutputStream fos = new FileOutputStream(f);\r
-                       PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos, "UTF8"), true);\r
-\r
-                       \r
+                       PrintWriter writer = createPrintWriter(fileName, config);\r
                        \r
                        List<TaxonNode> allNodes =  getAllNodes(null);\r
                        for (TaxonNode node : allNodes){\r
index 9aedfb829b1b77aed61c661bb1e947e9008aedcc..0c5f51d5156931d35bbbc71f8d33655b33482644 100644 (file)
@@ -8,6 +8,13 @@
 */\r
 package eu.etaxonomy.cdm.io.dwca.out;\r
 \r
+import java.io.File;\r
+import java.io.FileNotFoundException;\r
+import java.io.FileOutputStream;\r
+import java.io.IOException;\r
+import java.io.OutputStreamWriter;\r
+import java.io.PrintWriter;\r
+import java.io.UnsupportedEncodingException;\r
 import java.util.ArrayList;\r
 import java.util.HashSet;\r
 import java.util.List;\r
@@ -19,7 +26,6 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.io.common.CdmExportBase;\r
 import eu.etaxonomy.cdm.io.common.ICdmExport;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;\r
 import eu.etaxonomy.cdm.model.taxon.Classification;\r
@@ -34,7 +40,10 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
  */\r
 public abstract class DwcaExportBase extends CdmExportBase<DwcaTaxExportConfigurator, DwcaTaxExportState> implements ICdmExport<DwcaTaxExportConfigurator, DwcaTaxExportState>{\r
        private static final Logger logger = Logger.getLogger(DwcaExportBase.class);\r
-\r
+       \r
+       protected static final boolean IS_CORE = true;\r
+       \r
+       \r
        protected Set<Integer> existingRecordIds = new HashSet<Integer>();\r
        protected Set<UUID> existingRecordUuids = new HashSet<UUID>();\r
        \r
@@ -123,4 +132,38 @@ public abstract class DwcaExportBase extends CdmExportBase<DwcaTaxExportConfigur
        protected void addExistingRecordUuid(CdmBase cdmBase) {\r
                existingRecordUuids.add(cdmBase.getUuid());\r
        }\r
+       \r
+\r
+       /**\r
+        * @param config\r
+        * @return\r
+        * @throws IOException\r
+        * @throws FileNotFoundException\r
+        */\r
+       protected FileOutputStream createFileOutputStream(DwcaTaxExportConfigurator config, String thisFileName) throws IOException, FileNotFoundException {\r
+               String filePath = config.getDestinationNameString();\r
+               String fileName = filePath + File.separatorChar + thisFileName;\r
+               File f = new File(fileName);\r
+               if (!f.exists()){\r
+                       f.createNewFile();\r
+               }\r
+               FileOutputStream fos = new FileOutputStream(f);\r
+               return fos;\r
+       }\r
+       \r
+\r
+       /**\r
+        * @param coreTaxFileName\r
+        * @param config\r
+        * @return\r
+        * @throws IOException\r
+        * @throws FileNotFoundException\r
+        * @throws UnsupportedEncodingException\r
+        */\r
+       protected PrintWriter createPrintWriter(final String fileName, DwcaTaxExportConfigurator config) \r
+                                       throws IOException, FileNotFoundException, UnsupportedEncodingException {\r
+               FileOutputStream fos = createFileOutputStream(config, fileName);\r
+               PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos, "UTF8"), true);\r
+               return writer;\r
+       }\r
 }\r
index 421a4c529faa00ac4a38ebbb2d71b7c361b65dc5..7d30114c1f85e1ffcdd29066eccb0ab2ce06fb71 100644 (file)
@@ -9,11 +9,8 @@
 \r
 package eu.etaxonomy.cdm.io.dwca.out;\r
 \r
-import java.io.File;\r
 import java.io.FileNotFoundException;\r
-import java.io.FileOutputStream;\r
 import java.io.IOException;\r
-import java.io.OutputStreamWriter;\r
 import java.io.PrintWriter;\r
 import java.io.UnsupportedEncodingException;\r
 import java.util.List;\r
@@ -42,6 +39,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 public class DwcaImageExport extends DwcaExportBase {\r
        private static final Logger logger = Logger.getLogger(DwcaImageExport.class);\r
 \r
+       private static final String fileName = "images.txt";\r
+       \r
        /**\r
         * Constructor\r
         */\r
@@ -61,23 +60,10 @@ public class DwcaImageExport extends DwcaExportBase {
        @Override\r
        protected boolean doInvoke(DwcaTaxExportState state){\r
                DwcaTaxExportConfigurator config = state.getConfig();\r
-               String dbname = config.getSource() != null ? config.getSource().getName() : "unknown";\r
-       String fileName = config.getDestinationNameString();\r
-               logger.info("Serializing DB " + dbname + " to file " + fileName);\r
                TransactionStatus txStatus = startTransaction(true);\r
 \r
                try {\r
-                       \r
-                       final String coreTaxFileName = "images.txt";\r
-                       fileName = fileName + File.separatorChar + coreTaxFileName;\r
-                       File f = new File(fileName);\r
-                       if (!f.exists()){\r
-                               f.createNewFile();\r
-                       }\r
-                       FileOutputStream fos = new FileOutputStream(f);\r
-                       PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos, "UTF8"), true);\r
-\r
-                       \r
+                       PrintWriter writer = createPrintWriter(fileName, config);\r
                        \r
                        List<TaxonNode> allNodes =  getAllNodes(null);\r
                        for (TaxonNode node : allNodes){\r
index daa1134be4bb35af65ad23dc4398fbed164a98f2..a60ca3c01cd961fc820a86cf3c5f6bc94b03d044 100644 (file)
@@ -9,29 +9,19 @@
 \r
 package eu.etaxonomy.cdm.io.dwca.out;\r
 \r
-import java.io.File;\r
 import java.io.FileNotFoundException;\r
 import java.io.FileOutputStream;\r
 import java.io.IOException;\r
-import java.io.OutputStreamWriter;\r
-import java.io.PrintWriter;\r
-import java.io.UnsupportedEncodingException;\r
-import java.util.ArrayList;\r
 import java.util.List;\r
-import java.util.Set;\r
+\r
+import javax.xml.stream.XMLOutputFactory;\r
+import javax.xml.stream.XMLStreamException;\r
+import javax.xml.stream.XMLStreamWriter;\r
 \r
 import org.apache.log4j.Logger;\r
 import org.springframework.stereotype.Component;\r
-import org.springframework.transaction.TransactionStatus;\r
 \r
-import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.common.LanguageString;\r
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
-import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
-import eu.etaxonomy.cdm.model.description.TextData;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
+import eu.etaxonomy.cdm.io.dwca.out.DwcaMetaRecord.FieldEntry;\r
 \r
 /**\r
  * @author a.mueller\r
@@ -41,6 +31,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 public class DwcaMetaDataExport extends DwcaExportBase {\r
        private static final Logger logger = Logger.getLogger(DwcaMetaDataExport.class);\r
 \r
+       private static final String fileName = "meta.xml";\r
+       \r
        /**\r
         * Constructor\r
         */\r
@@ -57,11 +49,123 @@ public class DwcaMetaDataExport extends DwcaExportBase {
        @Override\r
        protected boolean doInvoke(DwcaTaxExportState state){\r
                DwcaTaxExportConfigurator config = state.getConfig();\r
-               String dbname = config.getSource() != null ? config.getSource().getName() : "unknown";\r
-       String fileName = config.getDestinationNameString();\r
-               logger.info("Serializing DB " + dbname + " to file " + fileName);\r
+//             String dbname = config.getSource() != null ? config.getSource().getName() : "unknown";\r
+       \r
+               XMLOutputFactory factory = XMLOutputFactory.newInstance(); \r
+               try {\r
+                       FileOutputStream fos = createFileOutputStream(config, fileName);\r
+                       XMLStreamWriter writer = factory.createXMLStreamWriter(fos);\r
+                       \r
+                       String rootNamespace = "http://rs.tdwg.org/dwc/text/";\r
+                       String rootName = "archive";\r
+                       \r
+                       List<DwcaMetaRecord> metaRecords = state.getMetaRecords();\r
+                       \r
+                       // create header \r
+                       writer.writeStartDocument(); \r
+                       writer.setDefaultNamespace(rootNamespace);\r
+                       \r
+                               // create root element \r
+                               writer.writeStartElement(rootName);\r
+                               writer.writeNamespace(null, rootNamespace);\r
+                               \r
+                               writer.writeNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");\r
+                               writer.writeAttribute("http://www.w3.org/2001/XMLSchema-instance", "schemaLocation", "http://rs.tdwg.org/dwc/text/ http://rs.tdwg.org/dwc/text/tdwg_dwc_text.xsd");\r
+                               \r
+                               for (DwcaMetaRecord metaRecord : metaRecords){\r
+                                       writeMetaRecord(writer, config, metaRecord);\r
+                               }\r
+                               writer.writeEndElement(); \r
+                       writer.writeEndDocument(); \r
+                       writer.flush();\r
+                       writer.close();\r
+               } catch (FileNotFoundException e) {\r
+                       throw new RuntimeException(e);\r
+               } catch (XMLStreamException e) {\r
+                       if (e.getNestedException() != null){\r
+                               throw new RuntimeException(e.getNestedException());\r
+                       }else{\r
+                               throw new RuntimeException(e);\r
+                       }\r
+               } catch (IOException e) {\r
+                       throw new RuntimeException(e);\r
+               } \r
+               \r
                return true;\r
        }\r
+\r
+\r
+       private void writeMetaRecord(XMLStreamWriter writer,\r
+                       DwcaTaxExportConfigurator config, DwcaMetaRecord metaRecord) throws XMLStreamException {\r
+               String encoding = config.getEncoding();\r
+               String linesTerminatedBy = config.getLinesTerminatedBy();\r
+               String fieldsEnclosedBy = config.getFieldsEnclosedBy();\r
+               String ignoreHeaderLines = config.isIgnoreHeaderLines()? "1":"0";\r
+               \r
+               // create core element \r
+               String elementName = metaRecord.isCore()? "core": "extension";\r
+               String rowType = metaRecord.getRowType();\r
+               writeElementStart(writer, elementName, encoding, linesTerminatedBy,     fieldsEnclosedBy, ignoreHeaderLines, rowType);\r
+                       String filename = metaRecord.getFileLocation();\r
+                       writeFiles(writer, filename );\r
+                       writeId(writer, metaRecord.isCore());\r
+                       \r
+                       List<FieldEntry> entryList = metaRecord.getEntries();\r
+                       for (FieldEntry fieldEntry : entryList){\r
+                               if (fieldEntry.index != 0){\r
+                                       writeFieldLine(writer, fieldEntry.index, fieldEntry.term);\r
+                               }\r
+                       }\r
+       \r
+               writer.writeEndElement();\r
+       }\r
+\r
+       private void writeFieldLine(XMLStreamWriter writer, int index, String term) throws XMLStreamException {\r
+               writer.writeStartElement("field");\r
+               writer.writeAttribute("index", String.valueOf(index));\r
+               writer.writeAttribute("term", term);\r
+               writer.writeEndElement();\r
+               \r
+       }\r
+\r
+       private void writeId(XMLStreamWriter writer, boolean isCore) throws XMLStreamException {\r
+               String strId = isCore? "id" : "coreid";\r
+               writer.writeStartElement(strId);\r
+               writer.writeAttribute("index", "0");\r
+               writer.writeEndElement();\r
+       }\r
+\r
+\r
+       private void writeFiles(XMLStreamWriter writer, String filename) throws XMLStreamException {\r
+               writer.writeStartElement("files");\r
+                       writer.writeStartElement("location");\r
+                       writer.writeCharacters(filename);\r
+                       writer.writeEndElement();\r
+               writer.writeEndElement();\r
+               \r
+       }\r
+\r
+       /**\r
+        * @param writer\r
+        * @param encoding\r
+        * @param linesTerminatedBy\r
+        * @param fieldsEnclosedBy\r
+        * @param ignoreHeaderLines\r
+        * @param rowType\r
+        * @param elementName\r
+        * @throws XMLStreamException\r
+        */\r
+       private void writeElementStart(XMLStreamWriter writer, String elementName, String encoding,\r
+                       String linesTerminatedBy, String fieldsEnclosedBy,\r
+                       String ignoreHeaderLines, String rowType)\r
+                       throws XMLStreamException {\r
+               writer.writeStartElement(elementName); \r
+               writer.writeAttribute( "encoding", encoding );\r
+               writer.writeAttribute( "linesTerminatedBy", linesTerminatedBy );\r
+               writer.writeAttribute( "fieldsEnclosedBy", fieldsEnclosedBy );\r
+               writer.writeAttribute("ignoreHeaderLines", ignoreHeaderLines);\r
+               writer.writeAttribute("rowType", rowType);\r
+       }\r
        \r
 \r
 \r
@@ -73,6 +177,9 @@ public class DwcaMetaDataExport extends DwcaExportBase {
        }\r
 \r
 \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common.IoStateBase)\r
+        */\r
        @Override\r
        protected boolean isIgnore(DwcaTaxExportState state) {\r
                return false;\r
diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaMetaRecord.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/dwca/out/DwcaMetaRecord.java
new file mode 100644 (file)
index 0000000..8c1e250
--- /dev/null
@@ -0,0 +1,99 @@
+// $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.dwca.out;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+/**\r
+ * @author a.mueller\r
+ * @date 20.04.2011\r
+ *\r
+ */\r
+public class DwcaMetaRecord  {\r
+       @SuppressWarnings("unused")\r
+       private static final Logger logger = Logger.getLogger(DwcaMetaRecord.class);\r
+       \r
+       private String fileLocation;\r
+       private String rowType;\r
+       \r
+       private boolean isCore;\r
+       private int currentIndex = 0;\r
+       boolean isId;\r
+       \r
+       private List<FieldEntry> fieldList = new ArrayList<DwcaMetaRecord.FieldEntry>();\r
+       \r
+       public DwcaMetaRecord(boolean isCore, String fileLocation, String rowType){\r
+               FieldEntry idEntry = new FieldEntry();\r
+               idEntry.index = currentIndex++;\r
+               idEntry.elementName = isCore ? "id" : "coreid";\r
+               fieldList.add(idEntry);\r
+               this.isCore = isCore;\r
+               this.fileLocation = fileLocation;\r
+               this.setRowType(rowType);\r
+       }\r
+\r
+\r
+       protected class FieldEntry{\r
+               int index;\r
+               String term = "";\r
+               String elementName = "field";\r
+       }\r
+       \r
+       public void addFieldEntry(String term){\r
+               FieldEntry fieldEntry = new FieldEntry();\r
+               fieldEntry.index = currentIndex++;\r
+               fieldEntry.term = term;\r
+               this.fieldList.add(fieldEntry);\r
+       }\r
+       \r
+       public List<FieldEntry> getEntries(){\r
+               return fieldList;\r
+       }\r
+       \r
+       \r
+       public String getFileLocation() {\r
+               return fileLocation;\r
+       }\r
+\r
+       public void setFileLocation(String fileLocation) {\r
+               this.fileLocation = fileLocation;\r
+       }\r
+\r
+       public boolean isCore() {\r
+               return isCore;\r
+       }\r
+\r
+       public void setCore(boolean isCore) {\r
+               this.isCore = isCore;\r
+       }\r
+\r
+       public void setRowType(String rowType) {\r
+               this.rowType = rowType;\r
+       }\r
+\r
+       public String getRowType() {\r
+               return rowType;\r
+       }\r
+\r
+       \r
+       /* (non-Javadoc)\r
+        * @see java.lang.Object#toString()\r
+        */\r
+       @Override\r
+       public String toString() {\r
+               return this.fileLocation;\r
+       }\r
+       \r
+       \r
+\r
+}\r
index 2e566a6231c41a946f50c30f53e257b0e8d41383..4ce520e1042672d9a25bc5b1fac1342945cda0e9 100644 (file)
@@ -9,16 +9,11 @@
 \r
 package eu.etaxonomy.cdm.io.dwca.out;\r
 \r
-import java.io.File;\r
 import java.io.FileNotFoundException;\r
-import java.io.FileOutputStream;\r
 import java.io.IOException;\r
-import java.io.OutputStreamWriter;\r
 import java.io.PrintWriter;\r
 import java.io.UnsupportedEncodingException;\r
-import java.util.HashSet;\r
 import java.util.List;\r
-import java.util.Set;\r
 \r
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.log4j.Logger;\r
@@ -39,6 +34,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 public class DwcaReferenceExport extends DwcaExportBase {\r
        private static final Logger logger = Logger.getLogger(DwcaReferenceExport.class);\r
 \r
+       private static final String fileName = "reference.txt";\r
+       \r
        /**\r
         * Constructor\r
         */\r
@@ -58,22 +55,11 @@ public class DwcaReferenceExport extends DwcaExportBase {
        @Override\r
        protected boolean doInvoke(DwcaTaxExportState state){\r
                DwcaTaxExportConfigurator config = state.getConfig();\r
-               String dbname = config.getSource() != null ? config.getSource().getName() : "unknown";\r
-       String fileName = config.getDestinationNameString();\r
-               logger.info("Serializing DB " + dbname + " to file " + fileName);\r
                TransactionStatus txStatus = startTransaction(true);\r
 \r
                try {\r
+                       PrintWriter writer = createPrintWriter(fileName, config);\r
                        \r
-                       final String coreTaxFileName = "reference.txt";\r
-                       fileName = fileName + File.separatorChar + coreTaxFileName;\r
-                       File f = new File(fileName);\r
-                       if (!f.exists()){\r
-                               f.createNewFile();\r
-                       }\r
-                       FileOutputStream fos = new FileOutputStream(f);\r
-                       PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos, "UTF8"), true);\r
-\r
                        List<TaxonNode> allNodes =  getAllNodes(null);\r
                        for (TaxonNode node : allNodes){\r
                                //sec\r
index 26dda9068ce7d17e34fcd387f80e0aa95d72cd0e..4482c96bc3918d218a5fb403f56c6e258b6655d6 100644 (file)
@@ -9,11 +9,8 @@
 \r
 package eu.etaxonomy.cdm.io.dwca.out;\r
 \r
-import java.io.File;\r
 import java.io.FileNotFoundException;\r
-import java.io.FileOutputStream;\r
 import java.io.IOException;\r
-import java.io.OutputStreamWriter;\r
 import java.io.PrintWriter;\r
 import java.io.UnsupportedEncodingException;\r
 import java.util.List;\r
@@ -24,8 +21,6 @@ import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;\r
 import org.springframework.transaction.TransactionStatus;\r
 \r
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;\r
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
@@ -33,21 +28,11 @@ import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;\r
 import eu.etaxonomy.cdm.model.common.RelationshipTermBase;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
-import eu.etaxonomy.cdm.model.description.IndividualsAssociation;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
 import eu.etaxonomy.cdm.model.description.TaxonInteraction;\r
 import eu.etaxonomy.cdm.model.name.NameRelationship;\r
-import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
 import eu.etaxonomy.cdm.model.name.NonViralName;\r
-import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
-import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;\r
-import eu.etaxonomy.cdm.model.occurrence.Collection;\r
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;\r
-import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;\r
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;\r
-import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
@@ -63,6 +48,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 public class DwcaResourceRelationExport extends DwcaExportBase {\r
        private static final Logger logger = Logger.getLogger(DwcaResourceRelationExport.class);\r
 \r
+       private static final String fileName = "resourceRelationship.txt";\r
+\r
        /**\r
         * Constructor\r
         */\r
@@ -82,22 +69,12 @@ public class DwcaResourceRelationExport extends DwcaExportBase {
        @Override\r
        protected boolean doInvoke(DwcaTaxExportState state){\r
                DwcaTaxExportConfigurator config = state.getConfig();\r
-               String dbname = config.getSource() != null ? config.getSource().getName() : "unknown";\r
-       String fileName = config.getDestinationNameString();\r
-               logger.info("Serializing DB " + dbname + " to file " + fileName);\r
                TransactionStatus txStatus = startTransaction(true);\r
 \r
                try {\r
                        \r
-                       final String coreTaxFileName = "resourceRelationship.txt";\r
-                       fileName = fileName + File.separatorChar + coreTaxFileName;\r
-                       File f = new File(fileName);\r
-                       if (!f.exists()){\r
-                               f.createNewFile();\r
-                       }\r
-                       FileOutputStream fos = new FileOutputStream(f);\r
-                       PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos, "UTF8"), true);\r
-\r
+                       PrintWriter writer = createPrintWriter(fileName, config);\r
+                       \r
                        \r
                        List<TaxonNode> allNodes =  getAllNodes(null);\r
                        \r
index 0cf1afb526b694729ab4798f8ba3d5d858419416..396e91ff6015cad6acc9bdf7be473231c872a197 100644 (file)
@@ -16,7 +16,6 @@ import java.io.IOException;
 import java.io.OutputStreamWriter;\r
 import java.io.PrintWriter;\r
 import java.io.UnsupportedEncodingException;\r
-import java.util.ArrayList;\r
 import java.util.List;\r
 import java.util.Set;\r
 \r
@@ -51,6 +50,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 public class DwcaTaxExport extends DwcaExportBase {\r
        private static final Logger logger = Logger.getLogger(DwcaTaxExport.class);\r
 \r
+       private static final String ROW_TYPE = "http://rs.tdwg.org/dwc/terms/Taxon";\r
+       \r
        /**\r
         * \r
         */\r
@@ -69,24 +70,25 @@ public class DwcaTaxExport extends DwcaExportBase {
         */\r
        @Override\r
        protected boolean doInvoke(DwcaTaxExportState state){\r
+               final String coreTaxFileName = "coreTax.txt";\r
+               \r
                DwcaTaxExportConfigurator config = state.getConfig();\r
-               String dbname = config.getSource() != null ? config.getSource().getName() : "unknown";\r
-       String fileName = config.getDestinationNameString();\r
-               logger.info("Serializing DB " + dbname + " to file " + fileName);\r
+               \r
+               \r
                TransactionStatus txStatus = startTransaction(true);\r
-\r
+               \r
+               DwcaMetaRecord metaRecord = new DwcaMetaRecord(true, coreTaxFileName, ROW_TYPE);\r
+               state.addMetaRecord(metaRecord);\r
+               DwcaTaxRecord r = new DwcaTaxRecord();\r
+               List<String> l = r.getHeaderList();\r
+               for (String header : l){\r
+                       metaRecord.addFieldEntry("http://rs.tdwg.org/dwc/terms/" + header);\r
+               }\r
+               \r
                try {\r
-                       final String coreTaxFileName = "coreTax.txt";\r
-                       fileName = fileName + File.separatorChar + coreTaxFileName;\r
-                       File f = new File(fileName);\r
-                       if (!f.exists()){\r
-                               f.createNewFile();\r
-                       }\r
-                       FileOutputStream fos = new FileOutputStream(f);\r
-                       PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos, "UTF8"), true);\r
-\r
-                       \r
                        \r
+                       PrintWriter writer = createPrintWriter(coreTaxFileName, config);\r
+\r
                        List<TaxonNode> allNodes =  getAllNodes(null);\r
                        for (TaxonNode node : allNodes){\r
                                Taxon taxon = CdmBase.deproxy(node.getTaxon(), Taxon.class);\r
@@ -123,9 +125,8 @@ public class DwcaTaxExport extends DwcaExportBase {
                }\r
                commitTransaction(txStatus);\r
                return true;\r
+               \r
        }\r
-       \r
-\r
 \r
        private void handleSynonyms(Taxon taxon, PrintWriter writer, Classification classification) {\r
                //TODO avoid duplicates\r
index 0157301b05573c6c1c1909c0c7da27726a2b64b0..d706b1e54a1f75ec6eb57e1157842b56caa50885 100644 (file)
@@ -36,12 +36,11 @@ public class DwcaTaxExportConfigurator extends XmlExportConfiguratorBase<DwcaTax
        private boolean doDescription = true;\r
        private boolean doDistributions = true;\r
        private boolean doImages = true;\r
-\r
+       private boolean doMetaData = true;\r
        private String encoding = "UTF-8";\r
-       private String linesTerminatedBy = "\r\n";\r
-       private String fieldsEnclosedBy = "&quot;";\r
+       private String linesTerminatedBy = "\\r\\n";\r
+       private String fieldsEnclosedBy = "\"";\r
        private boolean ignoreHeaderLines = true;\r
-       \r
        private boolean includeBasionymsInResourceRelations;\r
        private boolean includeMisappliedNamesInResourceRelations;\r
        \r
@@ -67,6 +66,7 @@ public class DwcaTaxExportConfigurator extends XmlExportConfiguratorBase<DwcaTax
                                ,DwcaDescriptionExport.class\r
                                ,DwcaDistributionExport.class\r
                                ,DwcaImageExport.class\r
+                               ,DwcaMetaDataExport.class\r
                };\r
        }\r
 \r
@@ -194,5 +194,60 @@ public class DwcaTaxExportConfigurator extends XmlExportConfiguratorBase<DwcaTax
        public List<UUID> getFeatureExclusions() {\r
                return featureExclusions;\r
        }\r
-               \r
+       \r
+       public String getEncoding() {\r
+               return encoding;\r
+       }\r
+\r
+       public void setEncoding(String encoding) {\r
+               this.encoding = encoding;\r
+       }\r
+\r
+       public String getLinesTerminatedBy() {\r
+               return linesTerminatedBy;\r
+       }\r
+\r
+       public void setLinesTerminatedBy(String linesTerminatedBy) {\r
+               this.linesTerminatedBy = linesTerminatedBy;\r
+       }\r
+\r
+       public String getFieldsEnclosedBy() {\r
+               return fieldsEnclosedBy;\r
+       }\r
+\r
+       public void setFieldsEnclosedBy(String fieldsEnclosedBy) {\r
+               this.fieldsEnclosedBy = fieldsEnclosedBy;\r
+       }\r
+\r
+       public boolean isIgnoreHeaderLines() {\r
+               return ignoreHeaderLines;\r
+       }\r
+\r
+       public void setIgnoreHeaderLines(boolean ignoreHeaderLines) {\r
+               this.ignoreHeaderLines = ignoreHeaderLines;\r
+       }\r
+\r
+       public boolean isIncludeBasionymsInResourceRelations() {\r
+               return includeBasionymsInResourceRelations;\r
+       }\r
+\r
+       public void setIncludeBasionymsInResourceRelations(boolean includeBasionymsInResourceRelations) {\r
+               this.includeBasionymsInResourceRelations = includeBasionymsInResourceRelations;\r
+       }\r
+\r
+       public boolean isIncludeMisappliedNamesInResourceRelations() {\r
+               return includeMisappliedNamesInResourceRelations;\r
+       }\r
+\r
+       public void setIncludeMisappliedNamesInResourceRelations(boolean includeMisappliedNamesInResourceRelations) {\r
+               this.includeMisappliedNamesInResourceRelations = includeMisappliedNamesInResourceRelations;\r
+       }\r
+\r
+       public void setDoMetaData(boolean doMetaData) {\r
+               this.doMetaData = doMetaData;\r
+       }\r
+\r
+       public boolean isDoMetaData() {\r
+               return doMetaData;\r
+       }\r
 }\r
index 1d0ff483c47dc63977d371aa148db616228fabbc..6e7f4414091585b95fefacbe56c1c9448612fdb2 100644 (file)
@@ -9,6 +9,9 @@
 */\r
 package eu.etaxonomy.cdm.io.dwca.out;\r
 \r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
 import org.apache.log4j.Logger;\r
 \r
 import eu.etaxonomy.cdm.io.common.XmlExportState;\r
@@ -21,9 +24,20 @@ public class DwcaTaxExportState extends XmlExportState<DwcaTaxExportConfigurator
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(DwcaTaxExportState.class);\r
 \r
+       private List<DwcaMetaRecord> metaRecords = new ArrayList<DwcaMetaRecord>();\r
+       \r
        public DwcaTaxExportState(DwcaTaxExportConfigurator config) {\r
                super(config);\r
        }\r
+       \r
+       public void addMetaRecord(DwcaMetaRecord record){\r
+               metaRecords.add(record);\r
+       }\r
+       \r
+       public List<DwcaMetaRecord> getMetaRecords(){\r
+               return metaRecords;\r
+       }\r
+       \r
 \r
 \r
 }\r
index 9b53ae64b026d3d7233a3929e72702ecb2edc106..f948328b05f6c0a37166e212082d3498a525f418 100644 (file)
@@ -50,7 +50,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 @Component\r
 public class DwcaTypesExport extends DwcaExportBase {\r
        private static final Logger logger = Logger.getLogger(DwcaTypesExport.class);\r
-\r
+       private static final String fileName = "typesAndSpecimen.txt";\r
+       \r
        /**\r
         * Constructor\r
         */\r
@@ -70,23 +71,11 @@ public class DwcaTypesExport extends DwcaExportBase {
        @Override\r
        protected boolean doInvoke(DwcaTaxExportState state){\r
                DwcaTaxExportConfigurator config = state.getConfig();\r
-               String dbname = config.getSource() != null ? config.getSource().getName() : "unknown";\r
-       String fileName = config.getDestinationNameString();\r
-               logger.info("Serializing DB " + dbname + " to file " + fileName);\r
                TransactionStatus txStatus = startTransaction(true);\r
 \r
                try {\r
                        \r
-                       final String coreTaxFileName = "typesAndSpecimen.txt";\r
-                       fileName = fileName + File.separatorChar + coreTaxFileName;\r
-                       File f = new File(fileName);\r
-                       if (!f.exists()){\r
-                               f.createNewFile();\r
-                       }\r
-                       FileOutputStream fos = new FileOutputStream(f);\r
-                       PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos, "UTF8"), true);\r
-\r
-                       \r
+                       PrintWriter writer = createPrintWriter(fileName, config);\r
                        List<TaxonNode> allNodes =  getAllNodes(null);\r
                        \r
                        for (TaxonNode node : allNodes){\r
index 7cda22a8c031311d7946a1f7c45faf0d40c9a1fa..bba4f7f8726f1b5fc43b89f84caac9022e90488d 100644 (file)
@@ -40,6 +40,10 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 public class DwcaVernacularExport extends DwcaExportBase {\r
        private static final Logger logger = Logger.getLogger(DwcaVernacularExport.class);\r
 \r
+       private static final String ROW_TYPE = "http://rs.gbif.org/terms/1.0/VernacularName";\r
+       private static final String fileName = "vernacular.txt";\r
+       \r
+       \r
        /**\r
         * Constructor\r
         */\r
@@ -59,22 +63,18 @@ public class DwcaVernacularExport extends DwcaExportBase {
        @Override\r
        protected boolean doInvoke(DwcaTaxExportState state){\r
                DwcaTaxExportConfigurator config = state.getConfig();\r
-               String dbname = config.getSource() != null ? config.getSource().getName() : "unknown";\r
-       String fileName = config.getDestinationNameString();\r
-               logger.info("Serializing DB " + dbname + " to file " + fileName);\r
                TransactionStatus txStatus = startTransaction(true);\r
 \r
                try {\r
+                       PrintWriter writer = createPrintWriter(fileName, config);\r
                        \r
-                       final String coreTaxFileName = "vernacular.txt";\r
-                       fileName = fileName + File.separatorChar + coreTaxFileName;\r
-                       File f = new File(fileName);\r
-                       if (!f.exists()){\r
-                               f.createNewFile();\r
+                       DwcaMetaRecord metaRecord = new DwcaMetaRecord(! IS_CORE, fileName, ROW_TYPE);\r
+                       state.addMetaRecord(metaRecord);\r
+                       DwcaVernacularRecord r = new DwcaVernacularRecord();\r
+                       List<String> l = r.getHeaderList();\r
+                       for (String header : l){\r
+                               metaRecord.addFieldEntry("http://rs.tdwg.org/dwc/terms/" + header);\r
                        }\r
-                       FileOutputStream fos = new FileOutputStream(f);\r
-                       PrintWriter writer = new PrintWriter(new OutputStreamWriter(fos, "UTF8"), true);\r
-\r
                        \r
                        \r
                        List<TaxonNode> allNodes =  getAllNodes(null);\r