package ${package};
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Formatter;
import java.util.Locale;
public final class FileShelfWriter implements ShelfWriter {
private String filename = "bookshelf.txt";
public String getFilename() {
return filename;
}
public void setFilename(final String file) {
this.filename = file;
}
@Override
public Bookshelf load() {
return null;
}
private String fixedWidth(final String s, final int width) {
StringBuilder sb = new StringBuilder(width);
sb.append(s);
while (sb.length() < width) {
sb.append(" ");
}
return sb.substring(0, width);
}
@Override
public void write(final Bookshelf shelf) {
try {
new File(filename).getAbsoluteFile().getParentFile().mkdirs();
BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
for (int i = 0; i < shelf.bookCount(); ++i) {
Formatter format = new Formatter(Locale.US);
Book b = shelf.get(i);
writer.write(fixedWidth(Integer.toString(i), 5));
writer.write(fixedWidth(b.getIsbn().stripped(), 15));
writer.write(fixedWidth(b.getTitle().toString(), 80));
writer.write(fixedWidth(b.getAuthor(), 50));
format.format("%6.02f", b.getPrice());
writer.write(fixedWidth(format.toString(), 9));
}
writer.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}