package yuku.alkitabconverter.col; import java.io.File; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map.Entry; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; import yuku.alkitabconverter.util.Rec; public class ColProses { static String[] xnamakitab = { "Gen", "Exo", "Lev", "Num", "Deu", "Jos", "Jug", "Rut", "1Sa", "2Sa", "1Ki", "2Ki", "1Ch", "2Ch", "Ezr", "Neh", "Est", "Job", "Psm", "Pro", "Ecc", "Son", "Isa", "Jer", "Lam", "Eze", "Dan", "Hos", "Joe", "Amo", "Oba", "Jon", "Mic", "Nah", "Hab", "Zep", "Hag", "Zec", "Mal", // 39 "Mat", "Mak", "Luk", "Jhn", "Act", "Rom", "1Co", "2Co", "Gal", "Eph", "Phl", "Col", "1Ts", "2Ts", "1Ti", "2Ti", "Tit", "Phm", "Heb", "Jas", "1Pe", "2Pe", "1Jn", "2Jn", "3Jn", "Jud", "Rev", // 27 }; public ArrayList<Rec> parse(String nf) throws Exception { LinkedHashMap<Integer, Integer> nn = new LinkedHashMap<>(); ArrayList<Rec> res = new ArrayList<>(); Scanner sc = new Scanner(new File(nf), "utf-8"); int lastKitab_1 = 1; int lastPasal_1 = 1; int lastAyat_1 = 0; Pattern p = Pattern.compile("([A-Za-z1-3]{1,3}) (\\d+):(\\d+)\\s?(.*)"); while (sc.hasNextLine()) { String baris = sc.nextLine(); Matcher m = p.matcher(baris); if (!m.matches()) { throw new RuntimeException("baris tidak sesuai pattern: " + baris); } int kitab_1 = toKitab_1(m.group(1)); int pasal_1 = Integer.parseInt(m.group(2)); int ayat_1 = Integer.parseInt(m.group(3)); String isi = m.group(4); if (ayat_1 != lastAyat_1 + 1) { if (pasal_1 != lastPasal_1 + 1) { if (kitab_1 != lastKitab_1 + 1) { throw new RuntimeException("urutan ngaco. k p a: " + kitab_1 + " " + pasal_1 + " " + ayat_1 + " last k p a: " + lastKitab_1 + " " + lastPasal_1 + " " + lastAyat_1); } } } nn.put(kitab_1, (nn.get(kitab_1) == null? 0: nn.get(kitab_1)) + 1); Rec rec = new Rec(); rec.book_1 = kitab_1; rec.chapter_1 = pasal_1; rec.verse_1 = ayat_1; rec.text = isi; res.add(rec); lastKitab_1 = kitab_1; lastPasal_1 = pasal_1; lastAyat_1 = ayat_1; } for (Entry<Integer, Integer> e: nn.entrySet()) { System.out.println(e.getKey() + ": " + e.getValue()); } System.out.println("selesai"); return res; } private int toKitab_1(String namakitab) { for (int i = 0; i < xnamakitab.length; i++) { if (xnamakitab[i].equals(namakitab)) { return i + 1; } } throw new RuntimeException("namakitab ga dikenal: " + namakitab); } }