#11027 Add 'in-between' delimiter option, reorganize option order

上级 506a128f
......@@ -104,6 +104,7 @@ dataTransfer.processor.txt.property.showNulls.label = Show NULLs
dataTransfer.processor.txt.property.delimLeading.label = Show leading delimiter
dataTransfer.processor.txt.property.delimHeader.label = Show header delimiter
dataTransfer.processor.txt.property.delimTrailing.label = Show trailing delimiter
dataTransfer.processor.txt.property.delimBetween.label = Show in-between delimiter
dataTransfer.processor.dbunit.name=DbUnit
dataTransfer.processor.dbunit.description=Export to DbUnit XML file(s)
dataTransfer.processor.dbunit.propertyGroup.general.label = General
......
......@@ -76,6 +76,7 @@ dataTransfer.processor.dbunit.name = DbUnit
dataTransfer.processor.txt.property.delimTrailing.label = \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0432 \u043A\u043E\u043D\u0446\u0435 \u0441\u0442\u0440\u043E\u043A\u0438
dataTransfer.processor.txt.property.delimHeader.label = \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0437\u0430\u0433\u043E\u043B\u043E\u0432\u043A\u0430
dataTransfer.processor.txt.property.delimLeading.label = \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0432 \u043D\u0430\u0447\u0430\u043B\u0435 \u0441\u0442\u0440\u043E\u043A\u0438
dataTransfer.processor.txt.property.delimBetween.label = \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u043C\u0435\u0436\u0434\u0443 \u043A\u043E\u043B\u043E\u043D\u043A\u0430\u043C\u0438
dataTransfer.processor.txt.property.showNulls.label = \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C NULL
dataTransfer.processor.txt.property.batchSize.label = \u0420\u0430\u0437\u043C\u0435\u0440 \u043F\u0430\u043A\u0435\u0442\u0430
dataTransfer.processor.txt.property.minColumnLength.label = \u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u0430\u044F \u0434\u043B\u0438\u043D\u0430 \u0441\u0442\u043E\u043B\u0431\u0446\u0430
......
......@@ -190,9 +190,10 @@
<property id="minColumnLength" label="%dataTransfer.processor.txt.property.minColumnLength.label" defaultValue="3"/>
<property id="maxColumnLength" label="%dataTransfer.processor.txt.property.maxColumnLength.label" defaultValue="0"/>
<property id="showNulls" label="%dataTransfer.processor.txt.property.showNulls.label" type="boolean" defaultValue="false"/>
<property id="delimLeading" label="%dataTransfer.processor.txt.property.delimLeading.label" type="boolean" defaultValue="true"/>
<property id="delimHeader" label="%dataTransfer.processor.txt.property.delimHeader.label" type="boolean" defaultValue="true"/>
<property id="delimLeading" label="%dataTransfer.processor.txt.property.delimLeading.label" type="boolean" defaultValue="true"/>
<property id="delimTrailing" label="%dataTransfer.processor.txt.property.delimTrailing.label" type="boolean" defaultValue="true"/>
<property id="delimBetween" label="%dataTransfer.processor.txt.property.delimBetween.label" type="boolean" defaultValue="true"/>
</propertyGroup>
</processor>
<processor
......
......@@ -47,12 +47,13 @@ public class DataExporterTXT extends StreamExporterAbstract {
private static final String PROP_DELIM_LEADING = "delimLeading";
private static final String PROP_DELIM_HEADER = "delimHeader";
private static final String PROP_DELIM_TRAILING = "delimTrailing";
private static final String PROP_DELIM_BETWEEN = "delimBetween";
private int batchSize = 200;
private int maxColumnSize = 0;
private int minColumnSize = 3;
private boolean showNulls;
private boolean delimLeading, delimHeader, delimTrailing;
private boolean delimLeading, delimHeader, delimTrailing, delimBetween;
private Deque<String[]> batchQueue;
private DBDAttributeBinding[] columns;
......@@ -69,6 +70,7 @@ public class DataExporterTXT extends StreamExporterAbstract {
this.delimLeading = CommonUtils.getBoolean(properties.get(PROP_DELIM_LEADING), true);
this.delimHeader = CommonUtils.getBoolean(properties.get(PROP_DELIM_HEADER), true);
this.delimTrailing = CommonUtils.getBoolean(properties.get(PROP_DELIM_TRAILING), true);
this.delimBetween = CommonUtils.getBoolean(properties.get(PROP_DELIM_BETWEEN), true);
this.batchQueue = new ArrayDeque<>(this.batchSize);
if (this.maxColumnSize > 0) {
this.maxColumnSize = Math.max(this.maxColumnSize, this.minColumnSize);
......@@ -132,32 +134,27 @@ public class DataExporterTXT extends StreamExporterAbstract {
}
while (!batchQueue.isEmpty()) {
writeRow(batchQueue.poll(), ' ');
if (delimHeader) {
delimHeader = false;
writeRow(batchQueue.poll(), ' ', false);
writeRow(null, '-', true);
} else {
writeRow(batchQueue.poll(), ' ', true);
writeRow(null, '-');
}
}
getWriter().flush();
}
private void writeRow(String[] values, char fill, boolean separator) {
private void writeRow(String[] values, char fill) {
final StringBuilder sb = new StringBuilder();
if (separator) {
sb.append(CommonUtils.getLineSeparator());
if (delimLeading) {
sb.append('|');
}
for (int index = 0; index < columns.length; index++) {
for (int index = 0, length = columns.length; index < length; index++) {
final String cell = ArrayUtils.isEmpty(values) ? "" : values[index];
if (delimLeading && index == 0) {
sb.append('|');
}
if (maxColumnSize > 0) {
sb.append(CommonUtils.truncateString(cell, maxColumnSize));
} else {
......@@ -168,11 +165,17 @@ public class DataExporterTXT extends StreamExporterAbstract {
sb.append(fill);
}
if (delimTrailing) {
if (delimBetween && index < length - 1) {
sb.append('|');
}
}
if (delimTrailing) {
sb.append('|');
}
sb.append(CommonUtils.getLineSeparator());
getWriter().write(sb.toString());
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册