diff --git a/lib/src/main/cpp/libkiwix/library.cpp b/lib/src/main/cpp/libkiwix/library.cpp index 2e61b23..a239dd4 100644 --- a/lib/src/main/cpp/libkiwix/library.cpp +++ b/lib/src/main/cpp/libkiwix/library.cpp @@ -29,7 +29,7 @@ #include "macros.h" /* Kiwix Reader JNI functions */ -METHOD0(void, allocate) +METHOD0(void, setNativeHandler) { SET_PTR(std::make_shared()); } @@ -40,22 +40,17 @@ METHOD0(void, dispose) } /* Kiwix library functions */ -/*JNIEXPORT jboolean JNICALL -Java_org_kiwix_kiwixlib_Library_addBook( - JNIEnv* env, jobject thisObj, jstring path) +METHOD(jboolean, addBook, jobject book) { - auto cPath = TO_C(path); + auto cBook = getPtr(env, book); try { - kiwix::Reader reader(cPath); - kiwix::Book book; - book.update(reader); - return LIBRARY->addBook(book); + return THIS->addBook(*cBook); } catch (std::exception& e) { LOG("Unable to add the book"); - LOG(e.what()); } + LOG("%s", e.what()); } return false; -}*/ +} METHOD(jobject, getBookById, jstring id) { auto obj = NEW_OBJECT("org/kiwix/libkiwix/Book"); @@ -63,12 +58,27 @@ METHOD(jobject, getBookById, jstring id) { return obj; } +METHOD(jobject, getArchiveById, jstring id) { + auto obj = NEW_OBJECT("org/kiwix/libzim/Archive"); + setPtr(env, obj, THIS->getArchiveById(TO_C(id))); + return obj; +} + +METHOD(jboolean, removeBookById, jstring id) { + return TO_JNI(THIS->removeBookById(TO_C(id))); +} + +METHOD(jboolean, writeToFile, jstring path) { + return TO_JNI(THIS->writeToFile(TO_C(path))); +} + METHOD(jint, getBookCount, jboolean localBooks, jboolean remoteBooks) { - return THIS->getBookCount(localBooks, remoteBooks); + return TO_JNI(THIS->getBookCount(TO_C(localBooks), TO_C(remoteBooks))); } GETTER(jobjectArray, getBooksIds) GETTER(jobjectArray, getBooksLanguages) +GETTER(jobjectArray, getBooksCategories) GETTER(jobjectArray, getBooksCreators) GETTER(jobjectArray, getBooksPublishers) diff --git a/lib/src/main/java/org/kiwix/libkiwix/Library.java b/lib/src/main/java/org/kiwix/libkiwix/Library.java index 60f3af6..5d0b213 100644 --- a/lib/src/main/java/org/kiwix/libkiwix/Library.java +++ b/lib/src/main/java/org/kiwix/libkiwix/Library.java @@ -19,31 +19,42 @@ package org.kiwix.libkiwix; +import org.kiwix.libzim.Archive; +import org.kiwix.libzim.Searcher; import org.kiwix.libkiwix.Book; import org.kiwix.libkiwix.JNIKiwixException; public class Library { - public native boolean addBook(String path) throws JNIKiwixException; + public Library() + { + setNativeHandler(); + } + public native boolean addBook(Book book) throws JNIKiwixException; public native Book getBookById(String id); - public native int getBookCount(boolean localBooks, boolean remoteBooks); + + public native Archive getArchiveById(String id); + //public native Searcher getSearcherById(String id); + //public native Searcher getSearcherByIds(String ids[]); + + public native boolean removeBookById(String id); + + public native boolean writeToFile(String path); + + public native int getBookCount(boolean localBooks, boolean remoteBooks); public native String[] getBooksIds(); public native String[] filter(Filter filter); public native String[] getBooksLanguages(); + public native String[] getBooksCategories(); public native String[] getBooksCreators(); public native String[] getBooksPublishers(); - public Library() - { - allocate(); - } - @Override protected void finalize() { dispose(); } - private native void allocate(); + private native void setNativeHandler(); private native void dispose(); private long nativeHandle; }