Search in sources :

Example 26 with Verse

use of biblemulticonverter.data.Verse in project BibleMultiConverter by schierlm.

the class OSIS method doExport.

@Override
public void doExport(Bible bible, String... exportArgs) throws Exception {
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
    Element osis = doc.createElement("osis");
    doc.appendChild(osis);
    osis.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
    osis.setAttribute("xmlns", "http://www.bibletechnologies.net/2003/OSIS/namespace");
    osis.setAttribute("xsi:schemaLocation", "http://www.bibletechnologies.net/2003/OSIS/namespace http://www.bibletechnologies.net/osisCore.2.1.1.xsd");
    Element osisText = doc.createElement("osisText");
    osis.appendChild(osisText);
    osisText.setAttribute("canonical", "true");
    osisText.setAttribute("osisIDWork", "Exported");
    osisText.appendChild(buildHeader(doc, bible.getName()));
    for (Book bk : bible.getBooks()) {
        Element book = doc.createElement("div");
        osisText.appendChild(book);
        book.setAttribute("type", "book");
        book.setAttribute("canonical", "true");
        book.setAttribute("osisID", bk.getId().getOsisID());
        Element bookTitle = doc.createElement("title");
        book.appendChild(bookTitle);
        bookTitle.setAttribute("type", "main");
        bookTitle.appendChild(doc.createTextNode(bk.getLongName()));
        int cnumber = 0;
        for (Chapter chp : bk.getChapters()) {
            cnumber++;
            Element chapter = doc.createElement("chapter");
            book.appendChild(chapter);
            chapter.setAttribute("osisID", bk.getId().getOsisID() + "." + cnumber);
            OSISVisitor visitor = new OSISVisitor(chapter, bk.getId().isNT());
            Element elem = doc.createElement("title");
            chapter.appendChild(elem);
            elem.setAttribute("type", "chapter");
            elem.appendChild(doc.createTextNode(bk.getAbbr() + " " + cnumber));
            if (chp.getProlog() != null) {
                chp.getProlog().accept(visitor);
            }
            for (VirtualVerse vv : chp.createVirtualVerses()) {
                String osisID = bk.getId().getOsisID() + "." + cnumber + "." + vv.getNumber();
                for (Headline hl : vv.getHeadlines()) {
                    hl.accept(visitor.visitHeadline(hl.getDepth()));
                }
                Element verse = doc.createElement("verse");
                chapter.appendChild(verse);
                verse.setAttribute("osisID", osisID);
                for (Verse v : vv.getVerses()) {
                    if (!v.getNumber().equals("" + vv.getNumber())) {
                        elem = doc.createElement("hi");
                        verse.appendChild(elem);
                        elem.setAttribute("type", "bold");
                        elem.appendChild(doc.createTextNode("(" + v.getNumber() + ")"));
                    }
                    v.accept(new OSISVisitor(verse, bk.getId().isNT()));
                }
            }
        }
    }
    String milestonedElementNames = exportArgs.length > 1 ? exportArgs[1] : "verse";
    if (!milestonedElementNames.equals("-")) {
        Set<String> milestonedElements = new HashSet<>(Arrays.asList(milestonedElementNames.split(",")));
        Set<String> unsupportedMilestonedElements = new HashSet<>(milestonedElements);
        unsupportedMilestonedElements.removeAll(GENERATED_MILESTONEABLE_ELEMENTS);
        if (!unsupportedMilestonedElements.isEmpty()) {
            for (String elem : unsupportedMilestonedElements) {
                if (GENERATED_UNMILESTONEABLE_ELEMENTS.contains(elem)) {
                    System.out.println("ERROR: " + elem + " may not be milestoned");
                } else {
                    System.out.println("ERROR: " + elem + " is never generated by the OSIS export");
                }
            }
            throw new IllegalArgumentException("Cannot create milestoned elements: " + milestonedElementNames);
        }
        convertChildrenToMilestoned(doc.getDocumentElement(), milestonedElements);
    }
    TransformerFactory.newInstance().newTransformer().transform(new DOMSource(doc), new StreamResult(new File(exportArgs[0])));
}
Also used : DOMSource(javax.xml.transform.dom.DOMSource) VirtualVerse(biblemulticonverter.data.VirtualVerse) StreamResult(javax.xml.transform.stream.StreamResult) Element(org.w3c.dom.Element) Chapter(biblemulticonverter.data.Chapter) Document(org.w3c.dom.Document) MetadataBook(biblemulticonverter.data.MetadataBook) Book(biblemulticonverter.data.Book) Headline(biblemulticonverter.data.FormattedText.Headline) File(java.io.File) VirtualVerse(biblemulticonverter.data.VirtualVerse) Verse(biblemulticonverter.data.Verse) HashSet(java.util.HashSet)

Example 27 with Verse

use of biblemulticonverter.data.Verse in project BibleMultiConverter by schierlm.

the class OSIS method parseChapter.

private void parseChapter(String chapterName, Element osisChapter, Chapter chapter, List<Element> unclosedElements) {
    int lastVerse = -1;
    List<Headline> headlines = new ArrayList<Headline>();
    for (Node node = osisChapter.getFirstChild(); node != null; node = node.getNextSibling()) {
        boolean startProlog = false;
        if (node instanceof Text) {
            if (node.getTextContent().trim().length() == 0)
                continue;
            if (lastVerse == -1) {
                startProlog = true;
            } else {
                printWarning("WARNING: Non-whitespace at chapter level: " + node.getTextContent());
            }
        } else if (node instanceof Element) {
            Element elem = (Element) node;
            if (elem.getNodeName().equals("title")) {
                Headline hl = new Headline(2);
                if (elem.getAttribute("type").equals("chapter")) {
                    hl = new Headline(1);
                }
                if (elem.getChildNodes().getLength() == 1 && elem.getFirstChild() instanceof Text) {
                    String text = elem.getFirstChild().getTextContent();
                    if (!text.equals(text.trim())) {
                        printWarning("WARNING: Whitespace at beginning/end of headline: '" + text + "'");
                        elem.getFirstChild().setNodeValue(text.trim());
                    }
                }
                convertFromMilestoned(elem, unclosedElements);
                parseFormattedText(null, elem, hl);
                if (hl.getElementTypes(1).length() == 0) {
                    printWarning("WARNING: Empty headline in " + chapterName);
                } else {
                    headlines.add(hl);
                }
            } else if (elem.getNodeName().equals("verse")) {
                String osisID = elem.getAttribute("osisID");
                if (!elem.getAttribute("sID").isEmpty() || !elem.getAttribute("sID").isEmpty())
                    throw new IllegalArgumentException("verse should have been de-milestoned already.");
                if (osisID.isEmpty())
                    throw new IllegalStateException("Verse without osisID");
                if (!osisID.startsWith(chapterName + "."))
                    throw new IllegalStateException("Invalid verse " + osisID + " in chapter " + chapterName);
                String vnumber = osisID.substring(chapterName.length() + 1);
                if (osisID.contains(" ")) {
                    vnumber = vnumber.substring(0, vnumber.indexOf(' '));
                    lastVerse = Integer.parseInt(vnumber);
                    int nextInRange = lastVerse + 1;
                    boolean first = true;
                    for (String part : osisID.split(" ")) {
                        if (first) {
                            first = false;
                            continue;
                        }
                        if (!part.startsWith(chapterName + "."))
                            throw new IllegalStateException("Invalid verse " + osisID + " in chapter " + chapterName);
                        String partNumber = part.substring(chapterName.length() + 1);
                        vnumber = vnumber + "." + partNumber;
                        if (partNumber.equals("" + nextInRange)) {
                            nextInRange++;
                        } else {
                            nextInRange = -1;
                        }
                    }
                    if (nextInRange != -1) {
                        vnumber = lastVerse + "-" + (nextInRange - 1);
                    }
                } else {
                    lastVerse = Integer.parseInt(vnumber);
                }
                Verse verse = new Verse(vnumber);
                warningContext = osisID;
                for (Headline hl : headlines) {
                    hl.accept(verse.getAppendVisitor().visitHeadline(hl.getDepth()));
                }
                headlines.clear();
                chapter.getVerses().add(verse);
                convertFromMilestoned(elem, unclosedElements);
                parseFormattedText(osisID, elem, verse);
                verse.trimWhitespace();
                verse.finished();
                if (verse.getElementTypes(1).length() == 0) {
                    printWarning("WARNING: Empty verse " + osisID);
                    chapter.getVerses().remove(verse);
                }
                warningContext += " (after closing)";
            } else if (lastVerse == -1) {
                startProlog = true;
            } else {
                printWarning("WARNING: " + elem.getNodeName() + " at invalid location");
            }
        }
        if (startProlog) {
            Element holder = osisChapter.getOwnerDocument().createElement("prolog");
            osisChapter.insertBefore(holder, node);
            while (holder.getNextSibling() != null && !holder.getNextSibling().getNodeName().equals("verse")) {
                holder.appendChild(holder.getNextSibling());
            }
            lastVerse = 0;
            FormattedText prolog = new FormattedText();
            chapter.setProlog(prolog);
            for (Headline hl : headlines) {
                hl.accept(prolog.getAppendVisitor().visitHeadline(hl.getDepth()));
            }
            headlines.clear();
            convertFromMilestoned(holder, unclosedElements);
            parseFormattedText(null, holder, prolog);
            prolog.trimWhitespace();
            prolog.finished();
            node = holder;
        }
    }
    if (headlines.size() > 0)
        printWarning("WARNING: Unused headlines: " + headlines.size());
}
Also used : Node(org.w3c.dom.Node) Element(org.w3c.dom.Element) ArrayList(java.util.ArrayList) Text(org.w3c.dom.Text) FormattedText(biblemulticonverter.data.FormattedText) FormattedText(biblemulticonverter.data.FormattedText) Headline(biblemulticonverter.data.FormattedText.Headline) VirtualVerse(biblemulticonverter.data.VirtualVerse) Verse(biblemulticonverter.data.Verse)

Example 28 with Verse

use of biblemulticonverter.data.Verse in project BibleMultiConverter by schierlm.

the class RoundtripHTML method doImport.

@Override
public Bible doImport(File inputDir) throws Exception {
    Bible bible;
    // metadata
    try (BufferedReader br = createReader(inputDir, "metadata.js")) {
        String line = br.readLine();
        br.readLine();
        bible = new Bible(line.substring(13, line.length() - 2).replace("\\\"", "\"").replace("\\\\", "\\"));
        Map<String, Object> fieldMap = new HashMap<String, Object>();
        while ((line = br.readLine()) != null) {
            if (line.startsWith("}")) {
                Book bk = new Book((String) fieldMap.get("abbr"), BookID.fromOsisId((String) fieldMap.get("osis")), (String) fieldMap.get("short"), (String) fieldMap.get("long"));
                for (int i = 0; i < (Integer) fieldMap.get("chapters"); i++) {
                    bk.getChapters().add(new Chapter());
                }
                bible.getBooks().add(bk);
                continue;
            }
            int pos = line.indexOf(":");
            String key = line.substring(0, pos);
            String value = line.substring(pos + 1);
            if (value.endsWith(","))
                value = value.substring(0, value.length() - 1);
            if (value.startsWith("\"") && value.endsWith("\"")) {
                fieldMap.put(key, value.substring(1, value.length() - 1).replace("\\\"", "\"").replace("\\\\", "\\"));
            } else if (value.equals("true") || value.equals("false")) {
                fieldMap.put(key, Boolean.parseBoolean(value));
            } else {
                fieldMap.put(key, Integer.parseInt(value));
            }
        }
    }
    // chapters
    for (Book bk : bible.getBooks()) {
        int cnumber = 0;
        for (Chapter ch : bk.getChapters()) {
            cnumber++;
            try (BufferedReader br = createReader(inputDir, getTypeDir(bk.getId()) + "/" + bk.getAbbr() + "_" + cnumber + ".html")) {
                String line;
                List<FormattedText.Visitor<RuntimeException>> footnotes = new ArrayList<>();
                while ((line = br.readLine()) != null) {
                    if (line.equals("<div class=\"biblehtmlcontent prolog\">")) {
                        line = br.readLine();
                        FormattedText prolog = new FormattedText();
                        int end = parseLine(prolog.getAppendVisitor(), line, 0, footnotes);
                        ch.setProlog(prolog);
                        if (end != line.length())
                            throw new IOException(line.substring(end));
                        line = br.readLine();
                        if (!line.equals("</div>"))
                            throw new IOException(line);
                    } else if (line.equals("<div class=\"biblehtmlcontent verses\" id=\"verses\">")) {
                        while ((line = br.readLine()) != null) {
                            if (line.equals("</div>"))
                                break;
                            if (!line.startsWith("<div class=\"v\" id=\"v") || !line.endsWith("</div>"))
                                throw new IOException(line);
                            line = line.substring(20, line.length() - 6);
                            int pos = line.indexOf("\">");
                            Verse v = new Verse(line.substring(0, pos));
                            int end = parseLine(v.getAppendVisitor(), line, pos + 2, footnotes);
                            if (end != line.length())
                                throw new IOException(line.substring(end));
                            ch.getVerses().add(v);
                        }
                        if (!line.equals("</div>"))
                            throw new IOException(line);
                    } else if (line.equals("<div class=\"biblehtmlcontent footnotes\">")) {
                        for (int i = 0; i < footnotes.size(); i++) {
                            line = br.readLine();
                            String prefix = "<div class=\"fn\"><sup class=\"fnt\"><a name=\"fn" + (i + 1) + "\" href=\"#fnm" + (i + 1) + "\">" + (i + 1) + "</a></sup> ";
                            if (!line.startsWith(prefix) || !line.endsWith("</div>"))
                                throw new IOException(line);
                            line = line.substring(prefix.length(), line.length() - 6);
                            int end = parseLine(footnotes.get(i), line, 0, null);
                            if (end != line.length())
                                throw new IOException(line.substring(end));
                        }
                        line = br.readLine();
                        if (!line.equals("</div>"))
                            throw new IOException(line);
                    }
                }
                if (ch.getProlog() != null)
                    ch.getProlog().finished();
                for (Verse v : ch.getVerses()) v.finished();
            }
        }
    }
    return bible;
}
Also used : Visitor(biblemulticonverter.data.FormattedText.Visitor) HashMap(java.util.HashMap) Bible(biblemulticonverter.data.Bible) Chapter(biblemulticonverter.data.Chapter) ArrayList(java.util.ArrayList) FormattedText(biblemulticonverter.data.FormattedText) IOException(java.io.IOException) Book(biblemulticonverter.data.Book) BufferedReader(java.io.BufferedReader) Verse(biblemulticonverter.data.Verse)

Example 29 with Verse

use of biblemulticonverter.data.Verse in project BibleMultiConverter by schierlm.

the class RoundtripHTML method doExport.

@Override
public void doExport(Bible bible, String... exportArgs) throws Exception {
    List<String> filenames = new ArrayList<String>();
    File directory = new File(exportArgs[0]);
    if (!directory.exists())
        directory.mkdirs();
    // build xref map
    Properties xrefMap = new Properties();
    if (exportArgs.length > 1 && new File(exportArgs[1]).exists()) {
        try (InputStream in = new FileInputStream(new File(exportArgs[1]))) {
            xrefMap.load(in);
        }
    }
    for (Book bk : bible.getBooks()) {
        for (int cnumber = 1; cnumber <= bk.getChapters().size(); cnumber++) {
            xrefMap.setProperty(bk.getId().getOsisID() + "," + cnumber, new File(directory, getTypeDir(bk.getId()) + "/" + bk.getAbbr() + "_" + cnumber + ".html").getAbsolutePath());
        }
    }
    if (exportArgs.length > 1) {
        try (OutputStream out = new FileOutputStream(new File(exportArgs[1]))) {
            xrefMap.store(out, "RoundtripHTML Cross Reference Map");
        }
    }
    Path base = new File(directory, "dummydir").getAbsoluteFile().toPath();
    for (Object key : xrefMap.keySet()) {
        String newValue = base.relativize(new File((String) xrefMap.get(key)).toPath()).toString().replace('\\', '/');
        xrefMap.setProperty((String) key, newValue);
    }
    // metadata
    try (BufferedWriter bw = createWriter(directory, filenames, "metadata.js")) {
        bw.write("biblename = \"" + bible.getName().replace("\\", "\\\\").replace("\"", "\\\"") + "\";\n");
        bw.write("metadata = [{\n");
        boolean first = true;
        for (Book bk : bible.getBooks()) {
            if (!first)
                bw.write("},{\n");
            first = false;
            String[] keys = new String[] { "abbr", "short", "long", "osis", "type" };
            String[] values = new String[] { bk.getAbbr(), bk.getShortName(), bk.getLongName(), bk.getId().getOsisID(), getTypeDir(bk.getId()) };
            for (int i = 0; i < keys.length; i++) {
                bw.write(keys[i] + ":\"" + values[i].replace("\\", "\\\\").replace("\"", "\\\"") + "\",\n");
            }
            bw.write("nt:" + bk.getId().isNT() + ",\n");
            bw.write("chapters:" + bk.getChapters().size() + "\n");
        }
        bw.write("}];\n");
    }
    // chapters
    for (Book bk : bible.getBooks()) {
        int cnumber = 0;
        for (Chapter ch : bk.getChapters()) {
            cnumber++;
            try (BufferedWriter bw = createWriter(directory, filenames, getTypeDir(bk.getId()) + "/" + bk.getAbbr() + "_" + cnumber + ".html")) {
                bw.write("<html><head>\n" + "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n" + "<title>" + (bk.getChapters().size() == 1 ? "" : bk.getAbbr() + " " + cnumber + " &ndash; ") + bk.getLongName() + " &ndash; " + bible.getName() + "</title>\n" + "<script type=\"text/javascript\" src=\"../metadata.js\"></script>\n" + "<script type=\"text/javascript\" src=\"../script.js\"></script>\n" + "<style type=\"text/css\">div.v { display:inline; } /*changed dynamically*/</style>\n" + "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style.css\">\n" + "</head>\n");
                bw.write("<body onload=\"showNavbar('" + bk.getAbbr() + "', " + cnumber + ");\">\n");
                bw.write("<div id=\"navbar\"><a href=\"../index.html\">" + bible.getName() + "</a> &ndash; <b>" + bk.getLongName() + "</b>");
                if (bk.getChapters().size() > 1) {
                    bw.write(" &ndash; ");
                    for (int i = 1; i <= bk.getChapters().size(); i++) {
                        if (i == cnumber) {
                            bw.write("<b>" + i + "</b> ");
                        } else if (i == 2 && cnumber > 4) {
                            bw.write("... ");
                            i = cnumber - 3;
                        } else if (i == cnumber + 3 && i < bk.getChapters().size()) {
                            bw.write("... ");
                            i = bk.getChapters().size() - 1;
                        } else {
                            bw.write("<a href=\"" + bk.getAbbr() + "_" + i + ".html\">" + i + "</a> ");
                        }
                    }
                }
                bw.write("</div><hr>\n");
                bw.write("<h1>" + bk.getAbbr() + (bk.getChapters().size() == 1 ? "" : " " + cnumber) + "</h1>\n");
                bw.write("<!-- PARSED BELOW; EDITING MAY BREAK PARSER -->\n");
                List<StringWriter> footnotes = new ArrayList<StringWriter>();
                if (ch.getProlog() != null) {
                    bw.write("<div class=\"biblehtmlcontent prolog\">\n");
                    ch.getProlog().accept(new RoundtripHTMLVisitor(bw, footnotes, "", "", xrefMap));
                    bw.write("\n");
                    bw.write("</div>\n");
                }
                if (ch.getVerses().size() > 0) {
                    bw.write("<div class=\"biblehtmlcontent verses\" id=\"verses\">\n");
                    for (Verse v : ch.getVerses()) {
                        bw.write("<div class=\"v\" id=\"v" + v.getNumber() + "\">");
                        v.accept(new RoundtripHTMLVisitor(bw, footnotes, "<span class=\"vn\">" + v.getNumber() + "</span> ", "", xrefMap));
                        bw.write("</div>\n");
                    }
                    bw.write("</div>\n");
                }
                if (footnotes.size() > 0) {
                    bw.write("<div class=\"biblehtmlcontent footnotes\">\n");
                    for (StringWriter footnote : footnotes) {
                        bw.write(footnote.toString() + "\n");
                    }
                    bw.write("</div>\n");
                }
                bw.write("<!-- PARSED ABOVE; EDITING MAY BREAK PARSER -->\n");
                bw.write("</body></html>");
            }
        }
    }
    // index file
    try (BufferedWriter bw = createWriter(directory, filenames, "index.html")) {
        bw.write("<html><head>\n" + "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n" + "<title>" + bible.getName() + "</title>\n" + "<script type=\"text/javascript\" src=\"metadata.js\"></script>\n" + "<script type=\"text/javascript\" src=\"script.js\"></script>\n" + "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">\n" + "</head>\n");
        bw.write("<body onload=\"showNavbar('', 0);\">\n");
        bw.write("<div id=\"navbar\"><b>" + bible.getName() + "</b></div><hr>\n");
        bw.write("<h1>" + bible.getName() + "</h1>\n");
        for (Book bk : bible.getBooks()) {
            bw.write("<a href=\"" + getTypeDir(bk.getId()) + "/" + bk.getAbbr() + "_1.html\">" + bk.getLongName() + "</a><br>\n");
        }
        bw.write("</body></html>");
    }
    // static files
    for (String staticFile : Arrays.asList("script.js", "style.css", "crossdomain.html")) {
        try (BufferedWriter bw = createWriter(directory, filenames, staticFile)) {
            Reader r = new InputStreamReader(RoundtripHTML.class.getResourceAsStream("/RoundtripHTML/" + staticFile), StandardCharsets.UTF_8);
            char[] buf = new char[4096];
            int len;
            while ((len = r.read(buf)) != -1) {
                bw.write(buf, 0, len);
            }
        }
    }
    // filelist.html (for mirroring)
    try (BufferedWriter bw = createWriter(directory, filenames, "filelist.html")) {
        bw.write("<html><head>\n" + "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n" + "<title>File list &ndash; " + bible.getName() + "</title>\n" + "<script type=\"text/javascript\" src=\"metadata.js\"></script>\n" + "<script type=\"text/javascript\" src=\"script.js\"></script>\n" + "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">\n" + "</head>\n");
        bw.write("<body onload=\"showNavbar('', 0);\">\n");
        bw.write("<div id=\"navbar\"><a href=\"index.html\">" + bible.getName() + "</a></div><hr>\n");
        bw.write("<h1>File list</h1>\n");
        for (String name : filenames) {
            bw.write("<a href=\"" + name + "\">" + name + "</a><br>\n");
        }
        bw.write("</body></html>");
    }
}
Also used : OutputStream(java.io.OutputStream) FileOutputStream(java.io.FileOutputStream) ArrayList(java.util.ArrayList) Reader(java.io.Reader) InputStreamReader(java.io.InputStreamReader) BufferedReader(java.io.BufferedReader) Properties(java.util.Properties) BufferedWriter(java.io.BufferedWriter) StringWriter(java.io.StringWriter) Book(biblemulticonverter.data.Book) Path(java.nio.file.Path) InputStreamReader(java.io.InputStreamReader) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) Chapter(biblemulticonverter.data.Chapter) FileInputStream(java.io.FileInputStream) FileOutputStream(java.io.FileOutputStream) File(java.io.File) Verse(biblemulticonverter.data.Verse)

Example 30 with Verse

use of biblemulticonverter.data.Verse in project BibleMultiConverter by schierlm.

the class RoundtripXML method createBible.

protected JAXBElement<BibleType> createBible(Bible sBible) throws Exception {
    ObjectFactory of = new ObjectFactory();
    JAXBElement<BibleType> dBible = of.createBible(of.createBibleType());
    dBible.getValue().setName(sBible.getName());
    int dictCounter = 0;
    for (Book sBook : sBible.getBooks()) {
        BibleType.Book dBook = of.createBibleTypeBook();
        dBook.setAbbr(sBook.getAbbr());
        if (sBook.getId().equals(BookID.DICTIONARY_ENTRY)) {
            dBook.setId(sBook.getId().getOsisID() + "-" + (++dictCounter));
        } else {
            dBook.setId(sBook.getId().getOsisID());
        }
        dBook.setShortName(sBook.getShortName());
        dBook.setLongName(sBook.getLongName());
        dBible.getValue().getBook().add(dBook);
        for (Chapter sChapter : sBook.getChapters()) {
            BibleType.Book.Chapter dChapter = of.createBibleTypeBookChapter();
            dBook.getChapter().add(dChapter);
            if (sChapter.getProlog() != null) {
                dChapter.setProlog(of.createBibleTypeBookChapterProlog());
                sChapter.getProlog().accept(new CreateContentVisitor(of, dChapter.getProlog().getContent()));
            }
            for (Verse sVerse : sChapter.getVerses()) {
                BibleType.Book.Chapter.Verse dVerse = of.createBibleTypeBookChapterVerse();
                dChapter.getVerse().add(dVerse);
                dVerse.setNumber(sVerse.getNumber());
                sVerse.accept(new CreateContentVisitor(of, dVerse.getContent()));
            }
        }
    }
    return dBible;
}
Also used : ObjectFactory(biblemulticonverter.schema.roundtripxml.ObjectFactory) Book(biblemulticonverter.data.Book) Chapter(biblemulticonverter.data.Chapter) BibleType(biblemulticonverter.schema.roundtripxml.BibleType) Verse(biblemulticonverter.data.Verse)

Aggregations

Verse (biblemulticonverter.data.Verse)61 Book (biblemulticonverter.data.Book)57 Chapter (biblemulticonverter.data.Chapter)57 VirtualVerse (biblemulticonverter.data.VirtualVerse)27 FormattedText (biblemulticonverter.data.FormattedText)24 Headline (biblemulticonverter.data.FormattedText.Headline)21 MetadataBook (biblemulticonverter.data.MetadataBook)20 BookID (biblemulticonverter.data.BookID)19 File (java.io.File)19 ArrayList (java.util.ArrayList)18 Bible (biblemulticonverter.data.Bible)16 BufferedWriter (java.io.BufferedWriter)15 IOException (java.io.IOException)14 FileOutputStream (java.io.FileOutputStream)13 OutputStreamWriter (java.io.OutputStreamWriter)12 EnumMap (java.util.EnumMap)9 BufferedReader (java.io.BufferedReader)8 FileInputStream (java.io.FileInputStream)8 HashMap (java.util.HashMap)8 HashSet (java.util.HashSet)8