package net.bible.android.control.versification;
import android.util.Log;
import org.crosswire.jsword.book.Book;
import org.crosswire.jsword.book.Books;
import org.crosswire.jsword.book.BooksEvent;
import org.crosswire.jsword.book.BooksListener;
import org.crosswire.jsword.book.sword.SwordBook;
import org.crosswire.jsword.versification.Versification;
import org.crosswire.jsword.versification.VersificationsMapper;
/**
* @author Martin Denham [mjdenham at gmail dot com]
* @see gnu.lgpl.License for license details.<br>
* The copyright to this program is held by it's author.
*/
public class VersificationMappingInitializer {
private static final String TAG = "VersificatnMappingInit";
public void startListening() {
Books.installed().addBooksListener(new BooksListener() {
@Override
public void bookAdded(BooksEvent ev) {
Book book = ev.getBook();
initialiseRequiredMapping(book);
}
@Override
public void bookRemoved(BooksEvent ev) {
//NOOP
}
});
}
/**
* pre-initialise mappings to prevent pauses during interaction
*/
private synchronized void initialiseRequiredMapping(Book book) {
if (book instanceof SwordBook) {
final Versification versification = ((SwordBook)book).getVersification();
// initialise in a background thread to allow normal startup to continue
new Thread( new Runnable() {
public void run() {
Log.d(TAG, "AVMAP Initialise v11n mappings for "+versification.getName());
VersificationsMapper.instance().ensureMappingDataLoaded(versification);
}
}).start();
}
}
}