![JAR search and dependency download from the Maven repository](/logo.png)
internal.sdmxdl.cli.ext.CsvTable Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sdmx-dl-cli Show documentation
Show all versions of sdmx-dl-cli Show documentation
Easily download official statistics - CLI
The newest version!
package internal.sdmxdl.cli.ext;
import nbbrd.console.picocli.csv.CsvOutput;
import nbbrd.io.text.Formatter;
import nbbrd.picocsv.Csv;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Stream;
@lombok.Value
@lombok.Builder
public class CsvTable {
@lombok.Singular
List> columns;
public static Builder builderOf(Class type) {
return builder();
}
public static class Builder {
public Builder columnOf(String name, Function super T, ? extends CharSequence> extractor) {
return column(new CsvColumn<>(name, extractor::apply));
}
public Builder columnOf(String name, Function super T, ? extends C> extractor, Formatter formatter) {
return column(new CsvColumn<>(name, formatter.compose(extractor)));
}
}
public void write(CsvOutput csv, Stream rows) throws IOException {
write(csv, rows.iterator());
}
public void write(CsvOutput csv, Iterable rows) throws IOException {
write(csv, rows.iterator());
}
public void write(CsvOutput csv, Iterator rows) throws IOException {
CsvUtil.write(csv, this::writeNames, w -> {
while (rows.hasNext()) {
writeValues(w, rows.next());
}
});
}
void writeNames(Csv.Writer writer) throws IOException {
for (CsvColumn column : columns) {
column.writeName(writer);
}
writer.writeEndOfLine();
}
private void writeValues(Csv.Writer writer, T row) throws IOException {
for (CsvColumn column : columns) {
column.writeValue(writer, row);
}
writer.writeEndOfLine();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy