From 2ed5b432ed58c8219d5a6d58befd0e5a295bfe9e Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Mon, 13 Apr 2015 11:46:59 +0000 Subject: [PATCH] --- .gitattributes | 5 + .../csv/caryophyllales/out/CsvNameExport.java | 5 + .../caryophyllales/out/CsvNameExportBase.java | 91 +++++++++++++++++++ .../out/CsvNameExportConfigurator.java | 83 +++++++++++++++++ .../out/CsvNameExportState.java | 16 ++++ .../io/csv/caryophyllales/out/NameRecord.java | 77 ++++++++++++++++ 6 files changed, 277 insertions(+) create mode 100644 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExport.java create mode 100644 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportBase.java create mode 100644 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportConfigurator.java create mode 100644 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportState.java create mode 100644 cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/NameRecord.java diff --git a/.gitattributes b/.gitattributes index f1930e4e0e..a490e748cf 100644 --- a/.gitattributes +++ b/.gitattributes @@ -260,6 +260,11 @@ cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/IdMapper.java -te cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/IndexCounter.java -text cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/MethodMapper.java -text cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/ObjectChangeMapper.java -text +cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExport.java -text +cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportBase.java -text +cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportConfigurator.java -text +cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportState.java -text +cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/NameRecord.java -text cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/redlist/demo/CsvDemoBase.java -text cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/redlist/demo/CsvDemoExport.java -text cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/redlist/demo/CsvDemoExportConfigurator.java -text diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExport.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExport.java new file mode 100644 index 0000000000..140c3a262b --- /dev/null +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExport.java @@ -0,0 +1,5 @@ +package eu.etaxonomy.cdm.io.csv.caryophyllales.out; + +public class CsvNameExport extends CsvNameExportBase { + +} diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportBase.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportBase.java new file mode 100644 index 0000000000..8bbbb8c6bb --- /dev/null +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportBase.java @@ -0,0 +1,91 @@ +package eu.etaxonomy.cdm.io.csv.caryophyllales.out; + +import java.io.ByteArrayOutputStream; +import java.io.PrintWriter; +import java.net.URI; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Set; + +import org.apache.commons.lang.StringUtils; +import org.springframework.transaction.TransactionStatus; + +import eu.etaxonomy.cdm.io.common.CdmExportBase; +import eu.etaxonomy.cdm.io.common.ICdmExport; +import eu.etaxonomy.cdm.io.common.mapping.out.IExportTransformer; +import eu.etaxonomy.cdm.io.csv.redlist.demo.CsvDemoBase; +import eu.etaxonomy.cdm.io.csv.redlist.demo.CsvDemoExportConfigurator; +import eu.etaxonomy.cdm.io.csv.redlist.demo.CsvDemoExportState; +import eu.etaxonomy.cdm.io.csv.redlist.out.CsvExportBaseRedlist; +import eu.etaxonomy.cdm.io.csv.redlist.out.CsvTaxExportConfiguratorRedlist; +import eu.etaxonomy.cdm.io.csv.redlist.out.CsvTaxExportStateRedlist; +import eu.etaxonomy.cdm.io.csv.redlist.out.CsvTaxRecordRedlist; +import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.location.NamedArea; +import eu.etaxonomy.cdm.model.name.NonViralName; +import eu.etaxonomy.cdm.model.taxon.Classification; +import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.cdm.model.taxon.TaxonNode; + +public class CsvNameExportBase extends CdmExportBase implements ICdmExport{ + + public CsvNameExportBase() { + super(); + this.ioName = this.getClass().getSimpleName(); + } + + + @Override + protected void doInvoke(CsvNameExportState state) { + CsvNameExportConfigurator config = state.getConfig(); + TransactionStatus txStatus = startTransaction(true); + + PrintWriter writer = null; + ByteArrayOutputStream byteArrayOutputStream; + + byteArrayOutputStream = config.getByteOutputStream(); + writer = new PrintWriter(byteArrayOutputStream); + + List> result = getNameService().getNameRecords(); + NameRecord nameRecord; + int count = 0; + boolean isFirst = true; + for (HashMap record:result){ + if (count > 0){ + isFirst = false; + } + nameRecord = new NameRecord(record, isFirst); + nameRecord.print(writer, config); + + } + writer.flush(); + + writer.close(); + + + commitTransaction(txStatus); + return; + + + } + + + + @Override + protected boolean doCheck(CsvNameExportState state) { + // TODO Auto-generated method stub + return false; + } + + @Override + protected boolean isIgnore(CsvNameExportState state) { + // TODO Auto-generated method stub + return false; + } + + + + +} diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportConfigurator.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportConfigurator.java new file mode 100644 index 0000000000..ec851f7bd0 --- /dev/null +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportConfigurator.java @@ -0,0 +1,83 @@ +package eu.etaxonomy.cdm.io.csv.caryophyllales.out; + +import java.io.ByteArrayOutputStream; +import java.io.File; + +import eu.etaxonomy.cdm.database.ICdmDataSource; +import eu.etaxonomy.cdm.io.common.XmlExportConfiguratorBase; +import eu.etaxonomy.cdm.io.common.mapping.out.IExportTransformer; +import eu.etaxonomy.cdm.io.csv.redlist.demo.CsvDemoExport; +import eu.etaxonomy.cdm.io.csv.redlist.demo.CsvDemoExportState; + +public class CsvNameExportConfigurator extends XmlExportConfiguratorBase{ + + protected CsvNameExportConfigurator(File destination, + ICdmDataSource cdmSource, IExportTransformer transformer) { + super(destination, cdmSource, transformer); + // TODO Auto-generated constructor stub + } + + public static CsvNameExportConfigurator NewInstance(ICdmDataSource source, File destinationFolder){ + + return new CsvNameExportConfigurator(destinationFolder,source, null); + + } + + private ByteArrayOutputStream byteOutputStream; + + public ByteArrayOutputStream getByteOutputStream() { + return byteOutputStream; + } + + public void setByteOutputStream(ByteArrayOutputStream byteOutputStream) { + this.byteOutputStream = byteOutputStream; + } + + private String encoding = "UTF-8"; + public String getEncoding() { + return encoding; + } + public void setEncoding(String encoding) { + this.encoding = encoding; + } + public String getLinesTerminatedBy() { + return linesTerminatedBy; + } + public void setLinesTerminatedBy(String linesTerminatedBy) { + this.linesTerminatedBy = linesTerminatedBy; + } + public String getFieldsEnclosedBy() { + return fieldsEnclosedBy; + } + public void setFieldsEnclosedBy(String fieldsEnclosedBy) { + this.fieldsEnclosedBy = fieldsEnclosedBy; + } + public boolean isHasHeaderLines() { + return hasHeaderLines; + } + public void setHasHeaderLines(boolean hasHeaderLines) { + this.hasHeaderLines = hasHeaderLines; + } + public String getFieldsTerminatedBy() { + return fieldsTerminatedBy; + } + public void setFieldsTerminatedBy(String fieldsTerminatedBy) { + this.fieldsTerminatedBy = fieldsTerminatedBy; + } + private String linesTerminatedBy = "\r\n"; + private String fieldsEnclosedBy = "\""; + private boolean hasHeaderLines = true; + private String fieldsTerminatedBy=";"; + @Override + public CsvNameExportState getNewState() { + return new CsvNameExportState(this); + } + @Override + @SuppressWarnings("unchecked") + protected void makeIoClassList() { + ioClassList = new Class[] { + CsvNameExportBase.class + }; + } + +} diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportState.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportState.java new file mode 100644 index 0000000000..922c2a8f56 --- /dev/null +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/CsvNameExportState.java @@ -0,0 +1,16 @@ +package eu.etaxonomy.cdm.io.csv.caryophyllales.out; + +import eu.etaxonomy.cdm.io.common.XmlExportState; +import eu.etaxonomy.cdm.io.csv.redlist.demo.CsvDemoExportConfigurator; + +public class CsvNameExportState extends XmlExportState{ + + + public CsvNameExportState(CsvNameExportConfigurator config) { + super(config); + // TODO Auto-generated constructor stub + } + + + +} diff --git a/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/NameRecord.java b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/NameRecord.java new file mode 100644 index 0000000000..6397a04304 --- /dev/null +++ b/cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/csv/caryophyllales/out/NameRecord.java @@ -0,0 +1,77 @@ +package eu.etaxonomy.cdm.io.csv.caryophyllales.out; + +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.lang.StringUtils; + +import eu.etaxonomy.cdm.io.csv.redlist.out.CsvTaxExportConfiguratorRedlist; + +public class NameRecord { + private HashMap record; + private boolean isFirst; + + + public NameRecord(HashMap record, boolean isFirst){ + record = record; + isFirst = isFirst; + } + + +protected void print(PrintWriter writer, CsvNameExportConfigurator config) { + String strToPrint =""; + if (isFirst){ + for (String valueName:record.keySet()){ + strToPrint+=valueName; + } + strToPrint.concat(config.getLinesTerminatedBy()); + } + if (!record.isEmpty() ){ + //Replace quotes by double quotes + String value ; + Iterator it = record.values().iterator(); + while (it.hasNext()){ + value = it.next(); + value = value.replace("\"", "\"\""); + + value = value.replace(config.getLinesTerminatedBy(), "\\r"); + + //replace all line brakes according to best practices: http://code.google.com/p/gbif-ecat/wiki/BestPractices + value = value.replace("\r\n", "\\r"); + value = value.replace("\r", "\\r"); + value = value.replace("\n", "\\r"); + + strToPrint += config.getFieldsEnclosedBy() + value + config.getFieldsEnclosedBy(); + } + strToPrint.concat(config.getLinesTerminatedBy()); + writer.print(strToPrint); + } + + +} + + +public HashMap getRecord() { + return record; +} + + +public void setRecord(HashMap record) { + this.record = record; +} + + +public boolean isFirst() { + return isFirst; +} + + +public void setFirst(boolean isFirst) { + this.isFirst = isFirst; +} + +} -- 2.34.1