From 2303d9aacf014fa44b3381a303d93b141788260e Mon Sep 17 00:00:00 2001 From: Sami Abdel Malik Date: Wed, 18 Dec 2024 16:12:43 -0500 Subject: [PATCH 1/3] Make verse mapping separate from KJV versification --- .../VersificationToKJVMapper.java | 14 +- .../versification/system/SystemKJV.java | 168 +----- .../versification/system/SystemMapper.java | 562 ++++++++++++++++++ .../versification/system/Versifications.java | 5 + 4 files changed, 575 insertions(+), 174 deletions(-) create mode 100644 src/main/java/org/crosswire/jsword/versification/system/SystemMapper.java diff --git a/src/main/java/org/crosswire/jsword/versification/VersificationToKJVMapper.java b/src/main/java/org/crosswire/jsword/versification/VersificationToKJVMapper.java index c857461d1..7cf76eaf2 100644 --- a/src/main/java/org/crosswire/jsword/versification/VersificationToKJVMapper.java +++ b/src/main/java/org/crosswire/jsword/versification/VersificationToKJVMapper.java @@ -131,7 +131,7 @@ public class VersificationToKJVMapper { * @param mapping the mappings from one versification to another */ public VersificationToKJVMapper(Versification nonKjv, final FileVersificationMapping mapping) { - absentVerses = createEmptyPassage(KJV); + absentVerses = createEmptyPassage(Mapper); toKJVMappings = new HashMap>(); fromKJVMappings = new HashMap(); this.nonKjv = nonKjv; @@ -182,7 +182,7 @@ private void processEntry(final KeyValuePair entry) throws NoSuchKeyException { // The right hand side can start with ? which means that the left maps to nothing in the KJV. // The ? leads a section name - QualifiedKey kjv = getRange(KJV, kjvHand, left.getKey()); + QualifiedKey kjv = getRange(Mapper, kjvHand, left.getKey()); addMappings(left, kjv); } @@ -540,7 +540,7 @@ public List map(QualifiedKey qualifiedKey) { //then we found no mapping, so we're essentially going to return the same key back... //unless it's a verse 0 and then we'll check the global flag. kjvKeys = new ArrayList(); - kjvKeys.add(qualifiedKey.reversify(KJV)); + kjvKeys.add(qualifiedKey.reversify(Mapper)); return kjvKeys; } return kjvKeys; @@ -568,7 +568,7 @@ public VerseKey unmap(final QualifiedKey kjvVerse) { if (left == null) { VerseKey vk = kjvVerse.getKey(); if (vk != null && this.absentVerses.contains(vk)) { - return createEmptyPassage(KJV); + return createEmptyPassage(Mapper); } return kjvVerse.reversify(this.nonKjv).getKey(); } @@ -611,7 +611,7 @@ public void dump(PrintStream out) { List kjvVerses = entry.getValue(); String osisRef = entry.getKey().getOsisRef(); for (QualifiedKey q : kjvVerses) { - out.println(String.format("\t(%s) %s => (KJV) %s", + out.println(String.format("\t(%s) %s => (Mapper) %s", nonKjvName, osisRef, q.toString())); @@ -625,7 +625,7 @@ public void dump(PrintStream out) { out.println(" Backwards mappings from KJV"); out.println(" ******************************"); for (Map.Entry entry : this.fromKJVMappings.entrySet()) { - out.println(String.format("\t(KJV): %s => (%s) %s", + out.println(String.format("\t(Mapper): %s => (%s) %s", entry.getKey().toString(), nonKjvName, entry.getValue().getOsisRef())); @@ -659,6 +659,6 @@ private Passage createEmptyPassage(Versification versification) { private OsisParser osisParser = new OsisParser(); - private static final Versification KJV = Versifications.instance().getVersification(Versifications.DEFAULT_V11N); + private static final Versification Mapper = Versifications.instance().getVersification(Versifications.MAPPER_V11N); private static final Logger LOGGER = LoggerFactory.getLogger(VersificationToKJVMapper.class); } diff --git a/src/main/java/org/crosswire/jsword/versification/system/SystemKJV.java b/src/main/java/org/crosswire/jsword/versification/system/SystemKJV.java index 39f8c8e4a..9c25ffe04 100644 --- a/src/main/java/org/crosswire/jsword/versification/system/SystemKJV.java +++ b/src/main/java/org/crosswire/jsword/versification/system/SystemKJV.java @@ -41,7 +41,7 @@ public class SystemKJV extends Versification { public static final String V11N_NAME = "KJV"; - /* protected */ static final BibleBook[] BOOKS_OT = SystemDefault.BOOKS_OTA; + /* protected */ static final BibleBook[] BOOKS_OT = SystemDefault.BOOKS_OT; /* protected */ static final BibleBook[] BOOKS_NT = SystemDefault.BOOKS_NT; @@ -278,172 +278,6 @@ public class SystemKJV extends Versification { { 14, 17, 18, 6, }, - // I Esdras - { - 58, 30, 24, 63, 73, 34, 15, 96, 55, - }, - // II Esdras - { - 40, 48, 36, 52, 56, 59, 70, 63, 47, 59, - 46, 51, 58, 48, 63, 78, - }, - // Tobit - { - 22, 14, 17, 21, 22, 17, 18, 21, 6, 12, - 19, 22, 18, 15, - }, - // Judith - { - 16, 28, 10, 15, 24, 21, 32, 36, 14, 23, - 23, 20, 20, 19, 13, 25, - }, - // Additions to Esther - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, - 12, 6, 18, 19, 16, 24, - }, - // Wisdom - { - 16, 24, 19, 20, 23, 25, 30, 21, 18, 21, - 26, 27, 19, 31, 19, 29, 21, 25, 22, - }, - // Sirach - { - 30, 18, 31, 31, 15, 37, 36, 19, 18, 31, - 34, 18, 26, 27, 20, 30, 32, 33, 30, 32, - 28, 27, 28, 34, 26, 29, 30, 26, 28, 25, - 31, 24, 31, 26, 20, 26, 31, 34, 35, 30, - 24, 25, 33, 22, 26, 20, 25, 25, 16, 29, - 30, - }, - // Baruch - { - 22, 35, 37, 37, 9, 73, - }, - // Prayer of Azariah - { - 68, - }, - // Susanna - { - 64, - }, - // Bel and the Dragon - { - 42, - }, - // Prayer of Manasses - { - 1, - }, - // I Maccabees - { - 64, 70, 60, 61, 68, 63, 50, 32, 73, 89, - 74, 53, 53, 49, 41, 24, - }, - // II Maccabees - { - 36, 32, 40, 50, 27, 31, 42, 36, 29, 38, - 38, 45, 26, 46, 39, - }, - // Greek Esther - { - 22, 23, 15, 17, 14, 14, 10, 17, 32, 13, - 12, 6, 18, 19, 16, 24, - }, - // Psalms of Solomon - { - 8, 37, 12, 25, 19, 6, 10, 34, 11, 8, - 9, 6, 12, 10, 13, 15, 46, 12, - }, - // III Maccabees - { - 29, 33, 30, 21, 51, 41, 23, - }, - // IV Maccabees - { - 35, 24, 21, 26, 38, 35, 23, 29, 32, 21, - 27, 19, 27, 20, 32, 25, 24, 24, - }, - // Additional Psalms - { - 7, 6, 6, 20, 21, - }, - // 1 Enoch - { - 9, 3, 9, 1, 10, 8, 6, 4, 11, 22, - 2, 6, 10, 25, 12, 4, 8, 16, 3, 8, - 10, 14, 4, 6, 7, 6, 5, 3, 2, 3, - 3, 6, 4, 3, 1, 4, 6, 6, 14, 10, - 9, 3, 4, 1, 6, 8, 4, 10, 4, 5, - 5, 9, 7, 10, 4, 8, 3, 6, 3, 25, - 13, 16, 12, 2, 12, 3, 13, 5, 30, 4, - 17, 37, 8, 17, 9, 14, 9, 17, 6, 8, - 10, 20, 11, 6, 10, 6, 4, 3, 77, 43, - 19, 17, 14, 11, 7, 8, 10, 16, 16, 13, - 9, 11, 15, 13, 2, 19, 3, 15, - }, - // Odes - { - 19, 43, 10, 20, 20, 19, 45, 88, 79, 88, - 55, 32, 79, 46, - }, - // 1 Meqabyan - { - 28, 28, 38, 37, 39, 38, 33, 35, 10, 8, - 8, 44, 27, 23, 20, 9, 8, 12, 17, 4, - 31, 10, 7, 22, 18, 5, 20, 49, 17, 16, - 7, 4, 11, 18, 8, 46, - }, - // 2 Meqabyan - { - 13, 11, 29, 32, 18, 24, 8, 24, 27, 28, - 25, 15, 14, 36, 21, 15, 12, 14, 15, 14, - 28, - }, - // 3 Meqabyan - { - 24, 23, 11, 36, 16, 16, 5, 12, 36, - 29, - }, - // Testament of 12 Patriarchs - { - 7, 9, 19, 26, 7, 10, 7, 9, 8, 8, - 20, 12, - }, - // Jubilees - { - 29, 33, 35, 33, 32, 38, 39, 30, 14, 36, - 24, 31, 29, 24, 34, 31, 18, 19, 31, 13, - 26, 30, 32, 33, 23, 35, 27, 30, 20, 26, - 32, 34, 23, 21, 27, 24, 25, 24, 18, 13, - 28, 25, 24, 34, 16, 16, 12, 19, 23, 13 - }, - // 2 Baruch - { - 5, 1, 9, 7, 7, 9, 1, 5, 2, 19, - 7, 5, 12, 19, 8, 1, 4, 2, 8, 6, - 26, 8, 7, 4, 4, 1, 15, 7, 8, 5, - 5, 9, 3, 1, 4, 11, 1, 4, 8, 4, - 6, 8, 3, 15, 2, 7, 2, 50, 3, 4, - 16, 7, 12, 22, 8, 16, 3, 2, 12, 2, - 8, 8, 11, 10, 2, 8, 9, 8, 5, 10, - 2, 6, 7, 4, 8, 5, 26, 7, 4, 7, - 4, 9, 23, 11, 15, 1, 1, - }, - // 3 Baruch - { - 10, 7, 8, 17, 3, 16, 6, 7, 8, 9, - 9, 8, 5, 2, 4, 8, 4, - }, - // 4 Baruch - { - 12, 10, 22, 12, 35, 25, 37, 12, 32, - }, - // Epistle to Laodicea - { - 20, - }, }; diff --git a/src/main/java/org/crosswire/jsword/versification/system/SystemMapper.java b/src/main/java/org/crosswire/jsword/versification/system/SystemMapper.java new file mode 100644 index 000000000..62862ac05 --- /dev/null +++ b/src/main/java/org/crosswire/jsword/versification/system/SystemMapper.java @@ -0,0 +1,562 @@ +package org.crosswire.jsword.versification.system; + +import org.crosswire.jsword.versification.BibleBook; +import org.crosswire.jsword.versification.Versification; + +/** + * The Mapper versification is a special versification used only for the mapping logic + * Originally, the mapper used KJV versification which does not include the apocrypha + * This mapper includes most of the apocryphal books. + * + * @see gnu.lgpl.License for license details.
v + * The copyright to this program is held by it's authors. + * @author DM Smith + */ +public class SystemMapper extends Versification { + /** + * Build the "Mapper" Versification. + */ + /* protected */ SystemMapper() { + super(V11N_NAME, BOOKS_OT, BOOKS_NT, LAST_VERSE_OT, LAST_VERSE_NT); + } + + public static final String V11N_NAME = "Mapper"; + + /* protected */ static final BibleBook[] BOOKS_OT = SystemDefault.BOOKS_OTA; + + /* protected */ static final BibleBook[] BOOKS_NT = SystemDefault.BOOKS_NT; + + /** Constant for the max verse number in each chapter */ + /* protected */ static final int[][] LAST_VERSE_OT = + { + // Genesis + { + 31, 25, 24, 26, 32, 22, 24, 22, 29, 32, + 32, 20, 18, 24, 21, 16, 27, 33, 38, 18, + 34, 24, 20, 67, 34, 35, 46, 22, 35, 43, + 55, 32, 20, 31, 29, 43, 36, 30, 23, 23, + 57, 38, 34, 34, 28, 34, 31, 22, 33, 26, + }, + // Exodus + { + 22, 25, 22, 31, 23, 30, 25, 32, 35, 29, + 10, 51, 22, 31, 27, 36, 16, 27, 25, 26, + 36, 31, 33, 18, 40, 37, 21, 43, 46, 38, + 18, 35, 23, 35, 35, 38, 29, 31, 43, 38, + }, + // Leviticus + { + 17, 16, 17, 35, 19, 30, 38, 36, 24, 20, + 47, 8, 59, 57, 33, 34, 16, 30, 37, 27, + 24, 33, 44, 23, 55, 46, 34, + }, + // Numbers + { + 54, 34, 51, 49, 31, 27, 89, 26, 23, 36, + 35, 16, 33, 45, 41, 50, 13, 32, 22, 29, + 35, 41, 30, 25, 18, 65, 23, 31, 40, 16, + 54, 42, 56, 29, 34, 13, + }, + // Deuteronomy + { + 46, 37, 29, 49, 33, 25, 26, 20, 29, 22, + 32, 32, 18, 29, 23, 22, 20, 22, 21, 20, + 23, 30, 25, 22, 19, 19, 26, 68, 29, 20, + 30, 52, 29, 12, + }, + // Joshua + { + 18, 24, 17, 24, 15, 27, 26, 35, 27, 43, + 23, 24, 33, 15, 63, 10, 18, 28, 51, 9, + 45, 34, 16, 33, + }, + // Judges + { + 36, 23, 31, 24, 31, 40, 25, 35, 57, 18, + 40, 15, 25, 20, 20, 31, 13, 31, 30, 48, + 25, + }, + // Ruth + { + 22, 23, 18, 22, + }, + // I Samuel + { + 28, 36, 21, 22, 12, 21, 17, 22, 27, 27, + 15, 25, 23, 52, 35, 23, 58, 30, 24, 42, + 15, 23, 29, 22, 44, 25, 12, 25, 11, 31, + 13, + }, + // II Samuel + { + 27, 32, 39, 12, 25, 23, 29, 18, 13, 19, + 27, 31, 39, 33, 37, 23, 29, 33, 43, 26, + 22, 51, 39, 25, + }, + // I Kings + { + 53, 46, 28, 34, 18, 38, 51, 66, 28, 29, + 43, 33, 34, 31, 34, 34, 24, 46, 21, 43, + 29, 53, + }, + // II Kings + { + 18, 25, 27, 44, 27, 33, 20, 29, 37, 36, + 21, 21, 25, 29, 38, 20, 41, 37, 37, 21, + 26, 20, 37, 20, 30, + }, + // I Chronicles + { + 54, 55, 24, 43, 26, 81, 40, 40, 44, 14, + 47, 40, 14, 17, 29, 43, 27, 17, 19, 8, + 30, 19, 32, 31, 31, 32, 34, 21, 30, + }, + // II Chronicles + { + 17, 18, 17, 22, 14, 42, 22, 18, 31, 19, + 23, 16, 22, 15, 19, 14, 19, 34, 11, 37, + 20, 12, 21, 27, 28, 23, 9, 27, 36, 27, + 21, 33, 25, 33, 27, 23, + }, + // Ezra + { + 11, 70, 13, 24, 17, 22, 28, 36, 15, 44, + }, + // Nehemiah + { + 11, 20, 32, 23, 19, 19, 73, 18, 38, 39, + 36, 47, 31, + }, + // Esther + { + 22, 23, 15, 17, 14, 14, 10, 17, 32, 3, + }, + // Job + { + 22, 13, 26, 21, 27, 30, 21, 22, 35, 22, + 20, 25, 28, 22, 35, 22, 16, 21, 29, 29, + 34, 30, 17, 25, 6, 14, 23, 28, 25, 31, + 40, 22, 33, 37, 16, 33, 24, 41, 30, 24, + 34, 17, + }, + // Psalms + { + 6, 12, 8, 8, 12, 10, 17, 9, 20, 18, + 7, 8, 6, 7, 5, 11, 15, 50, 14, 9, + 13, 31, 6, 10, 22, 12, 14, 9, 11, 12, + 24, 11, 22, 22, 28, 12, 40, 22, 13, 17, + 13, 11, 5, 26, 17, 11, 9, 14, 20, 23, + 19, 9, 6, 7, 23, 13, 11, 11, 17, 12, + 8, 12, 11, 10, 13, 20, 7, 35, 36, 5, + 24, 20, 28, 23, 10, 12, 20, 72, 13, 19, + 16, 8, 18, 12, 13, 17, 7, 18, 52, 17, + 16, 15, 5, 23, 11, 13, 12, 9, 9, 5, + 8, 28, 22, 35, 45, 48, 43, 13, 31, 7, + 10, 10, 9, 8, 18, 19, 2, 29, 176, 7, + 8, 9, 4, 8, 5, 6, 5, 6, 8, 8, + 3, 18, 3, 3, 21, 26, 9, 8, 24, 13, + 10, 7, 12, 15, 21, 10, 20, 14, 9, 6, + }, + // Proverbs + { + 33, 22, 35, 27, 23, 35, 27, 36, 18, 32, + 31, 28, 25, 35, 33, 33, 28, 24, 29, 30, + 31, 29, 35, 34, 28, 28, 27, 28, 27, 33, + 31, + }, + // Ecclesiastes + { + 18, 26, 22, 16, 20, 12, 29, 17, 18, 20, + 10, 14, + }, + // Song of Solomon + { + 17, 17, 11, 16, 16, 13, 13, 14, + }, + // Isaiah + { + 31, 22, 26, 6, 30, 13, 25, 22, 21, 34, + 16, 6, 22, 32, 9, 14, 14, 7, 25, 6, + 17, 25, 18, 23, 12, 21, 13, 29, 24, 33, + 9, 20, 24, 17, 10, 22, 38, 22, 8, 31, + 29, 25, 28, 28, 25, 13, 15, 22, 26, 11, + 23, 15, 12, 17, 13, 12, 21, 14, 21, 22, + 11, 12, 19, 12, 25, 24, + }, + // Jeremiah + { + 19, 37, 25, 31, 31, 30, 34, 22, 26, 25, + 23, 17, 27, 22, 21, 21, 27, 23, 15, 18, + 14, 30, 40, 10, 38, 24, 22, 17, 32, 24, + 40, 44, 26, 22, 19, 32, 21, 28, 18, 16, + 18, 22, 13, 30, 5, 28, 7, 47, 39, 46, + 64, 34, + }, + // Lamentations + { + 22, 22, 66, 22, 22, + }, + // Ezekiel + { + 28, 10, 27, 17, 17, 14, 27, 18, 11, 22, + 25, 28, 23, 23, 8, 63, 24, 32, 14, 49, + 32, 31, 49, 27, 17, 21, 36, 26, 21, 26, + 18, 32, 33, 31, 15, 38, 28, 23, 29, 49, + 26, 20, 27, 31, 25, 24, 23, 35, + }, + // Daniel + { + 21, 49, 30, 37, 31, 28, 28, 27, 27, 21, + 45, 13, + }, + // Hosea + { + 11, 23, 5, 19, 15, 11, 16, 14, 17, 15, + 12, 14, 16, 9, + }, + // Joel + { + 20, 32, 21, + }, + // Amos + { + 15, 16, 15, 13, 27, 14, 17, 14, 15, + }, + // Obadiah + { + 21, + }, + // Jonah + { + 17, 10, 10, 11, + }, + // Micah + { + 16, 13, 12, 13, 15, 16, 20, + }, + // Nahum + { + 15, 13, 19, + }, + // Habakkuk + { + 17, 20, 19, + }, + // Zephaniah + { + 18, 15, 20, + }, + // Haggai + { + 15, 23, + }, + // Zechariah + { + 21, 13, 10, 14, 11, 15, 14, 23, 17, 12, + 17, 14, 9, 21, + }, + // Malachi + { + 14, 17, 18, 6, + }, + // I Esdras + { + 58, 30, 24, 63, 73, 34, 15, 96, 55, + }, + // II Esdras + { + 40, 48, 36, 52, 56, 59, 70, 63, 47, 59, + 46, 51, 58, 48, 63, 78, + }, + // Tobit + { + 22, 14, 17, 21, 22, 17, 18, 21, 6, 12, + 19, 22, 18, 15, + }, + // Judith + { + 16, 28, 10, 15, 24, 21, 32, 36, 14, 23, + 23, 20, 20, 19, 13, 25, + }, + // Additions to Esther + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, + 12, 6, 18, 19, 16, 24, + }, + // Wisdom + { + 16, 24, 19, 20, 23, 25, 30, 21, 18, 21, + 26, 27, 19, 31, 19, 29, 21, 25, 22, + }, + // Sirach + { + 30, 18, 31, 31, 15, 37, 36, 19, 18, 31, + 34, 18, 26, 27, 20, 30, 32, 33, 30, 32, + 28, 27, 28, 34, 26, 29, 30, 26, 28, 25, + 31, 24, 31, 26, 20, 26, 31, 34, 35, 30, + 24, 25, 33, 22, 26, 20, 25, 25, 16, 29, + 30, + }, + // Baruch + { + 22, 35, 37, 37, 9, 73, + }, + // Prayer of Azariah + { + 68, + }, + // Susanna + { + 64, + }, + // Bel and the Dragon + { + 42, + }, + // Prayer of Manasses + { + 1, + }, + // I Maccabees + { + 64, 70, 60, 61, 68, 63, 50, 32, 73, 89, + 74, 53, 53, 49, 41, 24, + }, + // II Maccabees + { + 36, 32, 40, 50, 27, 31, 42, 36, 29, 38, + 38, 45, 26, 46, 39, + }, + // Greek Esther + { + 22, 23, 15, 17, 14, 14, 10, 17, 32, 13, + 12, 6, 18, 19, 16, 24, + }, + // Psalms of Solomon + { + 8, 37, 12, 25, 19, 6, 10, 34, 11, 8, + 9, 6, 12, 10, 13, 15, 46, 12, + }, + // III Maccabees + { + 29, 33, 30, 21, 51, 41, 23, + }, + // IV Maccabees + { + 35, 24, 21, 26, 38, 35, 23, 29, 32, 21, + 27, 19, 27, 20, 32, 25, 24, 24, + }, + // Additional Psalms + { + 7, 6, 6, 20, 21, + }, + // 1 Enoch + { + 9, 3, 9, 1, 10, 8, 6, 4, 11, 22, + 2, 6, 10, 25, 12, 4, 8, 16, 3, 8, + 10, 14, 4, 6, 7, 6, 5, 3, 2, 3, + 3, 6, 4, 3, 1, 4, 6, 6, 14, 10, + 9, 3, 4, 1, 6, 8, 4, 10, 4, 5, + 5, 9, 7, 10, 4, 8, 3, 6, 3, 25, + 13, 16, 12, 2, 12, 3, 13, 5, 30, 4, + 17, 37, 8, 17, 9, 14, 9, 17, 6, 8, + 10, 20, 11, 6, 10, 6, 4, 3, 77, 43, + 19, 17, 14, 11, 7, 8, 10, 16, 16, 13, + 9, 11, 15, 13, 2, 19, 3, 15, + }, + // Odes + { + 19, 43, 10, 20, 20, 19, 45, 88, 79, 88, + 55, 32, 79, 46, + }, + // 1 Meqabyan + { + 28, 28, 38, 37, 39, 38, 33, 35, 10, 8, + 8, 44, 27, 23, 20, 9, 8, 12, 17, 4, + 31, 10, 7, 22, 18, 5, 20, 49, 17, 16, + 7, 4, 11, 18, 8, 46, + }, + // 2 Meqabyan + { + 13, 11, 29, 32, 18, 24, 8, 24, 27, 28, + 25, 15, 14, 36, 21, 15, 12, 14, 15, 14, + 28, + }, + // 3 Meqabyan + { + 24, 23, 11, 36, 16, 16, 5, 12, 36, + 29, + }, + // Testament of 12 Patriarchs + { + 7, 9, 19, 26, 7, 10, 7, 9, 8, 8, + 20, 12, + }, + // Jubilees + { + 29, 33, 35, 33, 32, 38, 39, 30, 14, 36, + 24, 31, 29, 24, 34, 31, 18, 19, 31, 13, + 26, 30, 32, 33, 23, 35, 27, 30, 20, 26, + 32, 34, 23, 21, 27, 24, 25, 24, 18, 13, + 28, 25, 24, 34, 16, 16, 12, 19, 23, 13 + }, + // 2 Baruch + { + 5, 1, 9, 7, 7, 9, 1, 5, 2, 19, + 7, 5, 12, 19, 8, 1, 4, 2, 8, 6, + 26, 8, 7, 4, 4, 1, 15, 7, 8, 5, + 5, 9, 3, 1, 4, 11, 1, 4, 8, 4, + 6, 8, 3, 15, 2, 7, 2, 50, 3, 4, + 16, 7, 12, 22, 8, 16, 3, 2, 12, 2, + 8, 8, 11, 10, 2, 8, 9, 8, 5, 10, + 2, 6, 7, 4, 8, 5, 26, 7, 4, 7, + 4, 9, 23, 11, 15, 1, 1, + }, + // 3 Baruch + { + 10, 7, 8, 17, 3, 16, 6, 7, 8, 9, + 9, 8, 5, 2, 4, 8, 4, + }, + // 4 Baruch + { + 12, 10, 22, 12, 35, 25, 37, 12, 32, + }, + // Epistle to Laodicea + { + 20, + }, + }; + + + /* protected */ static final int[][] LAST_VERSE_NT = + { + // Matthew + { + 25, 23, 17, 25, 48, 34, 29, 34, 38, 42, + 30, 50, 58, 36, 39, 28, 27, 35, 30, 34, + 46, 46, 39, 51, 46, 75, 66, 20, + }, + // Mark + { + 45, 28, 35, 41, 43, 56, 37, 38, 50, 52, + 33, 44, 37, 72, 47, 20, + }, + // Luke + { + 80, 52, 38, 44, 39, 49, 50, 56, 62, 42, + 54, 59, 35, 35, 32, 31, 37, 43, 48, 47, + 38, 71, 56, 53, + }, + // John + { + 51, 25, 36, 54, 47, 71, 53, 59, 41, 42, + 57, 50, 38, 31, 27, 33, 26, 40, 42, 31, + 25, + }, + // Acts + { + 26, 47, 26, 37, 42, 15, 60, 40, 43, 48, + 30, 25, 52, 28, 41, 40, 34, 28, 41, 38, + 40, 30, 35, 27, 27, 32, 44, 31, + }, + // Romans + { + 32, 29, 31, 25, 21, 23, 25, 39, 33, 21, + 36, 21, 14, 23, 33, 27, + }, + // I Corinthians + { + 31, 16, 23, 21, 13, 20, 40, 13, 27, 33, + 34, 31, 13, 40, 58, 24, + }, + // II Corinthians + { + 24, 17, 18, 18, 21, 18, 16, 24, 15, 18, + 33, 21, 14, + }, + // Galatians + { + 24, 21, 29, 31, 26, 18, + }, + // Ephesians + { + 23, 22, 21, 32, 33, 24, + }, + // Philippians + { + 30, 30, 21, 23, + }, + // Colossians + { + 29, 23, 25, 18, + }, + // I Thessalonians + { + 10, 20, 13, 18, 28, + }, + // II Thessalonians + { + 12, 17, 18, + }, + // I Timothy + { + 20, 15, 16, 16, 25, 21, + }, + // II Timothy + { + 18, 26, 17, 22, + }, + // Titus + { + 16, 15, 15, + }, + // Philemon + { + 25, + }, + // Hebrews + { + 14, 18, 19, 16, 14, 20, 28, 13, 28, 39, + 40, 29, 25, + }, + // James + { + 27, 26, 18, 17, 20, + }, + // I Peter + { + 25, 25, 22, 19, 14, + }, + // II Peter + { + 21, 22, 18, + }, + // I John + { + 10, 29, 24, 21, 21, + }, + // II John + { + 13, + }, + // III John + { + 14, + }, + // Jude + { + 25, + }, + // Revelation of John + { + 20, 29, 22, 11, 14, 17, 17, 13, 21, 11, + 19, 17, 18, 20, 8, 21, 18, 24, 21, 15, + 27, 21, + }, + }; + + /** + * Serialization ID + */ + private static final long serialVersionUID = 3365882007485277008L; +} diff --git a/src/main/java/org/crosswire/jsword/versification/system/Versifications.java b/src/main/java/org/crosswire/jsword/versification/system/Versifications.java index df668747a..3558c453d 100644 --- a/src/main/java/org/crosswire/jsword/versification/system/Versifications.java +++ b/src/main/java/org/crosswire/jsword/versification/system/Versifications.java @@ -43,6 +43,7 @@ public final class Versifications { * This is subject to change at any time. */ public static final String DEFAULT_V11N = SystemKJV.V11N_NAME; + public static final String MAPPER_V11N = SystemMapper.V11N_NAME; /** * Get the singleton instance of Versifications. @@ -148,6 +149,9 @@ private Versification fluff(String name) { if (SystemVulg.V11N_NAME.equals(name)) { return new SystemVulg(); } + if (SystemMapper.V11N_NAME.equals(name)) { + return new SystemVulg(); + } return null; } @@ -204,6 +208,7 @@ private Versifications() { known.add(SystemSynodal.V11N_NAME); known.add(SystemSynodalProt.V11N_NAME); known.add(SystemVulg.V11N_NAME); + known.add(SystemMapper.V11N_NAME); fluffed = new HashMap(); } From 333bffdd0433ff7051cbead427ed203486207b05 Mon Sep 17 00:00:00 2001 From: Sami Abdel Malik Date: Wed, 18 Dec 2024 21:57:08 -0500 Subject: [PATCH 2/3] Added missing change for the mapper --- .../crosswire/jsword/versification/VersificationsMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/crosswire/jsword/versification/VersificationsMapper.java b/src/main/java/org/crosswire/jsword/versification/VersificationsMapper.java index fcc6b59e9..667d0bc63 100644 --- a/src/main/java/org/crosswire/jsword/versification/VersificationsMapper.java +++ b/src/main/java/org/crosswire/jsword/versification/VersificationsMapper.java @@ -256,7 +256,7 @@ private void ensure(final Versification versification) { } private static volatile VersificationsMapper instance; - private static final Versification KJV = Versifications.instance().getVersification(Versifications.DEFAULT_V11N); + private static final Versification KJV = Versifications.instance().getVersification(Versifications.MAPPER_V11N); private static final Map MAPPERS = new HashMap(); private static final Logger LOGGER = LoggerFactory.getLogger(VersificationsMapper.class); } From 733ea3a9cd81d2b3767815a1a82349642ccb4ec0 Mon Sep 17 00:00:00 2001 From: Sami Abdel Malik Date: Thu, 19 Dec 2024 11:25:24 -0500 Subject: [PATCH 3/3] Change mapping versification name name from Mapper to KJVAPlus --- .../jsword/versification/VersificationToKJVMapper.java | 10 +++++----- .../jsword/versification/VersificationsMapper.java | 10 +++++----- .../system/{SystemMapper.java => SystemKJVAPlus.java} | 6 +++--- .../jsword/versification/system/Versifications.java | 6 +++--- 4 files changed, 16 insertions(+), 16 deletions(-) rename src/main/java/org/crosswire/jsword/versification/system/{SystemMapper.java => SystemKJVAPlus.java} (99%) diff --git a/src/main/java/org/crosswire/jsword/versification/VersificationToKJVMapper.java b/src/main/java/org/crosswire/jsword/versification/VersificationToKJVMapper.java index 7cf76eaf2..db0df431d 100644 --- a/src/main/java/org/crosswire/jsword/versification/VersificationToKJVMapper.java +++ b/src/main/java/org/crosswire/jsword/versification/VersificationToKJVMapper.java @@ -131,7 +131,7 @@ public class VersificationToKJVMapper { * @param mapping the mappings from one versification to another */ public VersificationToKJVMapper(Versification nonKjv, final FileVersificationMapping mapping) { - absentVerses = createEmptyPassage(Mapper); + absentVerses = createEmptyPassage(KJVAPlus); toKJVMappings = new HashMap>(); fromKJVMappings = new HashMap(); this.nonKjv = nonKjv; @@ -182,7 +182,7 @@ private void processEntry(final KeyValuePair entry) throws NoSuchKeyException { // The right hand side can start with ? which means that the left maps to nothing in the KJV. // The ? leads a section name - QualifiedKey kjv = getRange(Mapper, kjvHand, left.getKey()); + QualifiedKey kjv = getRange(KJVAPlus, kjvHand, left.getKey()); addMappings(left, kjv); } @@ -540,7 +540,7 @@ public List map(QualifiedKey qualifiedKey) { //then we found no mapping, so we're essentially going to return the same key back... //unless it's a verse 0 and then we'll check the global flag. kjvKeys = new ArrayList(); - kjvKeys.add(qualifiedKey.reversify(Mapper)); + kjvKeys.add(qualifiedKey.reversify(KJVAPlus)); return kjvKeys; } return kjvKeys; @@ -568,7 +568,7 @@ public VerseKey unmap(final QualifiedKey kjvVerse) { if (left == null) { VerseKey vk = kjvVerse.getKey(); if (vk != null && this.absentVerses.contains(vk)) { - return createEmptyPassage(Mapper); + return createEmptyPassage(KJVAPlus); } return kjvVerse.reversify(this.nonKjv).getKey(); } @@ -659,6 +659,6 @@ private Passage createEmptyPassage(Versification versification) { private OsisParser osisParser = new OsisParser(); - private static final Versification Mapper = Versifications.instance().getVersification(Versifications.MAPPER_V11N); + private static final Versification KJVAPlus = Versifications.instance().getVersification(Versifications.KJVAPLUS_V11N); private static final Logger LOGGER = LoggerFactory.getLogger(VersificationToKJVMapper.class); } diff --git a/src/main/java/org/crosswire/jsword/versification/VersificationsMapper.java b/src/main/java/org/crosswire/jsword/versification/VersificationsMapper.java index 667d0bc63..b6c68f263 100644 --- a/src/main/java/org/crosswire/jsword/versification/VersificationsMapper.java +++ b/src/main/java/org/crosswire/jsword/versification/VersificationsMapper.java @@ -68,7 +68,7 @@ public final class VersificationsMapper { private VersificationsMapper() { // we have no mapper for the KJV, since everything maps map to the KJV, so we'll simply add an entry // in there to avoid ever trying to load it - MAPPERS.put(KJV, null); + MAPPERS.put(KJVAPlus, null); } /** @@ -135,7 +135,7 @@ public VerseKey mapVerse(Verse v, Versification targetVersification) { // and assume that it maps directly on to the KJV, // and thereby continue with the process kjvVerses = new ArrayList(); - final Verse reversifiedVerse = v.reversify(KJV); + final Verse reversifiedVerse = v.reversify(KJVAPlus); //check that the key actually exists if(reversifiedVerse != null) { kjvVerses.add(new QualifiedKey(reversifiedVerse)); @@ -145,9 +145,9 @@ public VerseKey mapVerse(Verse v, Versification targetVersification) { kjvVerses = mapper.map(new QualifiedKey(v)); } - if (KJV.equals(targetVersification)) { + if (KJVAPlus.equals(targetVersification)) { // we're done, so simply return the key we have so far. - return getKeyFromQualifiedKeys(KJV, kjvVerses); + return getKeyFromQualifiedKeys(KJVAPlus, kjvVerses); } // we're continuing, so we need to unmap from the KJV qualified key onto @@ -256,7 +256,7 @@ private void ensure(final Versification versification) { } private static volatile VersificationsMapper instance; - private static final Versification KJV = Versifications.instance().getVersification(Versifications.MAPPER_V11N); + private static final Versification KJVAPlus = Versifications.instance().getVersification(Versifications.KJVAPLUS_V11N); private static final Map MAPPERS = new HashMap(); private static final Logger LOGGER = LoggerFactory.getLogger(VersificationsMapper.class); } diff --git a/src/main/java/org/crosswire/jsword/versification/system/SystemMapper.java b/src/main/java/org/crosswire/jsword/versification/system/SystemKJVAPlus.java similarity index 99% rename from src/main/java/org/crosswire/jsword/versification/system/SystemMapper.java rename to src/main/java/org/crosswire/jsword/versification/system/SystemKJVAPlus.java index 62862ac05..26af686c9 100644 --- a/src/main/java/org/crosswire/jsword/versification/system/SystemMapper.java +++ b/src/main/java/org/crosswire/jsword/versification/system/SystemKJVAPlus.java @@ -12,15 +12,15 @@ * The copyright to this program is held by it's authors. * @author DM Smith */ -public class SystemMapper extends Versification { +public class SystemKJVAPlus extends Versification { /** * Build the "Mapper" Versification. */ - /* protected */ SystemMapper() { + /* protected */ SystemKJVAPlus() { super(V11N_NAME, BOOKS_OT, BOOKS_NT, LAST_VERSE_OT, LAST_VERSE_NT); } - public static final String V11N_NAME = "Mapper"; + public static final String V11N_NAME = "KJVAPlus"; /* protected */ static final BibleBook[] BOOKS_OT = SystemDefault.BOOKS_OTA; diff --git a/src/main/java/org/crosswire/jsword/versification/system/Versifications.java b/src/main/java/org/crosswire/jsword/versification/system/Versifications.java index 3558c453d..1df17533d 100644 --- a/src/main/java/org/crosswire/jsword/versification/system/Versifications.java +++ b/src/main/java/org/crosswire/jsword/versification/system/Versifications.java @@ -43,7 +43,7 @@ public final class Versifications { * This is subject to change at any time. */ public static final String DEFAULT_V11N = SystemKJV.V11N_NAME; - public static final String MAPPER_V11N = SystemMapper.V11N_NAME; + public static final String KJVAPLUS_V11N = SystemKJVAPlus.V11N_NAME; /** * Get the singleton instance of Versifications. @@ -149,7 +149,7 @@ private Versification fluff(String name) { if (SystemVulg.V11N_NAME.equals(name)) { return new SystemVulg(); } - if (SystemMapper.V11N_NAME.equals(name)) { + if (SystemKJVAPlus.V11N_NAME.equals(name)) { return new SystemVulg(); } @@ -208,7 +208,7 @@ private Versifications() { known.add(SystemSynodal.V11N_NAME); known.add(SystemSynodalProt.V11N_NAME); known.add(SystemVulg.V11N_NAME); - known.add(SystemMapper.V11N_NAME); + known.add(SystemKJVAPlus.V11N_NAME); fluffed = new HashMap(); }