package blade.migrate.provider; import blade.migrate.api.Migration; import blade.migrate.api.Problem; import blade.migrate.api.Reporter; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import org.osgi.framework.Constants; import org.osgi.service.component.annotations.Component; import dnl.utils.text.table.TextTable; @Component( property = { Constants.SERVICE_RANKING + ":Integer=0", "format:String=console" } ) public class ConsoleReporter implements Reporter { private OutputStream _output; @Override public void beginReporting(int format, OutputStream output) { _output = output; if (format == Migration.DETAIL_SHORT) { columnNames.add("Title"); columnNames.add("Type"); columnNames.add("File"); columnNames.add("Line"); } else { columnNames.add("Title"); columnNames.add("Summary"); columnNames.add("Type"); columnNames.add("Ticket"); columnNames.add("File"); columnNames.add("Line"); } } @Override public void endReporting() { Object[][] data = new Object[rowData.size()][columnNames.size()]; for (int i = 0; i < rowData.size(); i++) { for (int j = 0; j < columnNames.size(); j++) { data[i][j] = rowData.get(i)[j]; } } TextTable tt = new TextTable(columnNames.toArray(new String[0]), data); tt.setAddRowNumbering(true); tt.setSort(0); tt.printTable(); this.columnNames.clear(); this.rowData.clear(); try { if (_output != null) { _output.close(); } } catch (IOException e) { e.printStackTrace(); } } @Override public void report(Problem problem) { if (columnNames.size() == 4) { rowData.add(new Object[] { problem.title, problem.type, problem.file.getName(), problem.lineNumber }); } else { rowData.add(new Object[] { problem.title, problem.summary, problem.type, problem.ticket, problem.file.getName(), problem.lineNumber }); } } private final List<String> columnNames = new ArrayList<>(); private final List<Object[]> rowData = new ArrayList<>(); }