Jackson deserialization for CsvExporter
This commit is contained in:
parent
59f322d607
commit
52426b98a3
@ -43,9 +43,10 @@ import org.json.JSONObject;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
import com.google.refine.browsing.Engine;
|
import com.google.refine.browsing.Engine;
|
||||||
import com.google.refine.model.Project;
|
import com.google.refine.model.Project;
|
||||||
import com.google.refine.util.JSONUtilities;
|
|
||||||
import com.google.refine.util.ParsingUtilities;
|
import com.google.refine.util.ParsingUtilities;
|
||||||
|
|
||||||
import au.com.bytecode.opencsv.CSVWriter;
|
import au.com.bytecode.opencsv.CSVWriter;
|
||||||
@ -63,25 +64,36 @@ public class CsvExporter implements WriterExporter{
|
|||||||
this.separator = separator;
|
this.separator = separator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class Configuration {
|
||||||
|
@JsonProperty("separator")
|
||||||
|
protected String separator = null;
|
||||||
|
@JsonProperty("lineSeparator")
|
||||||
|
protected String lineSeparator = CSVWriter.DEFAULT_LINE_END;
|
||||||
|
@JsonProperty("quoteAll")
|
||||||
|
protected boolean quoteAll = false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void export(Project project, Properties params, Engine engine, final Writer writer)
|
public void export(Project project, Properties params, Engine engine, final Writer writer)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
||||||
String optionsString = (params == null) ? null : params.getProperty("options");
|
String optionsString = (params == null) ? null : params.getProperty("options");
|
||||||
JSONObject options = null;
|
Configuration options = new Configuration();
|
||||||
if (optionsString != null) {
|
if (optionsString != null) {
|
||||||
try {
|
try {
|
||||||
options = ParsingUtilities.evaluateJsonStringToObject(optionsString);
|
options = ParsingUtilities.mapper.readValue(optionsString, Configuration.class);
|
||||||
} catch (JSONException e) {
|
if (options.separator == null) {
|
||||||
|
options.separator = Character.toString(separator);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
// Ignore and keep options null.
|
// Ignore and keep options null.
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final String separator = options == null ? Character.toString(this.separator) :
|
final String separator = options.separator;
|
||||||
JSONUtilities.getString(options, "separator", Character.toString(this.separator));
|
final String lineSeparator = options.lineSeparator;
|
||||||
final String lineSeparator = options == null ? CSVWriter.DEFAULT_LINE_END :
|
final boolean quoteAll = options.quoteAll;
|
||||||
JSONUtilities.getString(options, "lineSeparator", CSVWriter.DEFAULT_LINE_END);
|
|
||||||
final boolean quoteAll = options == null ? false : JSONUtilities.getBoolean(options, "quoteAll", false);
|
|
||||||
|
|
||||||
final boolean printColumnHeader =
|
final boolean printColumnHeader =
|
||||||
(params != null && params.getProperty("printColumnHeader") != null) ?
|
(params != null && params.getProperty("printColumnHeader") != null) ?
|
||||||
|
@ -126,6 +126,23 @@ public class CsvExporterTests extends RefineTest {
|
|||||||
verify(options,times(2)).getProperty("printColumnHeader");
|
verify(options,times(2)).getProperty("printColumnHeader");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void exportSimpleCsvCustomLineSeparator(){
|
||||||
|
CreateGrid(2, 2);
|
||||||
|
when(options.getProperty("options")).thenReturn("{\"lineSeparator\":\"X\"}");
|
||||||
|
|
||||||
|
try {
|
||||||
|
SUT.export(project, options, engine, writer);
|
||||||
|
} catch (IOException e) {
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.assertEquals(writer.toString(), "column0,column1X" +
|
||||||
|
"row0cell0,row0cell1X" +
|
||||||
|
"row1cell0,row1cell1X");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void exportCsvWithLineBreaks(){
|
public void exportCsvWithLineBreaks(){
|
||||||
CreateGrid(3,3);
|
CreateGrid(3,3);
|
||||||
|
Loading…
Reference in New Issue
Block a user