private void writeHeader(Schema schema, LineEncoder encoder, char delimiter, QuotePolicy policy, char quote, char escape, String newline, String nullString) { String delimiterString = String.valueOf(delimiter); for (Column column : schema.getColumns()) { if (column.getIndex() != 0) { encoder.addText(delimiterString); } encoder.addText(setEscapeAndQuoteValue(column.getName(), delimiter, policy, quote, escape, newline, nullString)); } encoder.addNewLine(); }
public void finish() { encoder.finish(); }
public void close() { encoder.close(); } };
@Test public void testAddTextAddNewLine() throws Exception { try (MockFileOutput output = new MockFileOutput()) { LineEncoder encoder = newEncoder("utf-8", "LF", output); encoder.nextFile(); for (String line : new String[] { "abc", "日本語(Japanese)" }) { encoder.addText(line); encoder.addNewLine(); } encoder.finish(); // TODO //Iterator<Buffer> ite = output.getLastBuffers().iterator(); //assertEquals("abc", bufferToString(ite.next(), "utf-8")); //assertEquals("\n", bufferToString(ite.next(), "utf-8")); //assertEquals("日本語(Japanese)", bufferToString(ite.next(), "utf-8")); //assertEquals("\n", bufferToString(ite.next(), "utf-8")); //assertFalse(ite.hasNext()); } }
@Test public void testNewLine() throws Exception { try (MockFileOutput output = new MockFileOutput()) { LineEncoder encoder = newEncoder("utf-8", "CRLF", output); encoder.nextFile(); for (String line : new String[] { "abc", "日本語(Japanese)" }) { encoder.addLine(line); } encoder.finish(); // TODO //Iterator<Buffer> ite = output.getLastBuffers().iterator(); //assertEquals("abc", bufferToString(ite.next(), "utf-8")); //assertEquals("\r\n", bufferToString(ite.next(), "utf-8")); //assertEquals("日本語(Japanese)", bufferToString(ite.next(), "utf-8")); //assertEquals("\r\n", bufferToString(ite.next(), "utf-8")); //assertFalse(ite.hasNext()); } }
public void addLine(String line) { try { writer.append(line); } catch (IOException ex) { // unexpected throw new RuntimeException(ex); } addNewLine(); }
FileOutput output) { final PluginTask task = taskSource.loadTask(PluginTask.class); final LineEncoder encoder = new LineEncoder(output, task); final TimestampFormatter[] timestampFormatters = Timestamps.newTimestampColumnFormatters(task, schema, task.getColumnOptions()); final char delimiter = task.getDelimiterChar(); encoder.nextFile();
@Deprecated public final void format(final Timestamp value, final LineEncoder encoder) { // TODO: Optimize by directly appending to internal buffer encoder.addText(this.format(value)); }
private LineEncoder newEncoder(String charset, String newline, FileOutput output) throws Exception { ConfigSource config = Exec.newConfigSource() .set("charset", charset) .set("newline", newline); return new LineEncoder(output, config.loadConfig(LineEncoder.EncoderTask.class)); }
@Test public void testAddLine() throws Exception { try (MockFileOutput output = new MockFileOutput()) { LineEncoder encoder = newEncoder("utf-8", "LF", output); encoder.nextFile(); for (String line : new String[] { "abc", "日本語(Japanese)" }) { encoder.addLine(line); } encoder.finish(); // TODO //Iterator<Buffer> ite = output.getLastBuffers().iterator(); //assertEquals("abc", bufferToString(ite.next(), "utf-8")); //assertEquals("\n", bufferToString(ite.next(), "utf-8")); //assertEquals("日本語(Japanese)", bufferToString(ite.next(), "utf-8")); //assertEquals("\n", bufferToString(ite.next(), "utf-8")); //assertFalse(ite.hasNext()); } }
encoder.addNewLine();
@Test public void testCharset() throws Exception { try (MockFileOutput output = new MockFileOutput()) { LineEncoder encoder = newEncoder("MS932", "CR", output); encoder.nextFile(); for (String line : new String[] { "abc", "日本語(Japanese)" }) { encoder.addLine(line); } encoder.finish(); // TODO //Iterator<Buffer> ite = output.getLastBuffers().iterator(); //assertEquals("abc", bufferToString(ite.next(), "MS932")); //assertEquals("\r", bufferToString(ite.next(), "MS932")); //assertEquals("日本語(Japanese)", bufferToString(ite.next(), "MS932")); //assertEquals("\r", bufferToString(ite.next(), "MS932")); //assertFalse(ite.hasNext()); } }