package org.lodder.subtools.multisubdownloader.lib; import java.io.Console; import org.lodder.subtools.multisubdownloader.gui.extra.table.SubtitleTableColumnName; import org.lodder.subtools.multisubdownloader.settings.model.Settings; import org.lodder.subtools.sublibrary.model.Release; import dnl.utils.text.table.TextTable; public class SubtitleSelectionCLI extends SubtitleSelection { public SubtitleSelectionCLI(Settings settings) { super(settings); } @Override public int getUserInput(Release release) { System.out.println("\nSelect best subtitle for : " + release.getFilename()); generateSubtitleSelectionOutput(release); System.out.println("(-1) To skip download and/or move!"); Console c = System.console(); String selectedSubtitle = c.readLine("Enter number of selected subtitle: "); System.out.println(""); int selected = -1; try { selected = Integer.parseInt(selectedSubtitle); selected--; } catch (Exception e) { return -1; } return selected; } @Override public void dryRunOutput(Release release) { generateSubtitleSelectionOutput(release); } private void generateSubtitleSelectionOutput(Release release){ System.out.println("\nAvailable subtitles for : " + release.getFilename()); String[] columnNames = {SubtitleTableColumnName.SCORE.getColumnName(), SubtitleTableColumnName.FILENAME.getColumnName(), SubtitleTableColumnName.RELEASEGROUP.getColumnName(), SubtitleTableColumnName.QUALITY.getColumnName(), SubtitleTableColumnName.SOURCE.getColumnName(), SubtitleTableColumnName.UPLOADER.getColumnName(), SubtitleTableColumnName.HEARINGIMPAIRED.getColumnName()}; Object[][] dataTable = new Object[release.getMatchingSubs().size()][columnNames.length]; for (int i = 0; i < release.getMatchingSubs().size(); i++) { dataTable[i] = new Object[] {release.getMatchingSubs().get(i).getScore(), release.getMatchingSubs().get(i).getFilename(), release.getMatchingSubs().get(i).getReleasegroup(), release.getMatchingSubs().get(i).getQuality(), release.getMatchingSubs().get(i).getSubtitleSource(), release.getMatchingSubs().get(i).getUploader(), release.getMatchingSubs().get(i).isHearingImpaired()}; } TextTable tt = new TextTable(columnNames, dataTable); // this adds the numbering on the left tt.setAddRowNumbering(true); tt.printTable(); } }