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
\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
@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
@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
\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
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
@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
*/\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
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
*/\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
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
\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
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
@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
\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
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
@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
}\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
--- /dev/null
+// $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
\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
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
@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
\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
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
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
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
@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
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
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
*/\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
}\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
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 = """;\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
,DwcaDescriptionExport.class\r
,DwcaDistributionExport.class\r
,DwcaImageExport.class\r
+ ,DwcaMetaDataExport.class\r
};\r
}\r
\r
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
*/\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
@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
@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
@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
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
@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