mirror of
https://github.com/kiwix/java-libkiwix.git
synced 2025-09-13 09:07:48 -04:00
Wrap new methods in kiwix::Library
.
- migrateBookmarks - getBestTargetBookId
This commit is contained in:
parent
2eb8aa5096
commit
fa44690eb7
@ -328,6 +328,7 @@ task buildHeaders(type: Exec) {
|
|||||||
String getLibkiwixFiles() {
|
String getLibkiwixFiles() {
|
||||||
return "${projectDir}/src/main/java/org/kiwix/libkiwix/Book.java " +
|
return "${projectDir}/src/main/java/org/kiwix/libkiwix/Book.java " +
|
||||||
"${projectDir}/src/main/java/org/kiwix/libkiwix/Bookmark.java " +
|
"${projectDir}/src/main/java/org/kiwix/libkiwix/Bookmark.java " +
|
||||||
|
"${projectDir}/src/main/java/org/kiwix/libkiwix/BookmarkMigrationResult.java " +
|
||||||
"${projectDir}/src/main/java/org/kiwix/libkiwix/Filter.java " +
|
"${projectDir}/src/main/java/org/kiwix/libkiwix/Filter.java " +
|
||||||
"${projectDir}/src/main/java/org/kiwix/libkiwix/JNIICU.java " +
|
"${projectDir}/src/main/java/org/kiwix/libkiwix/JNIICU.java " +
|
||||||
"${projectDir}/src/main/java/org/kiwix/libkiwix/Illustration.java " +
|
"${projectDir}/src/main/java/org/kiwix/libkiwix/Illustration.java " +
|
||||||
|
@ -91,6 +91,27 @@ METHOD(jboolean, removeBookmark, jstring zimId, jstring url) {
|
|||||||
return TO_JNI(THIS->removeBookmark(TO_C(zimId), TO_C(url)));
|
return TO_JNI(THIS->removeBookmark(TO_C(zimId), TO_C(url)));
|
||||||
} CATCH_EXCEPTION(false)
|
} CATCH_EXCEPTION(false)
|
||||||
|
|
||||||
|
METHOD(jobject, migrateBookmarks__Z, jboolean allowDowngrade) {
|
||||||
|
jobject migrationResult = newObject("org/kiwix/libkiwix/BookmarkMigrationResult", env);
|
||||||
|
int nbMigrated, nbTotal;
|
||||||
|
std::tie(nbMigrated, nbTotal) = THIS->migrateBookmarks(
|
||||||
|
TO_C(allowDowngrade) ? kiwix::ALLOW_DOWNGRADE : kiwix::UPGRADE_ONLY
|
||||||
|
);
|
||||||
|
setMigrationResultValue(nbMigrated, nbTotal, migrationResult, env);
|
||||||
|
return migrationResult;
|
||||||
|
} CATCH_EXCEPTION(nullptr)
|
||||||
|
|
||||||
|
METHOD(jint, migrateBookmarks__Ljava_lang_String_2Z, jstring sourceBookId, jboolean allowDowngrade) {
|
||||||
|
return TO_JNI(THIS->migrateBookmarks(
|
||||||
|
TO_C(sourceBookId),
|
||||||
|
allowDowngrade? kiwix::ALLOW_DOWNGRADE : kiwix::UPGRADE_ONLY
|
||||||
|
));
|
||||||
|
} CATCH_EXCEPTION(0)
|
||||||
|
|
||||||
|
METHOD(jint, migrateBookmarks__Ljava_lang_String_2Ljava_lang_String_2, jstring sourceBookId, jstring targetBookId) {
|
||||||
|
return TO_JNI(THIS->migrateBookmarks(TO_C(sourceBookId), TO_C(targetBookId)));
|
||||||
|
} CATCH_EXCEPTION(0)
|
||||||
|
|
||||||
METHOD(jobjectArray, getBookmarks, jboolean onlyValidBookmarks) {
|
METHOD(jobjectArray, getBookmarks, jboolean onlyValidBookmarks) {
|
||||||
auto bookmarks = THIS->getBookmarks(TO_C(onlyValidBookmarks));
|
auto bookmarks = THIS->getBookmarks(TO_C(onlyValidBookmarks));
|
||||||
jobjectArray retArray = createArray(env, bookmarks.size(), "org/kiwix/libkiwix/Bookmark");
|
jobjectArray retArray = createArray(env, bookmarks.size(), "org/kiwix/libkiwix/Bookmark");
|
||||||
@ -108,3 +129,15 @@ METHOD(jobjectArray, getBookmarks, jboolean onlyValidBookmarks) {
|
|||||||
}
|
}
|
||||||
return retArray;
|
return retArray;
|
||||||
} CATCH_EXCEPTION(nullptr)
|
} CATCH_EXCEPTION(nullptr)
|
||||||
|
|
||||||
|
METHOD(jstring, getBestTargetBookId__Lorg_kiwix_libkiwix_Bookmark_2Z, jobject bookmark, jboolean allowDowngrade) {
|
||||||
|
auto cBookmark = getPtr<kiwix::Bookmark>(env, bookmark);
|
||||||
|
return TO_JNI(THIS->getBestTargetBookId(
|
||||||
|
*cBookmark,
|
||||||
|
allowDowngrade ? kiwix::ALLOW_DOWNGRADE : kiwix::UPGRADE_ONLY
|
||||||
|
));
|
||||||
|
} CATCH_EXCEPTION(nullptr)
|
||||||
|
|
||||||
|
METHOD(jstring, getBestTargetBookId__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2, jstring bookName, jstring preferedFlavour, jstring minDate) {
|
||||||
|
return TO_JNI(THIS->getBestTargetBookId(TO_C(bookName), TO_C(preferedFlavour), TO_C(minDate)));
|
||||||
|
} CATCH_EXCEPTION(nullptr)
|
||||||
|
@ -401,6 +401,15 @@ inline void setDaiObjValue(const std::string& filename, const long offset,
|
|||||||
env->SetLongField(obj, offsetFid, offset);
|
env->SetLongField(obj, offsetFid, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void setMigrationResultValue(long nbMigrated, long nbTotalInvalid, const jobject obj, JNIEnv* env)
|
||||||
|
{
|
||||||
|
jclass objClass = env->GetObjectClass(obj);
|
||||||
|
jfieldID nbMigratedFid = env->GetFieldID(objClass, "nbMigratedBookmarks", "J");
|
||||||
|
env->SetLongField(obj, nbMigratedFid, nbMigrated);
|
||||||
|
jfieldID nbTotalFid = env->GetFieldID(objClass, "nbInvalidBookmarks", "J");
|
||||||
|
env->SetLongField(obj, nbTotalFid, nbTotalInvalid);
|
||||||
|
}
|
||||||
|
|
||||||
inline int throwException(JNIEnv* env, const char* exception, const char* message) {
|
inline int throwException(JNIEnv* env, const char* exception, const char* message) {
|
||||||
return env->ThrowNew(env->FindClass(exception), message);
|
return env->ThrowNew(env->FindClass(exception), message);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2024 Matthieu Gautier <mgautier@kymeria.fr>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.kiwix.libkiwix;
|
||||||
|
|
||||||
|
public class BookmarkMigrationResult
|
||||||
|
{
|
||||||
|
public long nbMigratedBookmarks;
|
||||||
|
public long nbInvalidBookmarks;
|
||||||
|
}
|
@ -24,6 +24,7 @@ import org.kiwix.libzim.Searcher;
|
|||||||
import org.kiwix.libkiwix.Book;
|
import org.kiwix.libkiwix.Book;
|
||||||
import org.kiwix.libkiwix.JNIKiwixException;
|
import org.kiwix.libkiwix.JNIKiwixException;
|
||||||
import org.kiwix.libkiwix.Bookmark;
|
import org.kiwix.libkiwix.Bookmark;
|
||||||
|
import org.kiwix.libkiwix.BookmarkMigrationResult;
|
||||||
|
|
||||||
public class Library
|
public class Library
|
||||||
{
|
{
|
||||||
@ -56,8 +57,20 @@ public class Library
|
|||||||
|
|
||||||
public native void addBookmark(Bookmark bookmark);
|
public native void addBookmark(Bookmark bookmark);
|
||||||
public native boolean removeBookmark(String zimId, String url);
|
public native boolean removeBookmark(String zimId, String url);
|
||||||
|
public native BookmarkMigrationResult migrateBookmarks(boolean allowDowngrade);
|
||||||
|
public native int migrateBookmarks(String sourceBookId, boolean allowDowngrade);
|
||||||
|
public native int migrateBookmarks(String sourceBookId, String targetBookId);
|
||||||
public native Bookmark[] getBookmarks(boolean onlyValidBookmarks);
|
public native Bookmark[] getBookmarks(boolean onlyValidBookmarks);
|
||||||
|
|
||||||
|
public native String getBestTargetBookId(Bookmark bookmark, boolean allowDowngrade);
|
||||||
|
public String getBestTargetBookId(String bookName) {
|
||||||
|
return getBestTargetBookId(bookName, "", "");
|
||||||
|
}
|
||||||
|
public String getBestTargetBookId(String bookName, String preferedFlavour) {
|
||||||
|
return getBestTargetBookId(bookName, preferedFlavour, "");
|
||||||
|
}
|
||||||
|
public native String getBestTargetBookId(String bookName, String preferedFlavour, String minDate);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void finalize() { dispose(); }
|
protected void finalize() { dispose(); }
|
||||||
private native void setNativeHandler();
|
private native void setNativeHandler();
|
||||||
|
@ -25,6 +25,7 @@ import org.kiwix.test.libkiwix.TestBookmark;
|
|||||||
import org.kiwix.libzim.Searcher;
|
import org.kiwix.libzim.Searcher;
|
||||||
import org.kiwix.libkiwix.Filter;
|
import org.kiwix.libkiwix.Filter;
|
||||||
import org.kiwix.libkiwix.JNIKiwixException;
|
import org.kiwix.libkiwix.JNIKiwixException;
|
||||||
|
import org.kiwix.libkiwix.BookmarkMigrationResult;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public class TestLibrary
|
public class TestLibrary
|
||||||
@ -58,5 +59,13 @@ public class TestLibrary
|
|||||||
|
|
||||||
public void addBookmark(TestBookmark bookmark) { inner.addBookmark(bookmark.inner()); }
|
public void addBookmark(TestBookmark bookmark) { inner.addBookmark(bookmark.inner()); }
|
||||||
public boolean removeBookmark(String zimId, String url) { return inner.removeBookmark(zimId, url); }
|
public boolean removeBookmark(String zimId, String url) { return inner.removeBookmark(zimId, url); }
|
||||||
|
public BookmarkMigrationResult migrateBookmarks(boolean allowDowngrade) { return inner.migrateBookmarks(allowDowngrade); }
|
||||||
|
public int migrateBookmarks(String sourceBookId, boolean allowDowngrade) { return inner.migrateBookmarks(sourceBookId, allowDowngrade); }
|
||||||
|
public int migrateBookmarks(String sourceBookId, String targetBookId) { return inner.migrateBookmarks(sourceBookId, targetBookId); }
|
||||||
public TestBookmark[] getBookmarks(boolean onlyValidBookmarks) { return Stream.of(inner.getBookmarks(onlyValidBookmarks)).map(b -> new TestBookmark(b)).toArray(TestBookmark[]::new); }
|
public TestBookmark[] getBookmarks(boolean onlyValidBookmarks) { return Stream.of(inner.getBookmarks(onlyValidBookmarks)).map(b -> new TestBookmark(b)).toArray(TestBookmark[]::new); }
|
||||||
|
|
||||||
|
public String getBestTargetBookId(TestBookmark bookmark, boolean allowDowngrade) { return inner.getBestTargetBookId(bookmark.inner(), allowDowngrade); }
|
||||||
|
public String getBestTargetBookId(String bookname) { return inner.getBestTargetBookId(bookname); }
|
||||||
|
public String getBestTargetBookId(String bookname, String preferedFlavour) { return inner.getBestTargetBookId(bookname, preferedFlavour); }
|
||||||
|
public String getBestTargetBookId(String bookname, String preferedFlavour, String minDate) { return inner.getBestTargetBookId(bookname, preferedFlavour, minDate); }
|
||||||
}
|
}
|
||||||
|
@ -484,8 +484,21 @@ public class test {
|
|||||||
assertEquals(bookmark.getBookTitle(), book.getTitle());
|
assertEquals(bookmark.getBookTitle(), book.getTitle());
|
||||||
assertEquals(bookmark.getBookName(), book.getName());
|
assertEquals(bookmark.getBookName(), book.getName());
|
||||||
assertEquals(bookmark.getBookFlavour(), book.getFlavour());
|
assertEquals(bookmark.getBookFlavour(), book.getFlavour());
|
||||||
|
|
||||||
|
BookmarkMigrationResult result = lib.migrateBookmarks(true);
|
||||||
|
assertEquals(result.nbMigratedBookmarks, 0);
|
||||||
|
assertEquals(result.nbInvalidBookmarks, 0);
|
||||||
|
|
||||||
|
assertEquals(lib.migrateBookmarks(book.getId(), true), 0);
|
||||||
|
assertEquals(lib.migrateBookmarks(book.getId(), "new-id"), 1);
|
||||||
|
|
||||||
|
assertEquals(lib.getBestTargetBookId(bookmark, true), book.getId());
|
||||||
|
assertEquals(lib.getBestTargetBookId(book.getName()), book.getId());
|
||||||
|
assertEquals(lib.getBestTargetBookId(book.getName(), "someflavour"), book.getId());
|
||||||
|
assertEquals(lib.getBestTargetBookId(book.getName(), "someflavour", "20230105"), "");
|
||||||
|
assertEquals(lib.getBestTargetBookId(book.getName(), "someflavour", "20190105"), book.getId());
|
||||||
// remove bookmark from library
|
// remove bookmark from library
|
||||||
lib.removeBookmark(bookmark.getBookId(), bookmark.getUrl());
|
lib.removeBookmark("new-id", bookmark.getUrl());
|
||||||
bookmarkArray = lib.getBookmarks(true);
|
bookmarkArray = lib.getBookmarks(true);
|
||||||
assertEquals(0, bookmarkArray.length);
|
assertEquals(0, bookmarkArray.length);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user