From 66ad3dea875e1f8edcc65c02aca1ba7bcfa71a7d Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 4 Oct 2011 17:10:56 +0000 Subject: [PATCH] Improve CSV and tabular git-svn-id: https://svn.argeo.org/commons/trunk@4796 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../main/java/org/argeo/util/CsvWriter.java | 19 +++++++++++++++++++ .../argeo/util/tabular/CsvTabularWriter.java | 3 +-- .../org/argeo/util/tabular/TabularColumn.java | 6 ++++++ .../org/argeo/util/tabular/TabularWriter.java | 3 +-- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/CsvWriter.java b/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/CsvWriter.java index e7afe952b..85356e4fe 100644 --- a/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/CsvWriter.java +++ b/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/CsvWriter.java @@ -47,6 +47,25 @@ public class CsvWriter { } } + /** + * Write a CSV line. Also used to write a header if needed (this is + * transparent for the CSV writer): simply call it first, before writing the + * lines. + */ + public void writeLine(Object[] tokens) { + try { + for (int i = 0; i < tokens.length; i++) { + writeToken(tokens[i].toString()); + if (i != (tokens.length - 1)) + out.print(separator); + } + out.print('\n'); + out.flush(); + } catch (IOException e) { + throw new ArgeoException("Could not write " + tokens, e); + } + } + protected void writeToken(String token) throws IOException { // +2 for possible quotes, another +2 assuming there would be an already // quoted string where quotes needs to be duplicated diff --git a/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/CsvTabularWriter.java b/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/CsvTabularWriter.java index 20a275a44..a16c8b2ad 100644 --- a/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/CsvTabularWriter.java +++ b/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/CsvTabularWriter.java @@ -1,7 +1,6 @@ package org.argeo.util.tabular; import java.io.OutputStream; -import java.util.List; import org.argeo.util.CsvWriter; @@ -13,7 +12,7 @@ public class CsvTabularWriter implements TabularWriter { this.csvWriter = new CsvWriter(out); } - public void appendRow(List row) { + public void appendRow(Object[] row) { csvWriter.writeLine(row); } diff --git a/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/TabularColumn.java b/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/TabularColumn.java index 4a7abf729..ab3b74ba4 100644 --- a/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/TabularColumn.java +++ b/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/TabularColumn.java @@ -10,6 +10,12 @@ public class TabularColumn { */ private Integer type; + /** column with default type */ + public TabularColumn(String name) { + super(); + this.name = name; + } + public TabularColumn(String name, Integer type) { super(); this.name = name; diff --git a/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/TabularWriter.java b/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/TabularWriter.java index ab493592b..dc911c029 100644 --- a/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/TabularWriter.java +++ b/basic/runtime/org.argeo.basic.nodeps/src/main/java/org/argeo/util/tabular/TabularWriter.java @@ -1,11 +1,10 @@ package org.argeo.util.tabular; -import java.util.List; /** Write to a tabular content */ public interface TabularWriter { /** Append a new row of data */ - public void appendRow(List row); + public void appendRow(Object[] row); /** Finish persisting data and release resources */ public void close(); -- 2.39.2