提交 e6d21550 编写于 作者: S serge-rider

#2926 CSV export: numbers formatting is configurable

上级 9035fdb3
......@@ -402,6 +402,8 @@ dataTransfer.processor.csv.property.quoteAlways.name=Quote always
dataTransfer.processor.csv.property.quoteAlways.description=Quote all cell values
dataTransfer.processor.csv.property.nullString.name=NULL string
dataTransfer.processor.csv.property.nullString.description=String which will be used instead of NULL values
dataTransfer.processor.csv.property.formatNumbers.name=Format numbers
dataTransfer.processor.csv.property.formatNumbers.description=Format numeric values using locale settings
dataTransfer.processor.sql.name=SQL
dataTransfer.processor.sql.description=Export to SQL INSERT statements
dataTransfer.processor.sql.propertyGroup.general.label = General
......
......@@ -3499,6 +3499,7 @@
<property id="quoteChar" label="%dataTransfer.processor.csv.property.quoteChar.name" type="string" description="%dataTransfer.processor.csv.property.quoteChar.description" defaultValue="&quot;" required="false"/>
<property id="quoteAlways" label="%dataTransfer.processor.csv.property.quoteAlways.name" type="boolean" description="%dataTransfer.processor.csv.property.quoteAlways.description" defaultValue="false" required="false"/>
<property id="nullString" label="%dataTransfer.processor.csv.property.nullString.name" type="string" description="%dataTransfer.processor.csv.property.nullString.description" defaultValue="" required="false"/>
<property id="formatNumbers" label="%dataTransfer.processor.csv.property.formatNumbers.name" type="boolean" description="%dataTransfer.processor.csv.property.formatNumbers.description" defaultValue="false" required="false"/>
</propertyGroup>
</processor>
<processor
......
......@@ -18,10 +18,12 @@ package org.jkiss.dbeaver.tools.transfer.stream.impl;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBConstants;
import org.jkiss.dbeaver.model.DBPDataKind;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.data.DBDAttributeBinding;
import org.jkiss.dbeaver.model.data.DBDContent;
import org.jkiss.dbeaver.model.data.DBDContentStorage;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.exec.DBCSession;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.tools.transfer.stream.IStreamDataExporterSite;
......@@ -45,6 +47,8 @@ public class DataExporterCSV extends StreamExporterAbstract {
private static final String PROP_QUOTE_CHAR = "quoteChar";
private static final String PROP_QUOTE_ALWAYS = "quoteAlways";
private static final String PROP_NULL_STRING = "nullString";
private static final String PROP_FORMAT_NUMBERS = "formatNumbers";
private static final char DEF_DELIMITER = ',';
private static final String DEF_QUOTE_CHAR = "\"";
......@@ -104,6 +108,14 @@ public class DataExporterCSV extends StreamExporterAbstract {
super.dispose();
}
@Override
protected DBDDisplayFormat getValueExportFormat(DBDAttributeBinding column) {
if (column.getDataKind() == DBPDataKind.NUMERIC && !Boolean.TRUE.equals(getSite().getProperties().get(PROP_FORMAT_NUMBERS))) {
return DBDDisplayFormat.NATIVE;
}
return super.getValueExportFormat(column);
}
@Override
public void exportHeader(DBCSession session) throws DBException, IOException
{
......
......@@ -18,6 +18,7 @@ package org.jkiss.dbeaver.tools.transfer.stream.impl;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.data.DBDAttributeBinding;
import org.jkiss.dbeaver.model.data.DBDDisplayFormat;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.tools.transfer.stream.IStreamDataExporter;
import org.jkiss.dbeaver.tools.transfer.stream.IStreamDataExporterSite;
......@@ -28,6 +29,7 @@ import org.jkiss.dbeaver.tools.transfer.stream.IStreamDataExporterSite;
public abstract class StreamExporterAbstract implements IStreamDataExporter {
private IStreamDataExporterSite site;
private DBDDisplayFormat exportFormat;
public IStreamDataExporterSite getSite()
{
......@@ -46,13 +48,21 @@ public abstract class StreamExporterAbstract implements IStreamDataExporter {
// do nothing
}
protected String getValueDisplayString(
DBDAttributeBinding column,
Object value)
{
final DBDValueHandler valueHandler = column.getValueHandler();
return valueHandler.getValueDisplayString(column, value, getSite().getExportFormat());
return valueHandler.getValueDisplayString(column, value, getValueExportFormat(column));
}
protected DBDDisplayFormat getValueExportFormat(DBDAttributeBinding column) {
if (this.exportFormat == null) {
this.exportFormat = getSite().getExportFormat();
}
return this.exportFormat;
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册