Skip to content

Commit d63b84a

Browse files
committed
Repass on kiwix::Library wrapper
1 parent 2951827 commit d63b84a

File tree

2 files changed

+41
-20
lines changed

2 files changed

+41
-20
lines changed

lib/src/main/cpp/libkiwix/library.cpp

+22-12
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#include "macros.h"
3030

3131
/* Kiwix Reader JNI functions */
32-
METHOD0(void, allocate)
32+
METHOD0(void, setNativeHandler)
3333
{
3434
SET_PTR(std::make_shared<NATIVE_TYPE>());
3535
}
@@ -40,35 +40,45 @@ METHOD0(void, dispose)
4040
}
4141

4242
/* Kiwix library functions */
43-
/*JNIEXPORT jboolean JNICALL
44-
Java_org_kiwix_kiwixlib_Library_addBook(
45-
JNIEnv* env, jobject thisObj, jstring path)
43+
METHOD(jboolean, addBook, jobject book)
4644
{
47-
auto cPath = TO_C(path);
45+
auto cBook = getPtr<kiwix::Book>(env, book);
4846

4947
try {
50-
kiwix::Reader reader(cPath);
51-
kiwix::Book book;
52-
book.update(reader);
53-
return LIBRARY->addBook(book);
48+
return THIS->addBook(*cBook);
5449
} catch (std::exception& e) {
5550
LOG("Unable to add the book");
56-
LOG(e.what()); }
51+
LOG("%s", e.what()); }
5752
return false;
58-
}*/
53+
}
5954

6055
METHOD(jobject, getBookById, jstring id) {
6156
auto obj = NEW_OBJECT("org/kiwix/libkiwix/Book");
6257
SET_HANDLE(kiwix::Book, obj, THIS->getBookById(TO_C(id)));
6358
return obj;
6459
}
6560

61+
METHOD(jobject, getArchiveById, jstring id) {
62+
auto obj = NEW_OBJECT("org/kiwix/libzim/Archive");
63+
setPtr(env, obj, THIS->getArchiveById(TO_C(id)));
64+
return obj;
65+
}
66+
67+
METHOD(jboolean, removeBookById, jstring id) {
68+
return TO_JNI(THIS->removeBookById(TO_C(id)));
69+
}
70+
71+
METHOD(jboolean, writeToFile, jstring path) {
72+
return TO_JNI(THIS->writeToFile(TO_C(path)));
73+
}
74+
6675
METHOD(jint, getBookCount, jboolean localBooks, jboolean remoteBooks) {
67-
return THIS->getBookCount(localBooks, remoteBooks);
76+
return TO_JNI(THIS->getBookCount(TO_C(localBooks), TO_C(remoteBooks)));
6877
}
6978

7079
GETTER(jobjectArray, getBooksIds)
7180
GETTER(jobjectArray, getBooksLanguages)
81+
GETTER(jobjectArray, getBooksCategories)
7282
GETTER(jobjectArray, getBooksCreators)
7383
GETTER(jobjectArray, getBooksPublishers)
7484

lib/src/main/java/org/kiwix/libkiwix/Library.java

+19-8
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,42 @@
1919

2020
package org.kiwix.libkiwix;
2121

22+
import org.kiwix.libzim.Archive;
23+
import org.kiwix.libzim.Searcher;
2224
import org.kiwix.libkiwix.Book;
2325
import org.kiwix.libkiwix.JNIKiwixException;
2426

2527
public class Library
2628
{
27-
public native boolean addBook(String path) throws JNIKiwixException;
29+
public Library()
30+
{
31+
setNativeHandler();
32+
}
33+
public native boolean addBook(Book book) throws JNIKiwixException;
2834

2935
public native Book getBookById(String id);
30-
public native int getBookCount(boolean localBooks, boolean remoteBooks);
36+
37+
public native Archive getArchiveById(String id);
38+
//public native Searcher getSearcherById(String id);
39+
//public native Searcher getSearcherByIds(String ids[]);
40+
41+
public native boolean removeBookById(String id);
42+
43+
public native boolean writeToFile(String path);
44+
45+
public native int getBookCount(boolean localBooks, boolean remoteBooks);
3146

3247
public native String[] getBooksIds();
3348
public native String[] filter(Filter filter);
3449

3550
public native String[] getBooksLanguages();
51+
public native String[] getBooksCategories();
3652
public native String[] getBooksCreators();
3753
public native String[] getBooksPublishers();
3854

39-
public Library()
40-
{
41-
allocate();
42-
}
43-
4455
@Override
4556
protected void finalize() { dispose(); }
46-
private native void allocate();
57+
private native void setNativeHandler();
4758
private native void dispose();
4859
private long nativeHandle;
4960
}

0 commit comments

Comments
 (0)