filebot/source/net/sourceforge/filebot/ui/panel/sfv/ChecksumTableExportHandler....

104 lines
2.2 KiB
Java
Raw Normal View History

package net.sourceforge.filebot.ui.panel.sfv;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.Formatter;
import net.sourceforge.filebot.Settings;
import net.sourceforge.filebot.hash.HashType;
import net.sourceforge.filebot.hash.VerificationFilePrinter;
import net.sourceforge.filebot.ui.transfer.TextFileExportHandler;
import net.sourceforge.tuned.FileUtilities;
class ChecksumTableExportHandler extends TextFileExportHandler {
private final ChecksumTableModel model;
public ChecksumTableExportHandler(ChecksumTableModel model) {
this.model = model;
}
@Override
public boolean canExport() {
return model.getRowCount() > 0 && defaultColumn() != null;
}
@Override
public void export(Formatter out) {
export(out, defaultColumn());
}
@Override
public String getDefaultFileName() {
return getDefaultFileName(defaultColumn());
}
protected File defaultColumn() {
// select first column that is not a verification file column
for (File root : model.checksumColumns()) {
if (root.isDirectory())
return root;
}
return null;
}
public void export(File file, File column) throws IOException {
PrintWriter out = new PrintWriter(file, "UTF-8");
try {
export(new Formatter(out), column);
} finally {
out.close();
}
}
public void export(Formatter out, File column) {
HashType hashType = model.getHashType();
// print header
out.format("; Generated by %s %s on %tF at %<tT%n", Settings.getApplicationName(), Settings.getApplicationVersion(), new Date());
out.format(";%n");
out.format(";%n");
// print data
VerificationFilePrinter printer = hashType.newPrinter(out);
for (ChecksumRow row : model.rows()) {
ChecksumCell cell = row.getChecksum(column);
if (cell != null) {
String hash = cell.getChecksum(hashType);
if (hash != null) {
printer.println(cell.getName(), hash);
}
}
}
}
public String getDefaultFileName(File column) {
StringBuilder sb = new StringBuilder();
if (column != null)
sb.append(FileUtilities.getName(column));
else
sb.append("name");
return sb.append(".").append(model.getHashType().getExtension()).toString();
}
}