package org.lodder.subtools.multisubdownloader.cli.progress;
import org.lodder.subtools.multisubdownloader.actions.ActionException;
import org.lodder.subtools.multisubdownloader.gui.dialog.progress.search.SearchProgressTableModel;
import org.lodder.subtools.multisubdownloader.listeners.SearchProgressListener;
import org.lodder.subtools.multisubdownloader.subtitleproviders.SubtitleProvider;
import org.lodder.subtools.sublibrary.model.Release;
import dnl.utils.text.table.TextTable;
public class CLISearchProgress extends CLIProgress implements SearchProgressListener {
TextTable table;
SearchProgressTableModel tableModel;
public CLISearchProgress() {
tableModel = new SearchProgressTableModel();
table = new TextTable(tableModel);
}
@Override
public void progress(SubtitleProvider provider, int jobsLeft, Release release) {
this.tableModel
.update(provider.getName(), jobsLeft, (release == null ? "Done" : release.getFilename()));
this.printProgress();
}
@Override
public void progress(int progress) {
this.progress = progress;
this.printProgress();
}
@Override
public void completed() {
if (!this.isEnabled) {
return;
}
this.disable();
}
@Override
public void onError(ActionException exception) {
if (!isEnabled) {
return;
}
System.out.println("Error: " + exception.getMessage());
}
@Override
public void onStatus(String message) {
if (!isEnabled) {
return;
}
System.out.println(message);
}
protected void printProgress() {
if (!isEnabled) {
return;
}
/* print table */
if (isVerbose) {
System.out.println("");
table.printTable();
}
/* print progressbar */
this.printProgBar(this.progress);
}
}