use of biblemulticonverter.schema.haggai.STYLE in project BibleMultiConverter by schierlm.
the class HaggaiXML method parseContent.
private boolean parseContent(Visitor<RuntimeException> visitor, List<? extends Object> contentList, Map<BookID, String> abbrMap) throws IOException {
boolean contentFound = false;
for (Object n : contentList) {
if (n instanceof String) {
String value = normalize((String) n, false);
visitor.visitText(value);
contentFound |= value.trim().length() > 0;
} else if (n instanceof JAXBElement<?>) {
String name = ((JAXBElement<?>) n).getName().toString();
Object nn = ((JAXBElement<?>) n).getValue();
if (name.equals("STYLE") && nn instanceof STYLE) {
TStyleFix fs = ((STYLE) nn).getFs();
FormattingInstructionKind kind;
switch(fs) {
case BOLD:
kind = FormattingInstructionKind.BOLD;
break;
case DIVINE_NAME:
kind = FormattingInstructionKind.DIVINE_NAME;
break;
case EMPHASIS:
case ITALIC:
kind = FormattingInstructionKind.ITALIC;
break;
case LINE_THROUGH:
kind = FormattingInstructionKind.STRIKE_THROUGH;
break;
case SUB:
kind = FormattingInstructionKind.SUBSCRIPT;
break;
case SUPER:
kind = FormattingInstructionKind.SUPERSCRIPT;
break;
case UNDERLINE:
kind = FormattingInstructionKind.UNDERLINE;
break;
case UPPERCASE:
case ACROSTIC:
case ILLUMINATED:
case LOWERCASE:
case NORMAL:
case OVERLINE:
case SMALL_CAPS:
default:
kind = null;
break;
}
if (kind == null)
throw new IOException(fs.toString());
Visitor<RuntimeException> contentVisitor = visitor;
if (kind != null) {
contentVisitor = contentVisitor.visitFormattingInstruction(kind);
}
List<Serializable> content = ((STYLE) nn).getContent();
boolean subContentFound = parseContent(contentVisitor, content, abbrMap);
if (!subContentFound)
visitEmptyMarker(contentVisitor);
} else if ((name.equals("gr") || name.equals("GRAM")) && nn instanceof GRAM) {
GRAM gram = (GRAM) nn;
Visitor<RuntimeException> strongVisitor = visitor;
int[] strongs = null;
if (gram.getStr() != null) {
List<String> strongList = new ArrayList<String>(Arrays.asList(gram.getStr().trim().replaceAll(" ++", " ").replace("G", "").replace("H", "").split(" ")));
for (int i = 0; i < strongList.size(); i++) {
if (!strongList.get(i).matches("[0-9]+")) {
System.out.println("WARNING: Skipping invalid Strong number " + strongList.get(i));
strongList.remove(i);
i--;
}
}
strongs = new int[strongList.size()];
for (int i = 0; i < strongs.length; i++) {
strongs[i] = Integer.parseInt(strongList.get(i));
}
}
String[] rmac = null;
if (gram.getRmac() != null && gram.getRmac().length() > 0) {
List<String> rmacList = new ArrayList<String>(Arrays.asList(gram.getRmac().toUpperCase().split(" ")));
for (int i = 0; i < rmacList.size(); i++) {
String rmacValue = rmacList.get(i);
if (rmacValue.endsWith("-"))
rmacValue = rmacValue.substring(0, rmacValue.length() - 1);
rmacList.set(i, rmacValue);
if (!rmacValue.matches(Utils.RMAC_REGEX)) {
System.out.println("WARNING: Skipping invalid RMAC: " + rmacValue);
rmacList.remove(i);
i--;
}
rmac = (String[]) rmacList.toArray(new String[rmacList.size()]);
}
}
if (strongs != null && strongs.length == 0)
strongs = null;
if (rmac != null && rmac.length == 0)
rmac = null;
if (strongs != null || rmac != null)
strongVisitor = strongVisitor.visitGrammarInformation(strongs, rmac, null);
if (!parseContent(strongVisitor, gram.getContent(), abbrMap) && strongVisitor != visitor) {
visitEmptyMarker(strongVisitor);
}
} else if (name.equals("NOTE") && nn instanceof NOTE) {
NOTE note = (NOTE) nn;
if (note.getContent().size() == 0)
continue;
Visitor<RuntimeException> v;
v = visitor.visitFootnote();
boolean subContentFound = parseContent(v, note.getContent(), abbrMap);
if (!subContentFound)
visitEmptyMarker(v);
contentFound = true;
} else if (name.equals("BR")) {
visitor.visitLineBreak(LineBreakKind.NEWLINE);
contentFound = true;
} else {
throw new IOException(name);
}
contentFound = true;
} else {
throw new IOException(n.getClass().toString());
}
}
return contentFound;
}
use of biblemulticonverter.schema.haggai.STYLE in project BibleMultiConverter by schierlm.
the class HaggaiXML method createXMLBible.
protected XMLBIBLE createXMLBible(Bible bible) throws Exception {
ObjectFactory of = new ObjectFactory();
XMLBIBLE doc = of.createXMLBIBLE();
doc.setBiblename(bible.getName());
doc.setINFORMATION(new JAXBElement<INFORMATION>(new QName("INFORMATION"), INFORMATION.class, of.createINFORMATION()));
MetadataBook metadata = bible.getMetadataBook();
if (metadata != null) {
for (String key : metadata.getKeys()) {
String value = metadata.getValue(key);
if (value.equals("-empty-"))
value = "";
if (key.equals(MetadataBookKey.status.toString())) {
doc.setStatus(ModuleStatus.fromValue(value));
} else if (key.equals(MetadataBookKey.version.toString())) {
doc.setVersion(value);
} else if (key.equals(MetadataBookKey.revision.toString())) {
doc.setRevision(new BigInteger(value));
} else if (!key.contains("@")) {
Pattern regex = INFORMATION_FIELDS.get(MetadataBookKey.valueOf(key));
if (regex != null && regex.matcher(value).matches())
doc.getINFORMATION().getValue().getTitleOrCreatorOrDescription().add(new JAXBElement<String>(new QName(key), String.class, value));
}
}
}
for (Book bk : bible.getBooks()) {
if (bk.getId().equals(BookID.METADATA))
continue;
if (bk.getId().getZefID() <= 0) {
System.out.println("WARNING: Unable to export book " + bk.getAbbr());
continue;
}
BIBLEBOOK bb = of.createBIBLEBOOK();
bb.setBnumber(BigInteger.valueOf(bk.getId().getZefID()));
bb.setBsname(bk.getShortName());
bb.setBname(bk.getLongName());
int cnumber = 0;
for (Chapter ccc : bk.getChapters()) {
cnumber++;
if (ccc.getVerses().size() == 0)
continue;
CHAPTER cc = of.createCHAPTER();
cc.setCnumber(BigInteger.valueOf(cnumber));
bb.getCAPTIONOrPROLOGOrREMARK().add(new JAXBElement<CHAPTER>(new QName("CHAPTER"), CHAPTER.class, cc));
if (ccc.getProlog() != null) {
PROLOG prolog = of.createPROLOG();
ccc.getProlog().accept(new CreateContentVisitor(of, prolog.getContent(), null));
cc.getCAPTIONOrPARAGRAPHOrVERSE().add(new JAXBElement<PROLOG>(new QName("PROLOG"), PROLOG.class, prolog));
}
for (VirtualVerse vv : ccc.createVirtualVerses()) {
for (Headline h : vv.getHeadlines()) {
CAPTION caption = of.createCAPTION();
h.accept(new CreateContentVisitor(of, caption.getContent(), null));
cc.getCAPTIONOrPARAGRAPHOrVERSE().add(new JAXBElement<CAPTION>(new QName("CAPTION"), CAPTION.class, caption));
}
VERSE vers = of.createVERSE();
vers.setVnumber(BigInteger.valueOf(vv.getNumber()));
for (Verse v : vv.getVerses()) {
if (!v.getNumber().equals("" + vv.getNumber())) {
STYLE verseNum = of.createSTYLE();
verseNum.setFs(TStyleFix.BOLD);
verseNum.getContent().add("(" + v.getNumber() + ")");
vers.getContent().add(new JAXBElement<STYLE>(new QName("STYLE"), STYLE.class, verseNum));
vers.getContent().add(" ");
}
v.accept(new CreateContentVisitor(of, vers.getContent(), vers));
}
cc.getCAPTIONOrPARAGRAPHOrVERSE().add(new JAXBElement<VERSE>(new QName("VERSE"), VERSE.class, vers));
}
}
doc.getBIBLEBOOK().add(new JAXBElement<BIBLEBOOK>(new QName("BIBLEBOOK"), BIBLEBOOK.class, bb));
}
return doc;
}
Aggregations