提交 29bd6ef5 编写于 作者: S Sergei.Rider

Merge remote-tracking branch 'origin/devel' into devel

......@@ -398,6 +398,8 @@ dataTransfer.processor.csv.property.escape.name=Characters escape
dataTransfer.processor.csv.property.escape.description=Bad characters escaping model (surrounded with quotes or escaped with '\' character)
dataTransfer.processor.csv.property.quoteChar.name=Quote character
dataTransfer.processor.csv.property.quoteChar.description=Character which will bee used to quote strings (space means no quote)
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.sql.name=SQL
......
......@@ -3465,6 +3465,7 @@
<property id="header" label="%dataTransfer.processor.csv.property.header.name" type="string" description="%dataTransfer.processor.csv.property.header.description" defaultValue="top" required="true" validValues="none,top,bottom,both"/>
<property id="escape" label="%dataTransfer.processor.csv.property.escape.name" type="string" description="%dataTransfer.processor.csv.property.escape.description" defaultValue="quotes" required="true" validValues="quotes,escape"/>
<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"/>
</propertyGroup>
</processor>
......
......@@ -43,6 +43,7 @@ public class DataExporterCSV extends StreamExporterAbstract {
private static final String PROP_DELIMITER = "delimiter";
private static final String PROP_HEADER = "header";
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 char DEF_DELIMITER = ',';
private static final String DEF_QUOTE_CHAR = "\"";
......@@ -56,6 +57,7 @@ public class DataExporterCSV extends StreamExporterAbstract {
private String delimiter;
private char quoteChar = '"';
private boolean useQuotes = true;
private boolean quoteAlways = true;
private String rowDelimiter;
private String nullString;
private HeaderPosition headerPosition;
......@@ -85,6 +87,7 @@ public class DataExporterCSV extends StreamExporterAbstract {
Object nullStringProp = site.getProperties().get(PROP_NULL_STRING);
nullString = nullStringProp == null ? null : nullStringProp.toString();
useQuotes = quoteChar != ' ';
quoteAlways = CommonUtils.toBoolean(site.getProperties().get(PROP_QUOTE_ALWAYS));
out = site.getWriter();
rowDelimiter = GeneralUtils.getDefaultLineSeparator();
try {
......@@ -185,9 +188,11 @@ public class DataExporterCSV extends StreamExporterAbstract {
}
// check for needed quote
final boolean hasQuotes = useQuotes && value.indexOf(quoteChar) != -1;
if (!quote && !value.isEmpty()) {
if (quoteAlways) {
quote = true;
} else if (!quote && !value.isEmpty()) {
if (hasQuotes ||
value.indexOf(delimiter) != -1 ||
value.contains(delimiter) ||
value.indexOf('\r') != -1 ||
value.indexOf('\n') != -1 ||
value.contains(rowDelimiter))
......
......@@ -88,7 +88,6 @@ public class SQLQueryTransformerCount implements SQLQueryTransformer {
for (SelectItem item : select.getSelectItems()) {
if (item instanceof SelectExpressionItem) {
exprs.add(((SelectExpressionItem)item).getExpression());
break;
}
}
if (!exprs.isEmpty()) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册