package org.cryptocoinpartners.bin;
import java.util.concurrent.Semaphore;
import org.cryptocoinpartners.report.Report;
import org.cryptocoinpartners.report.TableOutput;
import org.cryptocoinpartners.util.IoUtil;
import com.beust.jcommander.Parameter;
public abstract class ReportRunMode extends RunMode {
@Override
public void run(Semaphore semaphore) {
output(getReport().runReport());
if (semaphore != null)
semaphore.release();
}
@Override
public void run() {
Semaphore semaphore = null;
run(semaphore);
}
protected void output(TableOutput tableOutput) {
if (csv != null)
IoUtil.writeCsv(tableOutput, csv);
else
IoUtil.outputAscii(tableOutput);
}
protected abstract Report getReport();
@Parameter(names = "-csv", description = "specifies a file for output in CSV format")
private final String csv = null;
}