Kotlin migration continues...

This commit is contained in:
Bradlee Speice 2014-09-10 23:31:16 -04:00
parent f05e50292e
commit 2ae714a935
7 changed files with 73 additions and 114 deletions

View File

@ -3,9 +3,9 @@ package org.bspeice.minimalbible.activity.viewer;
import android.util.Log; import android.util.Log;
import org.bspeice.minimalbible.activity.navigation.ExpListNavAdapter; import org.bspeice.minimalbible.activity.navigation.ExpListNavAdapter;
import org.bspeice.minimalbible.activity.viewer.bookutil.VersificationUtil;
import org.bspeice.minimalbible.service.book.VerseLookupModules; import org.bspeice.minimalbible.service.book.VerseLookupModules;
import org.crosswire.jsword.book.Book; import org.crosswire.jsword.book.Book;
import org.crosswire.jsword.versification.VersificationUtil;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;

View File

@ -14,13 +14,11 @@ import android.webkit.WebViewClient;
import org.bspeice.minimalbible.Injector; import org.bspeice.minimalbible.Injector;
import org.bspeice.minimalbible.R; import org.bspeice.minimalbible.R;
import org.bspeice.minimalbible.activity.BaseFragment; import org.bspeice.minimalbible.activity.BaseFragment;
import org.bspeice.minimalbible.activity.viewer.bookutil.VersificationUtil;
import org.bspeice.minimalbible.service.book.VerseLookupService; import org.bspeice.minimalbible.service.book.VerseLookupService;
import org.crosswire.jsword.book.Book; import org.crosswire.jsword.book.Book;
import org.crosswire.jsword.passage.Verse; import org.crosswire.jsword.passage.Verse;
import org.crosswire.jsword.versification.BibleBook; import org.crosswire.jsword.versification.BibleBook;
import org.crosswire.jsword.versification.VersificationUtil;
import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
@ -29,8 +27,6 @@ import butterknife.ButterKnife;
import butterknife.InjectView; import butterknife.InjectView;
import dagger.Lazy; import dagger.Lazy;
import static org.bspeice.minimalbible.util.StringUtil.joinString;
/** /**
* A placeholder fragment containing a simple view. * A placeholder fragment containing a simple view.
*/ */
@ -160,9 +156,4 @@ public class BookFragment extends BaseFragment {
private void invokeJavascript(String function, Object arg) { private void invokeJavascript(String function, Object arg) {
mainContent.loadUrl("javascript:" + function + "('" + arg.toString() + "')"); mainContent.loadUrl("javascript:" + function + "('" + arg.toString() + "')");
} }
@SuppressWarnings("unused")
private void invokeJavascript(String function, List<Object> args) {
mainContent.loadUrl("javascript:" + function + "(" + joinString(",", args.toArray()) + ")");
}
} }

View File

@ -10,9 +10,9 @@ import org.bspeice.minimalbible.Injector;
import org.bspeice.minimalbible.R; import org.bspeice.minimalbible.R;
import org.bspeice.minimalbible.activity.navigation.ExpListNavAdapter; import org.bspeice.minimalbible.activity.navigation.ExpListNavAdapter;
import org.bspeice.minimalbible.activity.navigation.NavDrawerFragment; import org.bspeice.minimalbible.activity.navigation.NavDrawerFragment;
import org.bspeice.minimalbible.activity.viewer.bookutil.VersificationUtil;
import org.crosswire.jsword.book.Book; import org.crosswire.jsword.book.Book;
import org.crosswire.jsword.versification.BibleBook; import org.crosswire.jsword.versification.BibleBook;
import org.crosswire.jsword.versification.VersificationUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;

View File

@ -1,62 +0,0 @@
package org.bspeice.minimalbible.activity.viewer.bookutil;
import org.bspeice.minimalbible.util.IteratorUtil;
import org.crosswire.jsword.book.Book;
import org.crosswire.jsword.book.BookMetaData;
import org.crosswire.jsword.versification.BibleBook;
import org.crosswire.jsword.versification.Versification;
import org.crosswire.jsword.versification.system.Versifications;
import java.util.ArrayList;
import java.util.List;
import rx.Observable;
import rx.functions.Func1;
/**
* Created by bspeice on 7/11/14.
*/
public class VersificationUtil {
private static final List<BibleBook> INTROS = new ArrayList<BibleBook>() {{
add(BibleBook.INTRO_BIBLE);
add(BibleBook.INTRO_OT);
add(BibleBook.INTRO_NT);
}};
// TODO: Cache the versification?
public Versification getVersification(Book b) {
return Versifications.instance().getVersification(
(String) b.getBookMetaData().getProperty(BookMetaData.KEY_VERSIFICATION)
);
}
public Observable<BibleBook> getBooks(Book b) {
Versification v = getVersification(b);
return Observable.from(IteratorUtil.copyIterator(v.getBookIterator()))
.filter(new Func1<BibleBook, Boolean>() {
@Override
public Boolean call(BibleBook bibleBook) {
return !INTROS.contains(bibleBook);
}
});
}
public Observable<String> getBookNames(final Book b) {
return getBooks(b)
.map(new Func1<BibleBook, String>() {
@Override
public String call(BibleBook bibleBook) {
return getBookName(b, bibleBook);
}
});
}
public Integer getChapterCount(Book b, BibleBook bibleBook) {
return getVersification(b).getLastChapter(bibleBook);
}
public String getBookName(Book book, BibleBook bibleBook) {
return getVersification(book).getLongName(bibleBook);
}
}

View File

@ -1,17 +0,0 @@
package org.bspeice.minimalbible.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Created by bspeice on 7/11/14.
*/
public class IteratorUtil {
public static <T> List<T> copyIterator(Iterator<T> iter) {
List<T> copy = new ArrayList<T>();
while (iter.hasNext())
copy.add(iter.next());
return copy;
}
}

View File

@ -1,23 +0,0 @@
package org.bspeice.minimalbible.util;
/**
* Created by bspeice on 8/3/14.
*/
public class StringUtil {
// Convenience from http://stackoverflow.com/a/17795110/1454178
public static String joinString(String join, Object... strings) {
if (strings == null || strings.length == 0) {
return "";
} else if (strings.length == 1) {
return strings[0].toString();
} else {
StringBuilder sb = new StringBuilder();
sb.append(strings[0]);
for (int i = 1; i < strings.length; i++) {
sb.append(join).append(strings[i].toString());
}
return sb.toString();
}
}
}

View File

@ -0,0 +1,70 @@
package org.crosswire.jsword.versification
import org.crosswire.jsword.book.Book
import java.util.ArrayList
import org.crosswire.jsword.versification.system.Versifications
import org.crosswire.jsword.book.BookMetaData
import rx.Observable
/**
* Created by bspeice on 9/10/14.
*/
class VersificationUtil() {
class object {
val INTROS = array(
BibleBook.INTRO_BIBLE,
BibleBook.INTRO_OT,
BibleBook.INTRO_NT
)
}
fun getBookNames(b: Book): Observable<String> {
return Observable.from(b.getVersification().getBookNames(b)) as Observable
}
fun getBooks(b: Book): Observable<BibleBook> {
return Observable.from(b.getVersification().getBooks(b)) as Observable
}
fun getChapterCount(b: Book, bibleBook: BibleBook): Int {
return b.getVersification().getChapterCount(bibleBook)
}
fun getBookName(b: Book, bibleBook: BibleBook): String {
return b.getVersification().getLongName(bibleBook) as String
}
fun getVersification(b: Book): Versification {
return b.getVersification()
}
}
// There's probably a better way to do this
fun <T> Iterator<T>.iterable(): Iterable<T> {
val list: MutableList<T> = ArrayList()
while (this.hasNext()) {
list.add(this.next())
}
return list
}
fun Versification.getBooks(b: Book): List<BibleBook> {
return this.getBookIterator()!!.iterable()
.filter { VersificationUtil.INTROS.contains(it) }
}
fun Versification.getBookNames(b: Book): List<String> {
return this.getBooks(b).map { this.getLongName(it) as String }
}
fun Versification.getChapterCount(b: BibleBook): Int {
return this.getLastChapter(b)
}
fun Book.getVersification(): Versification {
return Versifications.instance()!!.getVersification(
this.getBookMetaData()!!.getProperty(BookMetaData.KEY_VERSIFICATION) as String
) as Versification
}