package eu.project.ttc.termino.export;
import java.io.IOException;
import java.io.Writer;
import com.google.common.collect.Lists;
import eu.project.ttc.api.TsvOptions;
import eu.project.ttc.api.TermSuiteException;
import eu.project.ttc.api.Traverser;
import eu.project.ttc.models.Term;
import eu.project.ttc.models.TermIndex;
import eu.project.ttc.models.TermVariation;
import eu.project.ttc.tools.utils.IndexerTSVBuilder;
public class TsvExporter {
private TermIndex termIndex;
private Writer writer;
private TsvOptions options;
private Traverser traverser;
private TsvExporter(TermIndex termIndex, Writer writer, Traverser traverser, TsvOptions options) {
super();
this.termIndex = termIndex;
this.writer = writer;
this.options = options;
this.traverser = traverser;
}
public static void export(TermIndex termIndex, Writer writer) {
export(termIndex, writer, Traverser.create(), new TsvOptions());
}
public static void export(TermIndex termIndex, Writer writer, TsvOptions options) {
new TsvExporter(termIndex, writer, Traverser.create(), options).doExport();
}
public static void export(TermIndex termIndex, Writer writer, Traverser traverser, TsvOptions options) {
new TsvExporter(termIndex, writer, traverser, options).doExport();
}
private void doExport() {
IndexerTSVBuilder tsv = new IndexerTSVBuilder(
writer,
Lists.newArrayList(options.properties()),
options.isShowScores()
);
try {
if(options.showHeaders())
tsv.writeHeaders();
for(Term t:traverser.toList(termIndex)) {
tsv.startTerm(termIndex, t, "");
if(options.isShowVariants())
for(TermVariation tv:t.getVariations()) {
tsv.addVariant(
termIndex,
tv.getVariant(),
String.format("%.2f", tv.getScore()));
}
}
tsv.close();
} catch (IOException e) {
throw new TermSuiteException(e);
}
}
}