package yuku.readingplanconverter;
import yuku.bintex.BintexWriter;
import yuku.bintex.ValueMap;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Map;
public class RpaToRpb {
private static final String FILE_NAME = "esv_through_the_bible_in_a_year";
private static final String INPUT_FILE = System.getProperty("user.dir") + "/RpaToRpb/file/" + FILE_NAME + ".rpa";
private static final String OUTPUT_FILE = System.getProperty("user.dir") + "/RpaToRpb/file/" + FILE_NAME + ".rpb";
private static RpaInput.Rpa rpa;
private static final byte RPB_VERSION = 0x01;
private static final byte[] RPB_HEADER = { 0x52, (byte) 0x8a, 0x61, 0x34, 0x00, (byte) 0xe0, (byte) 0xea, RPB_VERSION};
public static void main(String[] args) {
rpa = new RpaInput().parse(INPUT_FILE);
createRpbFile(new File(OUTPUT_FILE));
}
private static void createRpbFile(final File file) {
try {
BintexWriter writer = new BintexWriter(new FileOutputStream(file));
//Write Header
writer.writeRaw(RPB_HEADER);
//Write info
Map<String, String> infos = rpa.infos;
ValueMap map = new ValueMap();
map.put("name", FILE_NAME);
map.put("title", infos.get("title"));
map.put("description", infos.get("description"));
map.put("duration", Integer.parseInt(infos.get("duration")));
writer.writeValueSimpleMap(map);
//Write data
List<int[]> plans = rpa.plans;
for (int[] aris : plans) {
writer.writeUint8(aris.length);
for (int ari : aris) {
writer.writeInt(ari);
}
}
//Write footer
writer.writeUint8(0);
} catch (IOException e) {
e.printStackTrace();
}
}
}