Repass on kiwix::Library wrapper

This commit is contained in:
Matthieu Gautier 2023-01-18 17:09:42 +01:00
parent 29518279dc
commit d63b84a5cc
2 changed files with 41 additions and 20 deletions

View File

@ -29,7 +29,7 @@
#include "macros.h"
/* Kiwix Reader JNI functions */
METHOD0(void, allocate)
METHOD0(void, setNativeHandler)
{
SET_PTR(std::make_shared<NATIVE_TYPE>());
}
@ -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<kiwix::Book>(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)

View File

@ -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 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;
}