#21
authorVyacheslav Tyutyunkov <tyutyunkov@gmail.com>
Wed, 13 Mar 2013 07:46:13 +0000 (14:46 +0700)
committerVyacheslav Tyutyunkov <tyutyunkov@gmail.com>
Wed, 13 Mar 2013 07:46:13 +0000 (14:46 +0700)
jejdb/libjejdb.so
jejdb/src/cpp/jejdb.c
jejdb/src/cpp/org_ejdb_driver_EJDB.h
jejdb/src/cpp/org_ejdb_driver_EJDBCollection.h
jejdb/src/java/org/ejdb/driver/EJDB.java
jejdb/src/java/org/ejdb/driver/EJDBCollection.java

index 3a75132..f9ed1a6 100755 (executable)
Binary files a/jejdb/libjejdb.so and b/jejdb/libjejdb.so differ
index d002f97..8fc9dcb 100644 (file)
@@ -58,11 +58,28 @@ JNIEXPORT void JNICALL Java_org_ejdb_driver_EJDB_closeDB
 };
 
 /*
+ * Class:     org_ejdb_driver_EJDB
+ * Method:    syncDB
+ * Signature: ()Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDB_syncDB
+  (JNIEnv *env, jobject obj) {
+    jclass clazz = (*env)->GetObjectClass(env, obj);
+    jfieldID dbpID = (*env)->GetFieldID(env, clazz, "dbPointer", "J");
+    jlong dbp = (*env)->GetLongField(env, obj, dbpID);
+
+    // todo: check null?
+    EJDB* db = (EJDB*)dbp;
+
+    return ejdbsyncdb(db);
+};
+
+/*
  * Class:     org_ejdb_driver_EJDBCollection
- * Method:    ensureCollectionDB
+ * Method:    ensureDB
  * Signature: (Ljava/lang/Object;)Z
  */
-JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_ensureCollectionDB
+JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_ensureDB
   (JNIEnv *env, jobject obj, jobject opts) {
     jclass clazz = (*env)->GetObjectClass(env, obj);
     jfieldID dbpID = (*env)->GetFieldID(env, clazz, "dbPointer", "J");
@@ -90,10 +107,10 @@ JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_ensureCollectionD
 
 /*
  * Class:     org_ejdb_driver_EJDBCollection
- * Method:    dropCollectionDB
+ * Method:    dropDB
  * Signature: (Z)Z
  */
-JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_dropCollectionDB
+JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_dropDB
   (JNIEnv *env, jobject obj, jboolean prune) {
     jclass clazz = (*env)->GetObjectClass(env, obj);
     jfieldID dbpID = (*env)->GetFieldID(env, clazz, "dbPointer", "J");
@@ -117,6 +134,34 @@ JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_dropCollectionDB
 
 /*
  * Class:     org_ejdb_driver_EJDBCollection
+ * Method:    syncDB
+ * Signature: ()Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_syncDB
+  (JNIEnv *env, jobject obj) {
+    jclass clazz = (*env)->GetObjectClass(env, obj);
+    jfieldID dbpID = (*env)->GetFieldID(env, clazz, "dbPointer", "J");
+    jlong dbp = (*env)->GetLongField(env, obj, dbpID);
+
+    // todo: check null?
+    EJDB* db = (EJDB*)dbp;
+
+    jfieldID colnameID = (*env)->GetFieldID(env, clazz, "cname", "Ljava/lang/String;");
+    jstring colname = (*env)->GetObjectField(env, obj, colnameID);
+
+    const char *cname;
+    cname = (*env)->GetStringUTFChars(env, colname, NULL);
+
+    EJCOLL * coll = ejdbgetcoll(db, cname);
+    bool status = ejdbsyncoll(coll);
+
+    (*env)->ReleaseStringUTFChars(env, colname, cname);
+
+    return status ? JNI_TRUE : JNI_FALSE;
+};
+
+/*
+ * Class:     org_ejdb_driver_EJDBCollection
  * Method:    loadDB
  * Signature: ([B)Ljava/lang/Object;
  */
@@ -185,15 +230,15 @@ JNIEXPORT jobject JNICALL Java_org_ejdb_driver_EJDBCollection_saveDB
     EJCOLL * coll = ejdbgetcoll(db, cname);
 
     bson *bson = bson_create_from_buffer(bdata, blength);
-    bool ss = ejdbsavebson(coll, bson, &oid);
+    bool status = ejdbsavebson(coll, bson, &oid);
     bson_del(bson);
 
     (*env)->ReleaseStringUTFChars(env, colname, cname);
     (*env)->ReleaseByteArrayElements(env, objdata, bdata, 0);
 
 
-    if (!ss) {
-        // todo: error
+    if (!status) {
+        // todo: error?
         return NULL;
     }
 
@@ -230,10 +275,10 @@ JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_removeDB
     // todo: check
     EJCOLL * coll = ejdbgetcoll(db, cname);
 
-    bool rs = ejdbrmbson(coll, oid);
+    bool status = ejdbrmbson(coll, oid);
 
     (*env)->ReleaseStringUTFChars(env, colname, cname);
     (*env)->ReleaseByteArrayElements(env, oidArray, (jbyte*)oid, 0);
 
-    return rs ? JNI_TRUE : JNI_FALSE;
+    return status ? JNI_TRUE : JNI_FALSE;
 }
index 1f364e2..c9e5599 100644 (file)
@@ -47,6 +47,14 @@ JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDB_isOpenDB
 JNIEXPORT void JNICALL Java_org_ejdb_driver_EJDB_closeDB
   (JNIEnv *, jobject);
 
+/*
+ * Class:     org_ejdb_driver_EJDB
+ * Method:    syncDB
+ * Signature: ()Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDB_syncDB
+  (JNIEnv *, jobject);
+
 #ifdef __cplusplus
 }
 #endif
index 398d27b..ca06a68 100644 (file)
@@ -9,22 +9,30 @@ extern "C" {
 #endif
 /*
  * Class:     org_ejdb_driver_EJDBCollection
- * Method:    ensureCollectionDB
+ * Method:    ensureDB
  * Signature: (Ljava/lang/Object;)Z
  */
-JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_ensureCollectionDB
+JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_ensureDB
   (JNIEnv *, jobject, jobject);
 
 /*
  * Class:     org_ejdb_driver_EJDBCollection
- * Method:    dropCollectionDB
+ * Method:    dropDB
  * Signature: (Z)Z
  */
-JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_dropCollectionDB
+JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_dropDB
   (JNIEnv *, jobject, jboolean);
 
 /*
  * Class:     org_ejdb_driver_EJDBCollection
+ * Method:    syncDB
+ * Signature: ()Z
+ */
+JNIEXPORT jboolean JNICALL Java_org_ejdb_driver_EJDBCollection_syncDB
+  (JNIEnv *, jobject);
+
+/*
+ * Class:     org_ejdb_driver_EJDBCollection
  * Method:    loadDB
  * Signature: ([B)Ljava/lang/Object;
  */
index 8b7a80e..2d4d1c7 100644 (file)
@@ -24,6 +24,7 @@ public class EJDB {
     protected native void openDB(String path, int mode);
     protected native boolean isOpenDB();
     protected native void closeDB();
+    protected native boolean syncDB();
 
     private long dbPointer;
 
@@ -45,6 +46,10 @@ public class EJDB {
         this.closeDB();
     }
 
+    public boolean sync() {
+        return this.syncDB();
+    }
+
 
     public void ensureCollection(String cname) {
         this.ensureCollection(cname, null);
@@ -95,7 +100,6 @@ public class EJDB {
         return collection;
     }
 
-
     //////////////////////////////////////////
     @Override
     protected void finalize() throws Throwable {
index a5f747a..d7dc078 100644 (file)
@@ -23,8 +23,9 @@ public class EJDBCollection {
     }
 
     // todo: bson object for options
-    protected native boolean ensureCollectionDB(Object opts);
-    protected native boolean dropCollectionDB(boolean prune);
+    protected native boolean ensureDB(Object opts);
+    protected native boolean dropDB(boolean prune);
+    protected native boolean syncDB();
 
     protected native Object loadDB(byte[] oid);
     protected native Object saveDB(byte[] objdata);
@@ -35,7 +36,7 @@ public class EJDBCollection {
     }
 
     public boolean ensureExists(Object opts) {
-        return this.ensureCollectionDB(opts);
+        return this.ensureDB(opts);
     }
 
     public boolean drop() {
@@ -43,9 +44,12 @@ public class EJDBCollection {
     }
 
     public boolean drop(boolean prune) {
-        return this.dropCollectionDB(prune);
+        return this.dropDB(prune);
     }
 
+    public boolean sync() {
+        return this.syncDB();
+    }
 
     public BSONObject load(ObjectId oid) {
         return (BSONObject) this.loadDB(oid.toByteArray());