Revision | 1 (tree) |
---|---|
Time | 2007-03-30 19:58:31 |
Author | spiritloose |
initial import
@@ -0,0 +1,2 @@ | ||
1 | +do `ant` | |
2 | + |
@@ -0,0 +1,3 @@ | ||
1 | +2007-03-29 Jiro Nishiguchi <jiro@cpan.org> | |
2 | + | |
3 | + * original version |
@@ -0,0 +1,84 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +package senna; | |
20 | + | |
21 | +import junit.framework.TestCase; | |
22 | + | |
23 | +public class IndexTest extends TestCase { | |
24 | + | |
25 | + public IndexTest(String name) { | |
26 | + super(name); | |
27 | + } | |
28 | + | |
29 | + protected void setUp() throws Exception { | |
30 | + Senna.init(); | |
31 | + } | |
32 | + | |
33 | + protected void tearDown() throws Exception { | |
34 | + Senna.fin(); | |
35 | + } | |
36 | + | |
37 | + public void testCreate() throws Exception { | |
38 | + // create | |
39 | + Index index = Index.create("tests/testindex"); | |
40 | + assertNotNull(index); | |
41 | + index.close(); | |
42 | + // rename | |
43 | + Index.rename("tests/testindex", "tests/testrename"); | |
44 | + // then open | |
45 | + index = new Index("tests/testrename"); | |
46 | + assertNotNull(index); | |
47 | + index.close(); | |
48 | + // remove | |
49 | + Index.remove("tests/testrename"); | |
50 | + } | |
51 | + | |
52 | + public void testInsert() throws Exception { | |
53 | + Index index = Index.create("tests/testindex"); | |
54 | + index.printInfo(); | |
55 | + index.insert("hoge", "東京都"); | |
56 | + Records records = index.sel("東京"); | |
57 | + assertNotNull(records); | |
58 | + assertEquals(1, records.nhits()); | |
59 | + String key = records.next(); | |
60 | + assertEquals("hoge", key); | |
61 | + key = records.next(); | |
62 | + assertNull(key); | |
63 | + records.close(); | |
64 | + | |
65 | + index.upd("hoge", "東京都", "京都"); | |
66 | + records = index.sel("東京"); | |
67 | + assertNull(records); | |
68 | + | |
69 | + records = index.sel("京都"); | |
70 | + assertNotNull(records); | |
71 | + assertEquals(1, records.nhits()); | |
72 | + key = records.next(); | |
73 | + assertEquals("hoge", key); | |
74 | + records.close(); | |
75 | + | |
76 | + index.delete("hoge", "京都"); | |
77 | + records = index.sel("京都"); | |
78 | + assertNull(records); | |
79 | + index.close(); | |
80 | + Index.remove("tests/testindex"); | |
81 | + } | |
82 | + | |
83 | +} | |
84 | + |
@@ -0,0 +1,93 @@ | ||
1 | +/* DO NOT EDIT THIS FILE - it is machine generated */ | |
2 | +#include <jni.h> | |
3 | +/* Header for class senna_Index */ | |
4 | + | |
5 | +#ifndef _Included_senna_Index | |
6 | +#define _Included_senna_Index | |
7 | +#ifdef __cplusplus | |
8 | +extern "C" { | |
9 | +#endif | |
10 | +/* | |
11 | + * Class: senna_Index | |
12 | + * Method: create | |
13 | + * Signature: (Ljava/lang/String;IIII)Lsenna/Index; | |
14 | + */ | |
15 | +JNIEXPORT jobject JNICALL Java_senna_Index_create | |
16 | + (JNIEnv *, jclass, jstring, jint, jint, jint, jint); | |
17 | + | |
18 | +/* | |
19 | + * Class: senna_Index | |
20 | + * Method: rename | |
21 | + * Signature: (Ljava/lang/String;Ljava/lang/String;)V | |
22 | + */ | |
23 | +JNIEXPORT void JNICALL Java_senna_Index_rename | |
24 | + (JNIEnv *, jclass, jstring, jstring); | |
25 | + | |
26 | +/* | |
27 | + * Class: senna_Index | |
28 | + * Method: remove | |
29 | + * Signature: (Ljava/lang/String;)V | |
30 | + */ | |
31 | +JNIEXPORT void JNICALL Java_senna_Index_remove | |
32 | + (JNIEnv *, jclass, jstring); | |
33 | + | |
34 | +/* | |
35 | + * Class: senna_Index | |
36 | + * Method: open | |
37 | + * Signature: (Ljava/lang/String;)V | |
38 | + */ | |
39 | +JNIEXPORT void JNICALL Java_senna_Index_open | |
40 | + (JNIEnv *, jobject, jstring); | |
41 | + | |
42 | +/* | |
43 | + * Class: senna_Index | |
44 | + * Method: insert | |
45 | + * Signature: (Ljava/lang/String;Ljava/lang/String;)V | |
46 | + */ | |
47 | +JNIEXPORT void JNICALL Java_senna_Index_insert | |
48 | + (JNIEnv *, jobject, jstring, jstring); | |
49 | + | |
50 | +/* | |
51 | + * Class: senna_Index | |
52 | + * Method: delete | |
53 | + * Signature: (Ljava/lang/String;Ljava/lang/String;)V | |
54 | + */ | |
55 | +JNIEXPORT void JNICALL Java_senna_Index_delete | |
56 | + (JNIEnv *, jobject, jstring, jstring); | |
57 | + | |
58 | +/* | |
59 | + * Class: senna_Index | |
60 | + * Method: upd | |
61 | + * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V | |
62 | + */ | |
63 | +JNIEXPORT void JNICALL Java_senna_Index_upd | |
64 | + (JNIEnv *, jobject, jstring, jstring, jstring); | |
65 | + | |
66 | +/* | |
67 | + * Class: senna_Index | |
68 | + * Method: printInfo | |
69 | + * Signature: ()V | |
70 | + */ | |
71 | +JNIEXPORT void JNICALL Java_senna_Index_printInfo | |
72 | + (JNIEnv *, jobject); | |
73 | + | |
74 | +/* | |
75 | + * Class: senna_Index | |
76 | + * Method: close | |
77 | + * Signature: ()V | |
78 | + */ | |
79 | +JNIEXPORT void JNICALL Java_senna_Index_close | |
80 | + (JNIEnv *, jobject); | |
81 | + | |
82 | +/* | |
83 | + * Class: senna_Index | |
84 | + * Method: sel | |
85 | + * Signature: (Ljava/lang/String;)Lsenna/Records; | |
86 | + */ | |
87 | +JNIEXPORT jobject JNICALL Java_senna_Index_sel | |
88 | + (JNIEnv *, jobject, jstring); | |
89 | + | |
90 | +#ifdef __cplusplus | |
91 | +} | |
92 | +#endif | |
93 | +#endif |
@@ -0,0 +1,108 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +#include "senna_java.h" | |
20 | +#include "senna_Index.h" | |
21 | + | |
22 | +static sen_records * | |
23 | +this_sen_records(JNIEnv *env, jobject obj) | |
24 | +{ | |
25 | + jclass clazz; | |
26 | + jfieldID id; | |
27 | + clazz = (*env)->FindClass(env, "senna/Records"); | |
28 | + id = (*env)->GetFieldID(env, clazz, "ptr", "I"); | |
29 | + return (sen_records *) (*env)->GetIntField(env, obj, id); | |
30 | +} | |
31 | + | |
32 | +JNIEXPORT jstring JNICALL | |
33 | +Java_senna_Records_next(JNIEnv *env, jobject obj) | |
34 | +{ | |
35 | + sen_records *records; | |
36 | + char key[SEN_MAX_KEY_SIZE + 1]; | |
37 | + int key_size; | |
38 | + records = this_sen_records(env, obj); | |
39 | + key_size = sen_records_next(records, key, SEN_MAX_KEY_SIZE, 0); | |
40 | + if (key_size == 0) | |
41 | + return NULL; | |
42 | + return (*env)->NewStringUTF(env, key); | |
43 | +} | |
44 | + | |
45 | +JNIEXPORT void JNICALL | |
46 | +Java_senna_Records_close(JNIEnv *env, jobject obj) | |
47 | +{ | |
48 | + sen_records *records; | |
49 | + sen_rc rc; | |
50 | + records = this_sen_records(env, obj); | |
51 | + rc = sen_records_close(records); | |
52 | + if (rc != sen_success) | |
53 | + ThrowNewSennaException(env, "Failed to call sen_records_close().", rc); | |
54 | +} | |
55 | + | |
56 | +JNIEXPORT jint JNICALL | |
57 | +Java_senna_Records_currScore(JNIEnv *env, jobject obj) | |
58 | +{ | |
59 | + sen_records *records; | |
60 | + records = this_sen_records(env, obj); | |
61 | + return (jint) sen_records_curr_score(records); | |
62 | +} | |
63 | + | |
64 | +JNIEXPORT jstring JNICALL | |
65 | +Java_senna_Records_currKey(JNIEnv *env, jobject obj) | |
66 | +{ | |
67 | + sen_records *records; | |
68 | + char key[SEN_MAX_KEY_SIZE + 1]; | |
69 | + int key_size; | |
70 | + records = this_sen_records(env, obj); | |
71 | + key_size = sen_records_curr_key(records, key, SEN_MAX_KEY_SIZE); | |
72 | + if (key_size == 0) | |
73 | + return NULL; | |
74 | + return (*env)->NewStringUTF(env, key); | |
75 | +} | |
76 | + | |
77 | +JNIEXPORT void JNICALL | |
78 | +Java_senna_Records_rewind(JNIEnv *env, jobject obj) | |
79 | +{ | |
80 | + sen_records *records; | |
81 | + sen_rc rc; | |
82 | + records = this_sen_records(env, obj); | |
83 | + rc = sen_records_rewind(records); | |
84 | + if (rc != sen_success) | |
85 | + ThrowNewSennaException(env, "Failed to call sen_records_rewind().", rc); | |
86 | +} | |
87 | + | |
88 | +JNIEXPORT jint JNICALL | |
89 | +Java_senna_Records_nhits(JNIEnv *env, jobject obj) | |
90 | +{ | |
91 | + sen_records *records; | |
92 | + records = this_sen_records(env, obj); | |
93 | + return (jint) sen_records_nhits(records); | |
94 | +} | |
95 | + | |
96 | +JNIEXPORT jint JNICALL | |
97 | +Java_senna_Records_find(JNIEnv *env, jobject obj, jstring find_str) | |
98 | +{ | |
99 | + sen_records *records; | |
100 | + const char *find; | |
101 | + int score; | |
102 | + records = this_sen_records(env, obj); | |
103 | + find = (*env)->GetStringUTFChars(env, find_str, NULL); | |
104 | + score = sen_records_find(records, find); | |
105 | + (*env)->ReleaseStringUTFChars(env, find_str, find); | |
106 | + return score; | |
107 | +} | |
108 | + |
@@ -0,0 +1,39 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +#include "senna_java.h" | |
20 | + | |
21 | +void | |
22 | +ThrowNewSennaException(JNIEnv *env, const char *msg, sen_rc rc) | |
23 | +{ | |
24 | + jclass e; | |
25 | + jstring msg_str; | |
26 | + jmethodID c; | |
27 | + jobject t; | |
28 | + e = (*env)->FindClass(env, "senna/SennaException"); | |
29 | + msg_str = (*env)->NewStringUTF(env, msg); | |
30 | + if (rc) { | |
31 | + c = (*env)->GetMethodID(env, e, "<init>", "(Ljava/lang/String;I)V"); | |
32 | + t = (*env)->NewObject(env, e, c, msg_str, (jint) rc); | |
33 | + } else { | |
34 | + c = (*env)->GetMethodID(env, e, "<init>", "(Ljava/lang/String;)V"); | |
35 | + t = (*env)->NewObject(env, e, c, msg_str); | |
36 | + } | |
37 | + (void) (*env)->Throw(env, t); | |
38 | +} | |
39 | + |
@@ -0,0 +1,124 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +#include "senna_java.h" | |
20 | +#include "senna_Snippet.h" | |
21 | + | |
22 | +static sen_snip * | |
23 | +this_sen_snip(JNIEnv *env, jobject obj) | |
24 | +{ | |
25 | + jclass clazz; | |
26 | + jfieldID id; | |
27 | + clazz = (*env)->FindClass(env, "senna/Snippet"); | |
28 | + id = (*env)->GetFieldID(env, clazz, "ptr", "I"); | |
29 | + return (sen_snip *) (*env)->GetIntField(env, obj, id); | |
30 | +} | |
31 | + | |
32 | +JNIEXPORT void JNICALL | |
33 | +Java_senna_Snippet_open(JNIEnv *env, jobject obj, jint encoding, jint flags, jint width, | |
34 | + jint max_results, jstring defaultopentag, jstring defaultclosetag, jint mapping) | |
35 | +{ | |
36 | + sen_snip *snip; | |
37 | + const char *open_str, *close_str; | |
38 | + unsigned int open_len, close_len; | |
39 | + jclass clazz; | |
40 | + jfieldID fieldID; | |
41 | + open_str = (*env)->GetStringUTFChars(env, defaultopentag, NULL); | |
42 | + close_str = (*env)->GetStringUTFChars(env, defaultclosetag, NULL); | |
43 | + open_len = (*env)->GetStringUTFLength(env, defaultopentag); | |
44 | + close_len = (*env)->GetStringUTFLength(env, defaultclosetag); | |
45 | + snip = sen_snip_open(encoding, flags, width, max_results, open_str, | |
46 | + open_len, close_str, close_len, (sen_snip_mapping *) mapping); | |
47 | + (*env)->ReleaseStringUTFChars(env, defaultopentag, open_str); | |
48 | + (*env)->ReleaseStringUTFChars(env, defaultclosetag, close_str); | |
49 | + if (snip == NULL) | |
50 | + ThrowNewSennaException(env, "Failed to call sen_snip_open().", 0); | |
51 | + clazz = (*env)->FindClass(env, "senna/Snippet"); | |
52 | + fieldID = (*env)->GetFieldID(env, clazz, "ptr", "I"); | |
53 | + (*env)->SetIntField(env, obj, fieldID, (jint) snip); | |
54 | +} | |
55 | + | |
56 | +JNIEXPORT void JNICALL | |
57 | +Java_senna_Snippet_addCond(JNIEnv *env, jobject obj, jstring keyword_str, jstring opentag_str, | |
58 | + jstring closetag_str) | |
59 | +{ | |
60 | + sen_snip *snip; | |
61 | + const char *keyword, *opentag, *closetag; | |
62 | + unsigned int keyword_len, opentag_len, closetag_len; | |
63 | + sen_rc rc; | |
64 | + snip = this_sen_snip(env, obj); | |
65 | + keyword = (*env)->GetStringUTFChars(env, keyword_str, NULL); | |
66 | + opentag = (*env)->GetStringUTFChars(env, opentag_str, NULL); | |
67 | + closetag = (*env)->GetStringUTFChars(env, closetag_str, NULL); | |
68 | + keyword_len = (*env)->GetStringUTFLength(env, keyword_str); | |
69 | + opentag_len = (*env)->GetStringUTFLength(env, opentag_str); | |
70 | + closetag_len = (*env)->GetStringUTFLength(env, closetag_str); | |
71 | + rc = sen_snip_add_cond(snip, keyword, keyword_len, opentag, opentag_len, closetag, | |
72 | + closetag_len); | |
73 | + (*env)->ReleaseStringUTFChars(env, keyword_str, keyword); | |
74 | + (*env)->ReleaseStringUTFChars(env, opentag_str, opentag); | |
75 | + (*env)->ReleaseStringUTFChars(env, closetag_str, closetag); | |
76 | + if (rc != sen_success) | |
77 | + ThrowNewSennaException(env, "Failed to call sen_snip_add_cond().", rc); | |
78 | +} | |
79 | + | |
80 | +JNIEXPORT jobjectArray JNICALL | |
81 | +Java_senna_Snippet_exec(JNIEnv *env, jobject obj, jstring jstr) | |
82 | +{ | |
83 | + sen_snip *snip; | |
84 | + const char *string; | |
85 | + unsigned int string_len, nresults, max_tagged_len; | |
86 | + sen_rc rc; | |
87 | + jclass string_class; | |
88 | + jobjectArray array; | |
89 | + int i; | |
90 | + snip = this_sen_snip(env, obj); | |
91 | + string = (*env)->GetStringUTFChars(env, jstr, NULL); | |
92 | + string_len = (*env)->GetStringUTFLength(env, jstr); | |
93 | + rc = sen_snip_exec(snip, string, string_len, &nresults, &max_tagged_len); | |
94 | + (*env)->ReleaseStringUTFChars(env, jstr, string); | |
95 | + if (rc != sen_success) | |
96 | + ThrowNewSennaException(env, "Failed to call sen_snip_exec().", rc); | |
97 | + string_class = (*env)->FindClass(env, "java/lang/String"); | |
98 | + array = (*env)->NewObjectArray(env, nresults, string_class, NULL); | |
99 | + if (array == NULL) | |
100 | + ThrowNewSennaException(env, "Failed to create Result Array.", 0); | |
101 | + for (i = 0; i < nresults; i++) { | |
102 | + char result[max_tagged_len]; | |
103 | + unsigned int result_len; | |
104 | + jstring result_str; | |
105 | + rc = sen_snip_get_result(snip, i, result, &result_len); | |
106 | + if (rc != sen_success) | |
107 | + ThrowNewSennaException(env, "Failed to call sen_snip_get_result().", rc); | |
108 | + result_str = (*env)->NewStringUTF(env, result); | |
109 | + (*env)->SetObjectArrayElement(env, array, i, result_str); | |
110 | + } | |
111 | + return array; | |
112 | +} | |
113 | + | |
114 | +JNIEXPORT void JNICALL | |
115 | +Java_senna_Snippet_close(JNIEnv *env, jobject obj) | |
116 | +{ | |
117 | + sen_snip *snip; | |
118 | + sen_rc rc; | |
119 | + snip = this_sen_snip(env, obj); | |
120 | + rc = sen_snip_close(snip); | |
121 | + if (rc != sen_success) | |
122 | + ThrowNewSennaException(env, "Failed to call sen_snip_close().", rc); | |
123 | +} | |
124 | + |
@@ -0,0 +1,39 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +#include "senna_java.h" | |
20 | +#include "senna_Senna.h" | |
21 | + | |
22 | +JNIEXPORT void JNICALL | |
23 | +Java_senna_Senna_init(JNIEnv *env, jclass clazz) | |
24 | +{ | |
25 | + sen_rc rc; | |
26 | + rc = sen_init(); | |
27 | + if (rc != sen_success) | |
28 | + ThrowNewSennaException(env, "Failed to call sen_init().", rc); | |
29 | +} | |
30 | + | |
31 | +JNIEXPORT void JNICALL | |
32 | +Java_senna_Senna_fin(JNIEnv *env, jclass clazz) | |
33 | +{ | |
34 | + sen_rc rc; | |
35 | + rc = sen_fin(); | |
36 | + if (rc != sen_success) | |
37 | + ThrowNewSennaException(env, "Failed to call sen_fin().", rc); | |
38 | +} | |
39 | + |
@@ -0,0 +1,69 @@ | ||
1 | +/* DO NOT EDIT THIS FILE - it is machine generated */ | |
2 | +#include <jni.h> | |
3 | +/* Header for class senna_Records */ | |
4 | + | |
5 | +#ifndef _Included_senna_Records | |
6 | +#define _Included_senna_Records | |
7 | +#ifdef __cplusplus | |
8 | +extern "C" { | |
9 | +#endif | |
10 | +/* | |
11 | + * Class: senna_Records | |
12 | + * Method: next | |
13 | + * Signature: ()Ljava/lang/String; | |
14 | + */ | |
15 | +JNIEXPORT jstring JNICALL Java_senna_Records_next | |
16 | + (JNIEnv *, jobject); | |
17 | + | |
18 | +/* | |
19 | + * Class: senna_Records | |
20 | + * Method: close | |
21 | + * Signature: ()V | |
22 | + */ | |
23 | +JNIEXPORT void JNICALL Java_senna_Records_close | |
24 | + (JNIEnv *, jobject); | |
25 | + | |
26 | +/* | |
27 | + * Class: senna_Records | |
28 | + * Method: currScore | |
29 | + * Signature: ()I | |
30 | + */ | |
31 | +JNIEXPORT jint JNICALL Java_senna_Records_currScore | |
32 | + (JNIEnv *, jobject); | |
33 | + | |
34 | +/* | |
35 | + * Class: senna_Records | |
36 | + * Method: currKey | |
37 | + * Signature: ()Ljava/lang/String; | |
38 | + */ | |
39 | +JNIEXPORT jstring JNICALL Java_senna_Records_currKey | |
40 | + (JNIEnv *, jobject); | |
41 | + | |
42 | +/* | |
43 | + * Class: senna_Records | |
44 | + * Method: rewind | |
45 | + * Signature: ()V | |
46 | + */ | |
47 | +JNIEXPORT void JNICALL Java_senna_Records_rewind | |
48 | + (JNIEnv *, jobject); | |
49 | + | |
50 | +/* | |
51 | + * Class: senna_Records | |
52 | + * Method: nhits | |
53 | + * Signature: ()I | |
54 | + */ | |
55 | +JNIEXPORT jint JNICALL Java_senna_Records_nhits | |
56 | + (JNIEnv *, jobject); | |
57 | + | |
58 | +/* | |
59 | + * Class: senna_Records | |
60 | + * Method: find | |
61 | + * Signature: (Ljava/lang/String;)I | |
62 | + */ | |
63 | +JNIEXPORT jint JNICALL Java_senna_Records_find | |
64 | + (JNIEnv *, jobject, jstring); | |
65 | + | |
66 | +#ifdef __cplusplus | |
67 | +} | |
68 | +#endif | |
69 | +#endif |
@@ -0,0 +1,12 @@ | ||
1 | +#ifndef _SENNA_JAVA_H | |
2 | +#define _SENNA_JAVA_H | |
3 | + | |
4 | +#include <jni.h> | |
5 | +#include <senna/senna.h> | |
6 | + | |
7 | +#define SEN_MAX_KEY_SIZE 8191 | |
8 | + | |
9 | +void ThrowNewSennaException(JNIEnv *env, const char *msg, sen_rc rc); | |
10 | + | |
11 | +#endif /* _SENNA_JAVA_H */ | |
12 | + |
@@ -0,0 +1,229 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +#include "senna_java.h" | |
20 | +#include "senna_Index.h" | |
21 | + | |
22 | +static sen_index * | |
23 | +this_sen_index(JNIEnv *env, jobject obj) | |
24 | +{ | |
25 | + jclass clazz; | |
26 | + jfieldID id; | |
27 | + clazz = (*env)->FindClass(env, "senna/Index"); | |
28 | + id = (*env)->GetFieldID(env, clazz, "ptr", "I"); | |
29 | + return (sen_index *) (*env)->GetIntField(env, obj, id); | |
30 | +} | |
31 | +static void | |
32 | +set_sen_index(JNIEnv *env, jobject obj, sen_index *index) | |
33 | +{ | |
34 | + jclass clazz; | |
35 | + jfieldID id; | |
36 | + clazz = (*env)->FindClass(env, "senna/Index"); | |
37 | + id = (*env)->GetFieldID(env, clazz, "ptr", "I"); | |
38 | + (*env)->SetIntField(env, obj, id, (jint) index); | |
39 | +} | |
40 | + | |
41 | +JNIEXPORT jobject JNICALL | |
42 | +Java_senna_Index_create(JNIEnv *env, jclass clazz, jstring path_str, | |
43 | + jint key_size, jint flags, jint initial_n_segments, jint encoding) | |
44 | +{ | |
45 | + const char *path; | |
46 | + sen_index *index; | |
47 | + jmethodID constructor; | |
48 | + jobject obj; | |
49 | + path = (*env)->GetStringUTFChars(env, path_str, NULL); | |
50 | + index = sen_index_create(path, key_size, flags, initial_n_segments, encoding); | |
51 | + (*env)->ReleaseStringUTFChars(env, path_str, path); | |
52 | + if (index == NULL) | |
53 | + ThrowNewSennaException(env, "Failed to call sen_index_create().", 0); | |
54 | + constructor = (*env)->GetMethodID(env, clazz, "<init>", "()V"); | |
55 | + obj = (*env)->NewObject(env, clazz, constructor); | |
56 | + set_sen_index(env, obj, index); | |
57 | + return obj; | |
58 | +} | |
59 | + | |
60 | +JNIEXPORT void JNICALL | |
61 | +Java_senna_Index_rename(JNIEnv *env, jclass clazz, jstring old_name_str, jstring new_name_str) | |
62 | +{ | |
63 | + const char *old_name, *new_name; | |
64 | + sen_rc rc; | |
65 | + old_name = (*env)->GetStringUTFChars(env, old_name_str, NULL); | |
66 | + new_name = (*env)->GetStringUTFChars(env, new_name_str, NULL); | |
67 | + rc = sen_index_rename(old_name, new_name); | |
68 | + (*env)->ReleaseStringUTFChars(env, old_name_str, old_name); | |
69 | + (*env)->ReleaseStringUTFChars(env, new_name_str, new_name); | |
70 | + if (rc != sen_success) | |
71 | + ThrowNewSennaException(env, "Failed to call sen_index_rename().", rc); | |
72 | +} | |
73 | + | |
74 | +JNIEXPORT void JNICALL | |
75 | +Java_senna_Index_remove(JNIEnv *env, jclass clazz, jstring path_str) | |
76 | +{ | |
77 | + const char *path; | |
78 | + sen_rc rc; | |
79 | + path = (*env)->GetStringUTFChars(env, path_str, NULL); | |
80 | + rc = sen_index_remove(path); | |
81 | + (*env)->ReleaseStringUTFChars(env, path_str, path); | |
82 | + if (rc != sen_success) | |
83 | + ThrowNewSennaException(env, "Failed to call sen_index_remove().", rc); | |
84 | +} | |
85 | + | |
86 | +JNIEXPORT void JNICALL | |
87 | +Java_senna_Index_open(JNIEnv *env, jobject obj, jstring path_str) | |
88 | +{ | |
89 | + const char *path; | |
90 | + sen_index *index; | |
91 | + path = (*env)->GetStringUTFChars(env, path_str, NULL); | |
92 | + index = sen_index_open(path); | |
93 | + (*env)->ReleaseStringUTFChars(env, path_str, path); | |
94 | + if (index == NULL) | |
95 | + ThrowNewSennaException(env, "Failed to call sen_index_open().", 0); | |
96 | + set_sen_index(env, obj, index); | |
97 | +} | |
98 | + | |
99 | +JNIEXPORT void JNICALL | |
100 | +Java_senna_Index_insert(JNIEnv *env, jobject obj, jstring key_str, jstring val_str) | |
101 | +{ | |
102 | + sen_index *index; | |
103 | + const char *key, *val; | |
104 | + jsize len; | |
105 | + sen_rc rc; | |
106 | + index = this_sen_index(env, obj); | |
107 | + key = (*env)->GetStringUTFChars(env, key_str, NULL); | |
108 | + val = (*env)->GetStringUTFChars(env, val_str, NULL); | |
109 | + len = (*env)->GetStringUTFLength(env, val_str); | |
110 | + rc = sen_index_upd(index, key, NULL, 0, val, len); | |
111 | + (*env)->ReleaseStringUTFChars(env, key_str, key); | |
112 | + (*env)->ReleaseStringUTFChars(env, val_str, val); | |
113 | + if (rc != sen_success) | |
114 | + ThrowNewSennaException(env, "Failed to call sen_index_upd().", rc); | |
115 | +} | |
116 | + | |
117 | +JNIEXPORT void JNICALL | |
118 | +Java_senna_Index_delete(JNIEnv *env, jobject obj, jstring key_str, | |
119 | + jstring old_str) | |
120 | +{ | |
121 | + sen_index *index; | |
122 | + const char *key, *old; | |
123 | + jsize len; | |
124 | + sen_rc rc; | |
125 | + index = this_sen_index(env, obj); | |
126 | + key = (*env)->GetStringUTFChars(env, key_str, NULL); | |
127 | + old = (*env)->GetStringUTFChars(env, old_str, NULL); | |
128 | + len = (*env)->GetStringUTFLength(env, old_str); | |
129 | + rc = sen_index_upd(index, key, old, len, NULL, 0); | |
130 | + (*env)->ReleaseStringUTFChars(env, key_str, key); | |
131 | + (*env)->ReleaseStringUTFChars(env, old_str, old); | |
132 | + if (rc != sen_success) | |
133 | + ThrowNewSennaException(env, "Failed to call sen_index_upd().", rc); | |
134 | +} | |
135 | + | |
136 | +JNIEXPORT void JNICALL | |
137 | +Java_senna_Index_upd(JNIEnv *env, jobject obj, jstring key_str, | |
138 | + jstring old_val_str, jstring new_val_str) | |
139 | +{ | |
140 | + sen_index *index; | |
141 | + const char *key, *old_val, *new_val; | |
142 | + jsize old_len, new_len; | |
143 | + sen_rc rc; | |
144 | + index = this_sen_index(env, obj); | |
145 | + key = (*env)->GetStringUTFChars(env, key_str, NULL); | |
146 | + old_val = (*env)->GetStringUTFChars(env, old_val_str, NULL); | |
147 | + new_val = (*env)->GetStringUTFChars(env, new_val_str, NULL); | |
148 | + old_len = (*env)->GetStringUTFLength(env, old_val_str); | |
149 | + new_len = (*env)->GetStringUTFLength(env, new_val_str); | |
150 | + rc = sen_index_upd(index, key, old_val, old_len, new_val, new_len); | |
151 | + (*env)->ReleaseStringUTFChars(env, key_str, key); | |
152 | + (*env)->ReleaseStringUTFChars(env, old_val_str, old_val); | |
153 | + (*env)->ReleaseStringUTFChars(env, new_val_str, new_val); | |
154 | + if (rc != sen_success) | |
155 | + ThrowNewSennaException(env, "Failed to call sen_index_upd().", rc); | |
156 | +} | |
157 | + | |
158 | +JNIEXPORT void JNICALL | |
159 | +Java_senna_Index_printInfo(JNIEnv *env, jobject obj) | |
160 | +{ | |
161 | + sen_index *index; | |
162 | + int key_size; | |
163 | + int flags; | |
164 | + int initial_n_segments; | |
165 | + sen_encoding encoding; | |
166 | + unsigned int nrecords_keys; | |
167 | + unsigned int file_size_keys; | |
168 | + unsigned int nrecords_lexicon; | |
169 | + unsigned int file_size_lexicon; | |
170 | + unsigned int inv_seg_size; | |
171 | + unsigned int inv_chunk_size; | |
172 | + sen_rc rc; | |
173 | + | |
174 | + index = this_sen_index(env, obj); | |
175 | + rc = sen_index_info(index, | |
176 | + &key_size, &flags, &initial_n_segments, &encoding, | |
177 | + &nrecords_keys, &file_size_keys, &nrecords_lexicon, | |
178 | + &file_size_lexicon, &inv_seg_size, &inv_chunk_size | |
179 | + ); | |
180 | + if (rc != sen_success) | |
181 | + ThrowNewSennaException(env, "Failed to call sen_index_info().", rc); | |
182 | + | |
183 | + printf("key_size %24d\n", key_size); | |
184 | + printf("flags %24d\n", flags); | |
185 | + printf("initial_n_segments %24d\n", initial_n_segments); | |
186 | + printf("encoding %24d\n", encoding); | |
187 | + printf("nrecords_keys %24u\n", nrecords_keys); | |
188 | + printf("file_size_keys %24u\n", file_size_keys); | |
189 | + printf("nrecords_lexicon %24u\n", nrecords_lexicon); | |
190 | + printf("file_size_lexicon %24u\n", file_size_lexicon); | |
191 | + printf("inv_segment_size %24u\n", inv_seg_size); | |
192 | + printf("inv_chunk_size %24u\n", inv_chunk_size); | |
193 | +} | |
194 | + | |
195 | +JNIEXPORT void JNICALL | |
196 | +Java_senna_Index_close(JNIEnv *env, jobject obj) | |
197 | +{ | |
198 | + sen_index *index; | |
199 | + sen_rc rc; | |
200 | + index = this_sen_index(env, obj); | |
201 | + rc = sen_index_close(index); | |
202 | + if (rc != sen_success) | |
203 | + ThrowNewSennaException(env, "Failed to call sen_index_close().", rc); | |
204 | +} | |
205 | + | |
206 | + | |
207 | +JNIEXPORT jobject JNICALL | |
208 | +Java_senna_Index_sel(JNIEnv *env, jobject obj, jstring query_str) | |
209 | +{ | |
210 | + sen_index *index; | |
211 | + sen_records *records; | |
212 | + const char *query; | |
213 | + jsize len; | |
214 | + jclass records_class; | |
215 | + jmethodID records_constructor; | |
216 | + jobject records_obj; | |
217 | + query = (*env)->GetStringUTFChars(env, query_str, NULL); | |
218 | + len = (*env)->GetStringUTFLength(env, query_str); | |
219 | + index = this_sen_index(env, obj); | |
220 | + records = sen_index_sel(index, query, len); | |
221 | + (*env)->ReleaseStringUTFChars(env, query_str, query); | |
222 | + if (records == NULL) | |
223 | + return NULL; | |
224 | + records_class = (*env)->FindClass(env, "senna/Records"); | |
225 | + records_constructor = (*env)->GetMethodID(env, records_class, "<init>", "(I)V"); | |
226 | + records_obj = (*env)->NewObject(env, records_class, records_constructor, (jint) records); | |
227 | + return records_obj; | |
228 | +} | |
229 | + |
@@ -0,0 +1,45 @@ | ||
1 | +/* DO NOT EDIT THIS FILE - it is machine generated */ | |
2 | +#include <jni.h> | |
3 | +/* Header for class senna_Snippet */ | |
4 | + | |
5 | +#ifndef _Included_senna_Snippet | |
6 | +#define _Included_senna_Snippet | |
7 | +#ifdef __cplusplus | |
8 | +extern "C" { | |
9 | +#endif | |
10 | +/* | |
11 | + * Class: senna_Snippet | |
12 | + * Method: open | |
13 | + * Signature: (IIIILjava/lang/String;Ljava/lang/String;I)V | |
14 | + */ | |
15 | +JNIEXPORT void JNICALL Java_senna_Snippet_open | |
16 | + (JNIEnv *, jobject, jint, jint, jint, jint, jstring, jstring, jint); | |
17 | + | |
18 | +/* | |
19 | + * Class: senna_Snippet | |
20 | + * Method: addCond | |
21 | + * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V | |
22 | + */ | |
23 | +JNIEXPORT void JNICALL Java_senna_Snippet_addCond | |
24 | + (JNIEnv *, jobject, jstring, jstring, jstring); | |
25 | + | |
26 | +/* | |
27 | + * Class: senna_Snippet | |
28 | + * Method: exec | |
29 | + * Signature: (Ljava/lang/String;)[Ljava/lang/String; | |
30 | + */ | |
31 | +JNIEXPORT jobjectArray JNICALL Java_senna_Snippet_exec | |
32 | + (JNIEnv *, jobject, jstring); | |
33 | + | |
34 | +/* | |
35 | + * Class: senna_Snippet | |
36 | + * Method: close | |
37 | + * Signature: ()V | |
38 | + */ | |
39 | +JNIEXPORT void JNICALL Java_senna_Snippet_close | |
40 | + (JNIEnv *, jobject); | |
41 | + | |
42 | +#ifdef __cplusplus | |
43 | +} | |
44 | +#endif | |
45 | +#endif |
@@ -0,0 +1,28 @@ | ||
1 | +CC = gcc | |
2 | +OPT = -Wall -fPIC | |
3 | +INCLUDES = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux | |
4 | +LIBS = -lsenna | |
5 | + | |
6 | +all: libsennajava.so | |
7 | + | |
8 | +libsennajava.so: senna_java.o senna_Senna.o senna_Index.o senna_Records.o senna_Snippet.o | |
9 | + $(CC) $(OPT) $(INCLUDES) $(LIBS) -shared -o $@ $^ | |
10 | + | |
11 | +senna_java.o: senna_java.c senna_java.h | |
12 | + $(CC) $(OPT) $(INCLUDES) -o $@ -g -c $< | |
13 | + | |
14 | +senna_Senna.o: senna_Senna.c senna_Senna.h | |
15 | + $(CC) $(OPT) $(INCLUDES) -o $@ -g -c $< | |
16 | + | |
17 | +senna_Index.o: senna_Index.c senna_Index.h | |
18 | + $(CC) $(OPT) $(INCLUDES) -o $@ -g -c $< | |
19 | + | |
20 | +senna_Records.o: senna_Records.c senna_Records.h | |
21 | + $(CC) $(OPT) $(INCLUDES) -o $@ -g -c $< | |
22 | + | |
23 | +senna_Snippet.o: senna_Snippet.c senna_Snippet.h | |
24 | + $(CC) $(OPT) $(INCLUDES) -o $@ -g -c $< | |
25 | + | |
26 | +clean: | |
27 | + rm -f *.so *.o | |
28 | + |
@@ -0,0 +1,65 @@ | ||
1 | +/* DO NOT EDIT THIS FILE - it is machine generated */ | |
2 | +#include <jni.h> | |
3 | +/* Header for class senna_Senna */ | |
4 | + | |
5 | +#ifndef _Included_senna_Senna | |
6 | +#define _Included_senna_Senna | |
7 | +#ifdef __cplusplus | |
8 | +extern "C" { | |
9 | +#endif | |
10 | +#undef senna_Senna_SEN_INDEX_NORMALIZE | |
11 | +#define senna_Senna_SEN_INDEX_NORMALIZE 1L | |
12 | +#undef senna_Senna_SEN_INDEX_SPLIT_ALPHA | |
13 | +#define senna_Senna_SEN_INDEX_SPLIT_ALPHA 2L | |
14 | +#undef senna_Senna_SEN_INDEX_SPLIT_DIGIT | |
15 | +#define senna_Senna_SEN_INDEX_SPLIT_DIGIT 4L | |
16 | +#undef senna_Senna_SEN_INDEX_SPLIT_SYMBOL | |
17 | +#define senna_Senna_SEN_INDEX_SPLIT_SYMBOL 8L | |
18 | +#undef senna_Senna_SEN_INDEX_MORPH_ANALYSE | |
19 | +#define senna_Senna_SEN_INDEX_MORPH_ANALYSE 0L | |
20 | +#undef senna_Senna_SEN_INDEX_NGRAM | |
21 | +#define senna_Senna_SEN_INDEX_NGRAM 16L | |
22 | +#undef senna_Senna_SEN_INDEX_DELIMITED | |
23 | +#define senna_Senna_SEN_INDEX_DELIMITED 32L | |
24 | +#undef senna_Senna_SEN_INDEX_ENABLE_SUFFIX_SEARCH | |
25 | +#define senna_Senna_SEN_INDEX_ENABLE_SUFFIX_SEARCH 256L | |
26 | +#undef senna_Senna_SEN_INDEX_DISABLE_SUFFIX_SEARCH | |
27 | +#define senna_Senna_SEN_INDEX_DISABLE_SUFFIX_SEARCH 512L | |
28 | +#undef senna_Senna_SEN_INDEX_WITH_STORE | |
29 | +#define senna_Senna_SEN_INDEX_WITH_STORE 4096L | |
30 | +#undef senna_Senna_SEN_INDEX_WITH_VACUUM | |
31 | +#define senna_Senna_SEN_INDEX_WITH_VACUUM 32768L | |
32 | +#undef senna_Senna_SEN_ENC_DEFAULT | |
33 | +#define senna_Senna_SEN_ENC_DEFAULT 0L | |
34 | +#undef senna_Senna_SEN_ENC_NONE | |
35 | +#define senna_Senna_SEN_ENC_NONE 1L | |
36 | +#undef senna_Senna_SEN_ENC_EUCJP | |
37 | +#define senna_Senna_SEN_ENC_EUCJP 2L | |
38 | +#undef senna_Senna_SEN_ENC_UTF8 | |
39 | +#define senna_Senna_SEN_ENC_UTF8 3L | |
40 | +#undef senna_Senna_SEN_ENC_SJIS | |
41 | +#define senna_Senna_SEN_ENC_SJIS 4L | |
42 | +#undef senna_Senna_SEN_ENC_LATIN1 | |
43 | +#define senna_Senna_SEN_ENC_LATIN1 5L | |
44 | +#undef senna_Senna_SEN_ENC_KOI8R | |
45 | +#define senna_Senna_SEN_ENC_KOI8R 6L | |
46 | +/* | |
47 | + * Class: senna_Senna | |
48 | + * Method: init | |
49 | + * Signature: ()V | |
50 | + */ | |
51 | +JNIEXPORT void JNICALL Java_senna_Senna_init | |
52 | + (JNIEnv *, jclass); | |
53 | + | |
54 | +/* | |
55 | + * Class: senna_Senna | |
56 | + * Method: fin | |
57 | + * Signature: ()V | |
58 | + */ | |
59 | +JNIEXPORT void JNICALL Java_senna_Senna_fin | |
60 | + (JNIEnv *, jclass); | |
61 | + | |
62 | +#ifdef __cplusplus | |
63 | +} | |
64 | +#endif | |
65 | +#endif |
@@ -0,0 +1,90 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +package senna; | |
20 | + | |
21 | +/** | |
22 | + * Wrapper for sen_records | |
23 | + */ | |
24 | +public class Records { | |
25 | + | |
26 | + /* C pointer to sen_records */ | |
27 | + private int ptr; | |
28 | + | |
29 | + /** | |
30 | + * creates new records object. | |
31 | + * | |
32 | + * @param ptr | |
33 | + * C pointer | |
34 | + */ | |
35 | + Records(int ptr) { | |
36 | + this.ptr = ptr; | |
37 | + } | |
38 | + | |
39 | + /** | |
40 | + * call sen_records_next(). | |
41 | + * | |
42 | + * @return next keys or null. | |
43 | + */ | |
44 | + public native String next(); | |
45 | + | |
46 | + /** | |
47 | + * call sen_records_close(). | |
48 | + * | |
49 | + * @throws SennaException | |
50 | + */ | |
51 | + public native void close() throws SennaException; | |
52 | + | |
53 | + /** | |
54 | + * call sen_records_curr_score(). | |
55 | + * | |
56 | + * @return curr_score | |
57 | + */ | |
58 | + public native int currScore(); | |
59 | + | |
60 | + /** | |
61 | + * call sen_records_curr_key(). | |
62 | + * | |
63 | + * @return curr_key | |
64 | + */ | |
65 | + public native String currKey(); | |
66 | + | |
67 | + /** | |
68 | + * call sen_records_rewind(). | |
69 | + * | |
70 | + * @throws SennaException | |
71 | + */ | |
72 | + public native void rewind() throws SennaException; | |
73 | + | |
74 | + /** | |
75 | + * call sen_records_nhits(). | |
76 | + * | |
77 | + * @return nhits | |
78 | + */ | |
79 | + public native int nhits(); | |
80 | + | |
81 | + /** | |
82 | + * call sen_records_find(). | |
83 | + * | |
84 | + * @param key | |
85 | + * key | |
86 | + * @return score | |
87 | + */ | |
88 | + public native int find(String key); | |
89 | + | |
90 | +} |
@@ -0,0 +1,111 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +package senna; | |
20 | + | |
21 | +/** | |
22 | + * Wrapper for sen_snip | |
23 | + */ | |
24 | +public class Snippet { | |
25 | + | |
26 | + private int ptr; | |
27 | + | |
28 | + /** | |
29 | + * create new object by sen_snip_open(). | |
30 | + * | |
31 | + * @param encoding | |
32 | + * encoding | |
33 | + * @param flags | |
34 | + * flags | |
35 | + * @param width | |
36 | + * width | |
37 | + * @param maxResults | |
38 | + * maxResults | |
39 | + * @param defaultOpenTag | |
40 | + * defaultOpenTag | |
41 | + * @param defaultCloseTag | |
42 | + * defaultCloseTag | |
43 | + * @param mapping | |
44 | + * mapping | |
45 | + * @throws SennaException | |
46 | + */ | |
47 | + public Snippet(int encoding, int flags, int width, int maxResults, | |
48 | + String defaultOpenTag, String defaultCloseTag, int mapping) | |
49 | + throws SennaException { | |
50 | + open(encoding, flags, width, maxResults, defaultOpenTag, | |
51 | + defaultCloseTag, mapping); | |
52 | + } | |
53 | + | |
54 | + private native void open(int encoding, int flags, int width, | |
55 | + int max_results, String defaultopentag, String defaultclosetag, | |
56 | + int mapping) throws SennaException; | |
57 | + | |
58 | + /** | |
59 | + * call sen_snip_add_cond(). | |
60 | + * | |
61 | + * @param keyword | |
62 | + * keyword | |
63 | + * @throws SennaException | |
64 | + */ | |
65 | + public void addCond(String keyword) throws SennaException { | |
66 | + addCond(keyword, null, null); | |
67 | + } | |
68 | + | |
69 | + /** | |
70 | + * call sen_snip_add_cond(). | |
71 | + * | |
72 | + * @param keyword | |
73 | + * keyword | |
74 | + * @param openTag | |
75 | + * openTag | |
76 | + * @throws SennaException | |
77 | + */ | |
78 | + public void addCond(String keyword, String openTag) throws SennaException { | |
79 | + addCond(keyword, openTag, null); | |
80 | + } | |
81 | + | |
82 | + /** | |
83 | + * call sen_snip_add_cond(). | |
84 | + * | |
85 | + * @param keyword | |
86 | + * keyword | |
87 | + * @param openTag | |
88 | + * openTag | |
89 | + * @param closeTag | |
90 | + * closeTag | |
91 | + * @throws SennaException | |
92 | + */ | |
93 | + public native void addCond(String keyword, String openTag, String closeTag) | |
94 | + throws SennaException; | |
95 | + | |
96 | + /** | |
97 | + * call sen_snip_exec(). | |
98 | + * | |
99 | + * @param string | |
100 | + * string | |
101 | + * @return results | |
102 | + */ | |
103 | + public native String[] exec(String string) throws SennaException; | |
104 | + | |
105 | + /** | |
106 | + * call sen_snip_close(). | |
107 | + * | |
108 | + * @throws SennaException | |
109 | + */ | |
110 | + public native void close() throws SennaException; | |
111 | +} |
@@ -0,0 +1,49 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +package senna; | |
20 | + | |
21 | +/** | |
22 | + * SennaExcepion | |
23 | + */ | |
24 | +public class SennaException extends Exception { | |
25 | + | |
26 | + private static final long serialVersionUID = 4758313833334805879L; | |
27 | + | |
28 | + /** | |
29 | + * Constructs a SennaException with the specified detail message. | |
30 | + * | |
31 | + * @param message | |
32 | + * message | |
33 | + */ | |
34 | + public SennaException(String message) { | |
35 | + super(message); | |
36 | + } | |
37 | + | |
38 | + /** | |
39 | + * Constructs a SennaException with the specified detail message and sen_rc. | |
40 | + * | |
41 | + * @param message | |
42 | + * message | |
43 | + * @param rc | |
44 | + * sen_rc | |
45 | + */ | |
46 | + public SennaException(String message, int rc) { | |
47 | + this(message + "\n" + "error code: " + rc + "\n"); | |
48 | + } | |
49 | +} |
@@ -0,0 +1,99 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +package senna; | |
20 | + | |
21 | +/** | |
22 | + * Senna Java Binding. | |
23 | + */ | |
24 | +public class Senna { | |
25 | + | |
26 | + static { | |
27 | + System.loadLibrary("sennajava"); | |
28 | + } | |
29 | + | |
30 | + /** SEN_INDEX_NORMALIZE */ | |
31 | + public static final int SEN_INDEX_NORMALIZE = 0x0001; | |
32 | + | |
33 | + /** SEN_INDEX_SPLIT_ALPHA */ | |
34 | + public static final int SEN_INDEX_SPLIT_ALPHA = 0x0002; | |
35 | + | |
36 | + /** SEN_INDEX_SPLIT_DIGIT */ | |
37 | + public static final int SEN_INDEX_SPLIT_DIGIT = 0x0004; | |
38 | + | |
39 | + /** SEN_INDEX_SPLIT_SYMBOL */ | |
40 | + public static final int SEN_INDEX_SPLIT_SYMBOL = 0x0008; | |
41 | + | |
42 | + /** SEN_INDEX_MORPH_ANALYSE */ | |
43 | + public static final int SEN_INDEX_MORPH_ANALYSE = 0x0000; | |
44 | + | |
45 | + /** SEN_INDEX_NGRAM */ | |
46 | + public static final int SEN_INDEX_NGRAM = 0x0010; | |
47 | + | |
48 | + /** SEN_INDEX_DELIMITED */ | |
49 | + public static final int SEN_INDEX_DELIMITED = 0x0020; | |
50 | + | |
51 | + /** SEN_INDEX_ENABLE_SUFFIX_SEARCH */ | |
52 | + public static final int SEN_INDEX_ENABLE_SUFFIX_SEARCH = 0x0100; | |
53 | + | |
54 | + /** SEN_INDEX_DISABLE_SUFFIX_SEARCH */ | |
55 | + public static final int SEN_INDEX_DISABLE_SUFFIX_SEARCH = 0x0200; | |
56 | + | |
57 | + /** SEN_INDEX_WITH_STORE */ | |
58 | + public static final int SEN_INDEX_WITH_STORE = 0x1000; | |
59 | + | |
60 | + /** SEN_INDEX_WITH_VACUUM */ | |
61 | + public static final int SEN_INDEX_WITH_VACUUM = 0x8000; | |
62 | + | |
63 | + /** sen_enc_default */ | |
64 | + public static final int SEN_ENC_DEFAULT = 0; | |
65 | + | |
66 | + /** sen_enc_none */ | |
67 | + public static final int SEN_ENC_NONE = 1; | |
68 | + | |
69 | + /** sen_enc_eucjp */ | |
70 | + public static final int SEN_ENC_EUCJP = 2; | |
71 | + | |
72 | + /** sen_enc_utf8 */ | |
73 | + public static final int SEN_ENC_UTF8 = 3; | |
74 | + | |
75 | + /** sen_enc_sjis */ | |
76 | + public static final int SEN_ENC_SJIS = 4; | |
77 | + | |
78 | + /** sen_enc_latin1 */ | |
79 | + public static final int SEN_ENC_LATIN1 = 5; | |
80 | + | |
81 | + /** sen_enc_koi8r */ | |
82 | + public static final int SEN_ENC_KOI8R = 6; | |
83 | + | |
84 | + /** | |
85 | + * call sen_init(). | |
86 | + * | |
87 | + * @throws SennaException | |
88 | + */ | |
89 | + public static native void init() throws SennaException; | |
90 | + | |
91 | + /** | |
92 | + * call sen_fin(). | |
93 | + * | |
94 | + * @throws SennaException | |
95 | + */ | |
96 | + public static native void fin() throws SennaException; | |
97 | + | |
98 | +} | |
99 | + |
@@ -0,0 +1,236 @@ | ||
1 | +/* | |
2 | + * Copyright(C) 2007 Jiro Nishiguchi <jiro@cpan.org> | |
3 | + * | |
4 | + * This library is free software; you can redistribute it and/or | |
5 | + * modify it under the terms of the GNU Lesser General Public | |
6 | + * License as published by the Free Software Foundation; either | |
7 | + * version 2.1 of the License, or (at your option) any later version. | |
8 | + * | |
9 | + * This library is distributed in the hope that it will be useful, | |
10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | + * Lesser General Public License for more details. | |
13 | + * | |
14 | + * You should have received a copy of the GNU Lesser General Public | |
15 | + * License along with this library; if not, write to the Free Software | |
16 | + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
17 | + */ | |
18 | + | |
19 | +package senna; | |
20 | + | |
21 | +/** | |
22 | + * Wrapper for sen_index | |
23 | + */ | |
24 | +public class Index { | |
25 | + | |
26 | + /** | |
27 | + * <pre> | |
28 | + * call sen_index_create() with below values. | |
29 | + * keySize: 0 | |
30 | + * flags: 0 | |
31 | + * initialNSegments: 0 | |
32 | + * encoding: SEN_ENC_DEFAULT | |
33 | + * </pre> | |
34 | + * | |
35 | + * @param path | |
36 | + * path | |
37 | + * @return created sen_index | |
38 | + * @throws SennaException | |
39 | + */ | |
40 | + public static Index create(String path) throws SennaException { | |
41 | + return create(path, 0, 0, 0, Senna.SEN_ENC_DEFAULT); | |
42 | + } | |
43 | + | |
44 | + /** | |
45 | + * <pre> | |
46 | + * call sen_index_create() with below values. | |
47 | + * flags: 0 | |
48 | + * initialNSegments: 0 | |
49 | + * encoding: SEN_ENC_DEFAULT | |
50 | + * </pre> | |
51 | + * | |
52 | + * @param path | |
53 | + * path | |
54 | + * @param keySize | |
55 | + * key size | |
56 | + * @return created sen_index | |
57 | + * @throws SennaException | |
58 | + */ | |
59 | + public static Index create(String path, int keySize) throws SennaException { | |
60 | + return create(path, keySize, 0, 0, Senna.SEN_ENC_DEFAULT); | |
61 | + } | |
62 | + | |
63 | + /** | |
64 | + * <pre> | |
65 | + * call sen_index_create() with below values. | |
66 | + * initialNSegments: 0 | |
67 | + * encoding: SEN_ENC_DEFAULT | |
68 | + * </pre> | |
69 | + * | |
70 | + * @param path | |
71 | + * path | |
72 | + * @param keySize | |
73 | + * key size | |
74 | + * @param flags | |
75 | + * flags | |
76 | + * @return created sen_index | |
77 | + * @throws SennaException | |
78 | + */ | |
79 | + public static Index create(String path, int keySize, int flags) | |
80 | + throws SennaException { | |
81 | + return create(path, keySize, flags, 0, Senna.SEN_ENC_DEFAULT); | |
82 | + } | |
83 | + | |
84 | + /** | |
85 | + * <pre> | |
86 | + * call sen_index_create() with below values. | |
87 | + * encoding: SEN_ENC_DEFAULT | |
88 | + * </pre> | |
89 | + * | |
90 | + * @param path | |
91 | + * path | |
92 | + * @param keySize | |
93 | + * key size | |
94 | + * @param flags | |
95 | + * flags | |
96 | + * @param initialNSegments | |
97 | + * initialNSegments | |
98 | + * @return created sen_index | |
99 | + * @throws SennaException | |
100 | + */ | |
101 | + public static Index create(String path, int keySize, int flags, | |
102 | + int initialNSegments) throws SennaException { | |
103 | + return create(path, keySize, flags, initialNSegments, | |
104 | + Senna.SEN_ENC_DEFAULT); | |
105 | + } | |
106 | + | |
107 | + /** | |
108 | + * call sen_index_create(). | |
109 | + * | |
110 | + * @param path | |
111 | + * path | |
112 | + * @param keySize | |
113 | + * key size | |
114 | + * @param flags | |
115 | + * flags | |
116 | + * @param initialNSegments | |
117 | + * initialNSegments | |
118 | + * @param encoding | |
119 | + * encoding | |
120 | + * @return created sen_index | |
121 | + * @throws SennaException | |
122 | + */ | |
123 | + public static native Index create(String path, int keySize, int flags, | |
124 | + int initialNSegments, int encoding) throws SennaException; | |
125 | + | |
126 | + /** | |
127 | + * call sen_index_rename(). | |
128 | + * | |
129 | + * @param oldName | |
130 | + * old name | |
131 | + * @param newName | |
132 | + * new name | |
133 | + * @throws SennaException | |
134 | + * | |
135 | + */ | |
136 | + public static native void rename(String oldName, String newName) | |
137 | + throws SennaException; | |
138 | + | |
139 | + /** | |
140 | + * call sen_index_remove(). | |
141 | + * | |
142 | + * @param path | |
143 | + * path | |
144 | + * @throws SennaException | |
145 | + */ | |
146 | + public static native void remove(String path) throws SennaException; | |
147 | + | |
148 | + /* C pointer to sen_index */ | |
149 | + private int ptr; | |
150 | + | |
151 | + /* for create() */ | |
152 | + private Index() { | |
153 | + } | |
154 | + | |
155 | + /** | |
156 | + * creates new object with sen_index_open(). | |
157 | + * | |
158 | + * @param path | |
159 | + * path | |
160 | + * @throws SennaException | |
161 | + */ | |
162 | + public Index(String path) throws SennaException { | |
163 | + open(path); | |
164 | + } | |
165 | + | |
166 | + /** | |
167 | + * call sen_index_open(). | |
168 | + * | |
169 | + * @param path | |
170 | + * path | |
171 | + * @throws SennaException | |
172 | + */ | |
173 | + private native void open(String path) throws SennaException; | |
174 | + | |
175 | + /** | |
176 | + * call sen_index_upd(). | |
177 | + * | |
178 | + * @param key | |
179 | + * key | |
180 | + * @param value | |
181 | + * value | |
182 | + * @throws SennaException | |
183 | + */ | |
184 | + public native void insert(String key, String value) throws SennaException; | |
185 | + | |
186 | + /** | |
187 | + * call sen_index_upd(). | |
188 | + * | |
189 | + * @param key | |
190 | + * key | |
191 | + * @param oldValue | |
192 | + * old value | |
193 | + * @throws SennaException | |
194 | + */ | |
195 | + public native void delete(String key, String oldValue) | |
196 | + throws SennaException; | |
197 | + | |
198 | + /** | |
199 | + * call sen_index_upd(). | |
200 | + * | |
201 | + * @param key | |
202 | + * key | |
203 | + * @param oldValue | |
204 | + * old value | |
205 | + * @param newValue | |
206 | + * new value | |
207 | + * @throws SennaException | |
208 | + */ | |
209 | + public native void upd(String key, String oldValue, String newValue) | |
210 | + throws SennaException; | |
211 | + | |
212 | + /** | |
213 | + * call sen_index_info() and print results. | |
214 | + * | |
215 | + * @throws SennaException | |
216 | + */ | |
217 | + public native void printInfo() throws SennaException; | |
218 | + | |
219 | + /** | |
220 | + * call sen_index_close(). | |
221 | + * | |
222 | + * @throws SennaException | |
223 | + */ | |
224 | + public native void close() throws SennaException; | |
225 | + | |
226 | + /** | |
227 | + * call sen_index_sel(). | |
228 | + * | |
229 | + * @param query | |
230 | + * query | |
231 | + * @return records | |
232 | + * @throws SennaException | |
233 | + */ | |
234 | + public native Records sel(String query) throws SennaException; | |
235 | + | |
236 | +} |
@@ -0,0 +1,3 @@ | ||
1 | +.classpath | |
2 | +.project | |
3 | +.settings |
@@ -0,0 +1,504 @@ | ||
1 | + GNU LESSER GENERAL PUBLIC LICENSE | |
2 | + Version 2.1, February 1999 | |
3 | + | |
4 | + Copyright (C) 1991, 1999 Free Software Foundation, Inc. | |
5 | + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
6 | + Everyone is permitted to copy and distribute verbatim copies | |
7 | + of this license document, but changing it is not allowed. | |
8 | + | |
9 | +[This is the first released version of the Lesser GPL. It also counts | |
10 | + as the successor of the GNU Library Public License, version 2, hence | |
11 | + the version number 2.1.] | |
12 | + | |
13 | + Preamble | |
14 | + | |
15 | + The licenses for most software are designed to take away your | |
16 | +freedom to share and change it. By contrast, the GNU General Public | |
17 | +Licenses are intended to guarantee your freedom to share and change | |
18 | +free software--to make sure the software is free for all its users. | |
19 | + | |
20 | + This license, the Lesser General Public License, applies to some | |
21 | +specially designated software packages--typically libraries--of the | |
22 | +Free Software Foundation and other authors who decide to use it. You | |
23 | +can use it too, but we suggest you first think carefully about whether | |
24 | +this license or the ordinary General Public License is the better | |
25 | +strategy to use in any particular case, based on the explanations below. | |
26 | + | |
27 | + When we speak of free software, we are referring to freedom of use, | |
28 | +not price. Our General Public Licenses are designed to make sure that | |
29 | +you have the freedom to distribute copies of free software (and charge | |
30 | +for this service if you wish); that you receive source code or can get | |
31 | +it if you want it; that you can change the software and use pieces of | |
32 | +it in new free programs; and that you are informed that you can do | |
33 | +these things. | |
34 | + | |
35 | + To protect your rights, we need to make restrictions that forbid | |
36 | +distributors to deny you these rights or to ask you to surrender these | |
37 | +rights. These restrictions translate to certain responsibilities for | |
38 | +you if you distribute copies of the library or if you modify it. | |
39 | + | |
40 | + For example, if you distribute copies of the library, whether gratis | |
41 | +or for a fee, you must give the recipients all the rights that we gave | |
42 | +you. You must make sure that they, too, receive or can get the source | |
43 | +code. If you link other code with the library, you must provide | |
44 | +complete object files to the recipients, so that they can relink them | |
45 | +with the library after making changes to the library and recompiling | |
46 | +it. And you must show them these terms so they know their rights. | |
47 | + | |
48 | + We protect your rights with a two-step method: (1) we copyright the | |
49 | +library, and (2) we offer you this license, which gives you legal | |
50 | +permission to copy, distribute and/or modify the library. | |
51 | + | |
52 | + To protect each distributor, we want to make it very clear that | |
53 | +there is no warranty for the free library. Also, if the library is | |
54 | +modified by someone else and passed on, the recipients should know | |
55 | +that what they have is not the original version, so that the original | |
56 | +author's reputation will not be affected by problems that might be | |
57 | +introduced by others. | |
58 | + | |
59 | + Finally, software patents pose a constant threat to the existence of | |
60 | +any free program. We wish to make sure that a company cannot | |
61 | +effectively restrict the users of a free program by obtaining a | |
62 | +restrictive license from a patent holder. Therefore, we insist that | |
63 | +any patent license obtained for a version of the library must be | |
64 | +consistent with the full freedom of use specified in this license. | |
65 | + | |
66 | + Most GNU software, including some libraries, is covered by the | |
67 | +ordinary GNU General Public License. This license, the GNU Lesser | |
68 | +General Public License, applies to certain designated libraries, and | |
69 | +is quite different from the ordinary General Public License. We use | |
70 | +this license for certain libraries in order to permit linking those | |
71 | +libraries into non-free programs. | |
72 | + | |
73 | + When a program is linked with a library, whether statically or using | |
74 | +a shared library, the combination of the two is legally speaking a | |
75 | +combined work, a derivative of the original library. The ordinary | |
76 | +General Public License therefore permits such linking only if the | |
77 | +entire combination fits its criteria of freedom. The Lesser General | |
78 | +Public License permits more lax criteria for linking other code with | |
79 | +the library. | |
80 | + | |
81 | + We call this license the "Lesser" General Public License because it | |
82 | +does Less to protect the user's freedom than the ordinary General | |
83 | +Public License. It also provides other free software developers Less | |
84 | +of an advantage over competing non-free programs. These disadvantages | |
85 | +are the reason we use the ordinary General Public License for many | |
86 | +libraries. However, the Lesser license provides advantages in certain | |
87 | +special circumstances. | |
88 | + | |
89 | + For example, on rare occasions, there may be a special need to | |
90 | +encourage the widest possible use of a certain library, so that it becomes | |
91 | +a de-facto standard. To achieve this, non-free programs must be | |
92 | +allowed to use the library. A more frequent case is that a free | |
93 | +library does the same job as widely used non-free libraries. In this | |
94 | +case, there is little to gain by limiting the free library to free | |
95 | +software only, so we use the Lesser General Public License. | |
96 | + | |
97 | + In other cases, permission to use a particular library in non-free | |
98 | +programs enables a greater number of people to use a large body of | |
99 | +free software. For example, permission to use the GNU C Library in | |
100 | +non-free programs enables many more people to use the whole GNU | |
101 | +operating system, as well as its variant, the GNU/Linux operating | |
102 | +system. | |
103 | + | |
104 | + Although the Lesser General Public License is Less protective of the | |
105 | +users' freedom, it does ensure that the user of a program that is | |
106 | +linked with the Library has the freedom and the wherewithal to run | |
107 | +that program using a modified version of the Library. | |
108 | + | |
109 | + The precise terms and conditions for copying, distribution and | |
110 | +modification follow. Pay close attention to the difference between a | |
111 | +"work based on the library" and a "work that uses the library". The | |
112 | +former contains code derived from the library, whereas the latter must | |
113 | +be combined with the library in order to run. | |
114 | + | |
115 | + GNU LESSER GENERAL PUBLIC LICENSE | |
116 | + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | |
117 | + | |
118 | + 0. This License Agreement applies to any software library or other | |
119 | +program which contains a notice placed by the copyright holder or | |
120 | +other authorized party saying it may be distributed under the terms of | |
121 | +this Lesser General Public License (also called "this License"). | |
122 | +Each licensee is addressed as "you". | |
123 | + | |
124 | + A "library" means a collection of software functions and/or data | |
125 | +prepared so as to be conveniently linked with application programs | |
126 | +(which use some of those functions and data) to form executables. | |
127 | + | |
128 | + The "Library", below, refers to any such software library or work | |
129 | +which has been distributed under these terms. A "work based on the | |
130 | +Library" means either the Library or any derivative work under | |
131 | +copyright law: that is to say, a work containing the Library or a | |
132 | +portion of it, either verbatim or with modifications and/or translated | |
133 | +straightforwardly into another language. (Hereinafter, translation is | |
134 | +included without limitation in the term "modification".) | |
135 | + | |
136 | + "Source code" for a work means the preferred form of the work for | |
137 | +making modifications to it. For a library, complete source code means | |
138 | +all the source code for all modules it contains, plus any associated | |
139 | +interface definition files, plus the scripts used to control compilation | |
140 | +and installation of the library. | |
141 | + | |
142 | + Activities other than copying, distribution and modification are not | |
143 | +covered by this License; they are outside its scope. The act of | |
144 | +running a program using the Library is not restricted, and output from | |
145 | +such a program is covered only if its contents constitute a work based | |
146 | +on the Library (independent of the use of the Library in a tool for | |
147 | +writing it). Whether that is true depends on what the Library does | |
148 | +and what the program that uses the Library does. | |
149 | + | |
150 | + 1. You may copy and distribute verbatim copies of the Library's | |
151 | +complete source code as you receive it, in any medium, provided that | |
152 | +you conspicuously and appropriately publish on each copy an | |
153 | +appropriate copyright notice and disclaimer of warranty; keep intact | |
154 | +all the notices that refer to this License and to the absence of any | |
155 | +warranty; and distribute a copy of this License along with the | |
156 | +Library. | |
157 | + | |
158 | + You may charge a fee for the physical act of transferring a copy, | |
159 | +and you may at your option offer warranty protection in exchange for a | |
160 | +fee. | |
161 | + | |
162 | + 2. You may modify your copy or copies of the Library or any portion | |
163 | +of it, thus forming a work based on the Library, and copy and | |
164 | +distribute such modifications or work under the terms of Section 1 | |
165 | +above, provided that you also meet all of these conditions: | |
166 | + | |
167 | + a) The modified work must itself be a software library. | |
168 | + | |
169 | + b) You must cause the files modified to carry prominent notices | |
170 | + stating that you changed the files and the date of any change. | |
171 | + | |
172 | + c) You must cause the whole of the work to be licensed at no | |
173 | + charge to all third parties under the terms of this License. | |
174 | + | |
175 | + d) If a facility in the modified Library refers to a function or a | |
176 | + table of data to be supplied by an application program that uses | |
177 | + the facility, other than as an argument passed when the facility | |
178 | + is invoked, then you must make a good faith effort to ensure that, | |
179 | + in the event an application does not supply such function or | |
180 | + table, the facility still operates, and performs whatever part of | |
181 | + its purpose remains meaningful. | |
182 | + | |
183 | + (For example, a function in a library to compute square roots has | |
184 | + a purpose that is entirely well-defined independent of the | |
185 | + application. Therefore, Subsection 2d requires that any | |
186 | + application-supplied function or table used by this function must | |
187 | + be optional: if the application does not supply it, the square | |
188 | + root function must still compute square roots.) | |
189 | + | |
190 | +These requirements apply to the modified work as a whole. If | |
191 | +identifiable sections of that work are not derived from the Library, | |
192 | +and can be reasonably considered independent and separate works in | |
193 | +themselves, then this License, and its terms, do not apply to those | |
194 | +sections when you distribute them as separate works. But when you | |
195 | +distribute the same sections as part of a whole which is a work based | |
196 | +on the Library, the distribution of the whole must be on the terms of | |
197 | +this License, whose permissions for other licensees extend to the | |
198 | +entire whole, and thus to each and every part regardless of who wrote | |
199 | +it. | |
200 | + | |
201 | +Thus, it is not the intent of this section to claim rights or contest | |
202 | +your rights to work written entirely by you; rather, the intent is to | |
203 | +exercise the right to control the distribution of derivative or | |
204 | +collective works based on the Library. | |
205 | + | |
206 | +In addition, mere aggregation of another work not based on the Library | |
207 | +with the Library (or with a work based on the Library) on a volume of | |
208 | +a storage or distribution medium does not bring the other work under | |
209 | +the scope of this License. | |
210 | + | |
211 | + 3. You may opt to apply the terms of the ordinary GNU General Public | |
212 | +License instead of this License to a given copy of the Library. To do | |
213 | +this, you must alter all the notices that refer to this License, so | |
214 | +that they refer to the ordinary GNU General Public License, version 2, | |
215 | +instead of to this License. (If a newer version than version 2 of the | |
216 | +ordinary GNU General Public License has appeared, then you can specify | |
217 | +that version instead if you wish.) Do not make any other change in | |
218 | +these notices. | |
219 | + | |
220 | + Once this change is made in a given copy, it is irreversible for | |
221 | +that copy, so the ordinary GNU General Public License applies to all | |
222 | +subsequent copies and derivative works made from that copy. | |
223 | + | |
224 | + This option is useful when you wish to copy part of the code of | |
225 | +the Library into a program that is not a library. | |
226 | + | |
227 | + 4. You may copy and distribute the Library (or a portion or | |
228 | +derivative of it, under Section 2) in object code or executable form | |
229 | +under the terms of Sections 1 and 2 above provided that you accompany | |
230 | +it with the complete corresponding machine-readable source code, which | |
231 | +must be distributed under the terms of Sections 1 and 2 above on a | |
232 | +medium customarily used for software interchange. | |
233 | + | |
234 | + If distribution of object code is made by offering access to copy | |
235 | +from a designated place, then offering equivalent access to copy the | |
236 | +source code from the same place satisfies the requirement to | |
237 | +distribute the source code, even though third parties are not | |
238 | +compelled to copy the source along with the object code. | |
239 | + | |
240 | + 5. A program that contains no derivative of any portion of the | |
241 | +Library, but is designed to work with the Library by being compiled or | |
242 | +linked with it, is called a "work that uses the Library". Such a | |
243 | +work, in isolation, is not a derivative work of the Library, and | |
244 | +therefore falls outside the scope of this License. | |
245 | + | |
246 | + However, linking a "work that uses the Library" with the Library | |
247 | +creates an executable that is a derivative of the Library (because it | |
248 | +contains portions of the Library), rather than a "work that uses the | |
249 | +library". The executable is therefore covered by this License. | |
250 | +Section 6 states terms for distribution of such executables. | |
251 | + | |
252 | + When a "work that uses the Library" uses material from a header file | |
253 | +that is part of the Library, the object code for the work may be a | |
254 | +derivative work of the Library even though the source code is not. | |
255 | +Whether this is true is especially significant if the work can be | |
256 | +linked without the Library, or if the work is itself a library. The | |
257 | +threshold for this to be true is not precisely defined by law. | |
258 | + | |
259 | + If such an object file uses only numerical parameters, data | |
260 | +structure layouts and accessors, and small macros and small inline | |
261 | +functions (ten lines or less in length), then the use of the object | |
262 | +file is unrestricted, regardless of whether it is legally a derivative | |
263 | +work. (Executables containing this object code plus portions of the | |
264 | +Library will still fall under Section 6.) | |
265 | + | |
266 | + Otherwise, if the work is a derivative of the Library, you may | |
267 | +distribute the object code for the work under the terms of Section 6. | |
268 | +Any executables containing that work also fall under Section 6, | |
269 | +whether or not they are linked directly with the Library itself. | |
270 | + | |
271 | + 6. As an exception to the Sections above, you may also combine or | |
272 | +link a "work that uses the Library" with the Library to produce a | |
273 | +work containing portions of the Library, and distribute that work | |
274 | +under terms of your choice, provided that the terms permit | |
275 | +modification of the work for the customer's own use and reverse | |
276 | +engineering for debugging such modifications. | |
277 | + | |
278 | + You must give prominent notice with each copy of the work that the | |
279 | +Library is used in it and that the Library and its use are covered by | |
280 | +this License. You must supply a copy of this License. If the work | |
281 | +during execution displays copyright notices, you must include the | |
282 | +copyright notice for the Library among them, as well as a reference | |
283 | +directing the user to the copy of this License. Also, you must do one | |
284 | +of these things: | |
285 | + | |
286 | + a) Accompany the work with the complete corresponding | |
287 | + machine-readable source code for the Library including whatever | |
288 | + changes were used in the work (which must be distributed under | |
289 | + Sections 1 and 2 above); and, if the work is an executable linked | |
290 | + with the Library, with the complete machine-readable "work that | |
291 | + uses the Library", as object code and/or source code, so that the | |
292 | + user can modify the Library and then relink to produce a modified | |
293 | + executable containing the modified Library. (It is understood | |
294 | + that the user who changes the contents of definitions files in the | |
295 | + Library will not necessarily be able to recompile the application | |
296 | + to use the modified definitions.) | |
297 | + | |
298 | + b) Use a suitable shared library mechanism for linking with the | |
299 | + Library. A suitable mechanism is one that (1) uses at run time a | |
300 | + copy of the library already present on the user's computer system, | |
301 | + rather than copying library functions into the executable, and (2) | |
302 | + will operate properly with a modified version of the library, if | |
303 | + the user installs one, as long as the modified version is | |
304 | + interface-compatible with the version that the work was made with. | |
305 | + | |
306 | + c) Accompany the work with a written offer, valid for at | |
307 | + least three years, to give the same user the materials | |
308 | + specified in Subsection 6a, above, for a charge no more | |
309 | + than the cost of performing this distribution. | |
310 | + | |
311 | + d) If distribution of the work is made by offering access to copy | |
312 | + from a designated place, offer equivalent access to copy the above | |
313 | + specified materials from the same place. | |
314 | + | |
315 | + e) Verify that the user has already received a copy of these | |
316 | + materials or that you have already sent this user a copy. | |
317 | + | |
318 | + For an executable, the required form of the "work that uses the | |
319 | +Library" must include any data and utility programs needed for | |
320 | +reproducing the executable from it. However, as a special exception, | |
321 | +the materials to be distributed need not include anything that is | |
322 | +normally distributed (in either source or binary form) with the major | |
323 | +components (compiler, kernel, and so on) of the operating system on | |
324 | +which the executable runs, unless that component itself accompanies | |
325 | +the executable. | |
326 | + | |
327 | + It may happen that this requirement contradicts the license | |
328 | +restrictions of other proprietary libraries that do not normally | |
329 | +accompany the operating system. Such a contradiction means you cannot | |
330 | +use both them and the Library together in an executable that you | |
331 | +distribute. | |
332 | + | |
333 | + 7. You may place library facilities that are a work based on the | |
334 | +Library side-by-side in a single library together with other library | |
335 | +facilities not covered by this License, and distribute such a combined | |
336 | +library, provided that the separate distribution of the work based on | |
337 | +the Library and of the other library facilities is otherwise | |
338 | +permitted, and provided that you do these two things: | |
339 | + | |
340 | + a) Accompany the combined library with a copy of the same work | |
341 | + based on the Library, uncombined with any other library | |
342 | + facilities. This must be distributed under the terms of the | |
343 | + Sections above. | |
344 | + | |
345 | + b) Give prominent notice with the combined library of the fact | |
346 | + that part of it is a work based on the Library, and explaining | |
347 | + where to find the accompanying uncombined form of the same work. | |
348 | + | |
349 | + 8. You may not copy, modify, sublicense, link with, or distribute | |
350 | +the Library except as expressly provided under this License. Any | |
351 | +attempt otherwise to copy, modify, sublicense, link with, or | |
352 | +distribute the Library is void, and will automatically terminate your | |
353 | +rights under this License. However, parties who have received copies, | |
354 | +or rights, from you under this License will not have their licenses | |
355 | +terminated so long as such parties remain in full compliance. | |
356 | + | |
357 | + 9. You are not required to accept this License, since you have not | |
358 | +signed it. However, nothing else grants you permission to modify or | |
359 | +distribute the Library or its derivative works. These actions are | |
360 | +prohibited by law if you do not accept this License. Therefore, by | |
361 | +modifying or distributing the Library (or any work based on the | |
362 | +Library), you indicate your acceptance of this License to do so, and | |
363 | +all its terms and conditions for copying, distributing or modifying | |
364 | +the Library or works based on it. | |
365 | + | |
366 | + 10. Each time you redistribute the Library (or any work based on the | |
367 | +Library), the recipient automatically receives a license from the | |
368 | +original licensor to copy, distribute, link with or modify the Library | |
369 | +subject to these terms and conditions. You may not impose any further | |
370 | +restrictions on the recipients' exercise of the rights granted herein. | |
371 | +You are not responsible for enforcing compliance by third parties with | |
372 | +this License. | |
373 | + | |
374 | + 11. If, as a consequence of a court judgment or allegation of patent | |
375 | +infringement or for any other reason (not limited to patent issues), | |
376 | +conditions are imposed on you (whether by court order, agreement or | |
377 | +otherwise) that contradict the conditions of this License, they do not | |
378 | +excuse you from the conditions of this License. If you cannot | |
379 | +distribute so as to satisfy simultaneously your obligations under this | |
380 | +License and any other pertinent obligations, then as a consequence you | |
381 | +may not distribute the Library at all. For example, if a patent | |
382 | +license would not permit royalty-free redistribution of the Library by | |
383 | +all those who receive copies directly or indirectly through you, then | |
384 | +the only way you could satisfy both it and this License would be to | |
385 | +refrain entirely from distribution of the Library. | |
386 | + | |
387 | +If any portion of this section is held invalid or unenforceable under any | |
388 | +particular circumstance, the balance of the section is intended to apply, | |
389 | +and the section as a whole is intended to apply in other circumstances. | |
390 | + | |
391 | +It is not the purpose of this section to induce you to infringe any | |
392 | +patents or other property right claims or to contest validity of any | |
393 | +such claims; this section has the sole purpose of protecting the | |
394 | +integrity of the free software distribution system which is | |
395 | +implemented by public license practices. Many people have made | |
396 | +generous contributions to the wide range of software distributed | |
397 | +through that system in reliance on consistent application of that | |
398 | +system; it is up to the author/donor to decide if he or she is willing | |
399 | +to distribute software through any other system and a licensee cannot | |
400 | +impose that choice. | |
401 | + | |
402 | +This section is intended to make thoroughly clear what is believed to | |
403 | +be a consequence of the rest of this License. | |
404 | + | |
405 | + 12. If the distribution and/or use of the Library is restricted in | |
406 | +certain countries either by patents or by copyrighted interfaces, the | |
407 | +original copyright holder who places the Library under this License may add | |
408 | +an explicit geographical distribution limitation excluding those countries, | |
409 | +so that distribution is permitted only in or among countries not thus | |
410 | +excluded. In such case, this License incorporates the limitation as if | |
411 | +written in the body of this License. | |
412 | + | |
413 | + 13. The Free Software Foundation may publish revised and/or new | |
414 | +versions of the Lesser General Public License from time to time. | |
415 | +Such new versions will be similar in spirit to the present version, | |
416 | +but may differ in detail to address new problems or concerns. | |
417 | + | |
418 | +Each version is given a distinguishing version number. If the Library | |
419 | +specifies a version number of this License which applies to it and | |
420 | +"any later version", you have the option of following the terms and | |
421 | +conditions either of that version or of any later version published by | |
422 | +the Free Software Foundation. If the Library does not specify a | |
423 | +license version number, you may choose any version ever published by | |
424 | +the Free Software Foundation. | |
425 | + | |
426 | + 14. If you wish to incorporate parts of the Library into other free | |
427 | +programs whose distribution conditions are incompatible with these, | |
428 | +write to the author to ask for permission. For software which is | |
429 | +copyrighted by the Free Software Foundation, write to the Free | |
430 | +Software Foundation; we sometimes make exceptions for this. Our | |
431 | +decision will be guided by the two goals of preserving the free status | |
432 | +of all derivatives of our free software and of promoting the sharing | |
433 | +and reuse of software generally. | |
434 | + | |
435 | + NO WARRANTY | |
436 | + | |
437 | + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO | |
438 | +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. | |
439 | +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR | |
440 | +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY | |
441 | +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE | |
442 | +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
443 | +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE | |
444 | +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME | |
445 | +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | |
446 | + | |
447 | + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN | |
448 | +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY | |
449 | +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU | |
450 | +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR | |
451 | +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE | |
452 | +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING | |
453 | +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A | |
454 | +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF | |
455 | +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH | |
456 | +DAMAGES. | |
457 | + | |
458 | + END OF TERMS AND CONDITIONS | |
459 | + | |
460 | + How to Apply These Terms to Your New Libraries | |
461 | + | |
462 | + If you develop a new library, and you want it to be of the greatest | |
463 | +possible use to the public, we recommend making it free software that | |
464 | +everyone can redistribute and change. You can do so by permitting | |
465 | +redistribution under these terms (or, alternatively, under the terms of the | |
466 | +ordinary General Public License). | |
467 | + | |
468 | + To apply these terms, attach the following notices to the library. It is | |
469 | +safest to attach them to the start of each source file to most effectively | |
470 | +convey the exclusion of warranty; and each file should have at least the | |
471 | +"copyright" line and a pointer to where the full notice is found. | |
472 | + | |
473 | + <one line to give the library's name and a brief idea of what it does.> | |
474 | + Copyright (C) <year> <name of author> | |
475 | + | |
476 | + This library is free software; you can redistribute it and/or | |
477 | + modify it under the terms of the GNU Lesser General Public | |
478 | + License as published by the Free Software Foundation; either | |
479 | + version 2.1 of the License, or (at your option) any later version. | |
480 | + | |
481 | + This library is distributed in the hope that it will be useful, | |
482 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
483 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
484 | + Lesser General Public License for more details. | |
485 | + | |
486 | + You should have received a copy of the GNU Lesser General Public | |
487 | + License along with this library; if not, write to the Free Software | |
488 | + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
489 | + | |
490 | +Also add information on how to contact you by electronic and paper mail. | |
491 | + | |
492 | +You should also get your employer (if you work as a programmer) or your | |
493 | +school, if any, to sign a "copyright disclaimer" for the library, if | |
494 | +necessary. Here is a sample; alter the names: | |
495 | + | |
496 | + Yoyodyne, Inc., hereby disclaims all copyright interest in the | |
497 | + library `Frob' (a library for tweaking knobs) written by James Random Hacker. | |
498 | + | |
499 | + <signature of Ty Coon>, 1 April 1990 | |
500 | + Ty Coon, President of Vice | |
501 | + | |
502 | +That's all there is to it! | |
503 | + | |
504 | + |
@@ -0,0 +1,20 @@ | ||
1 | +* Senna-Java: Wrapper for Fulltext Search Engine Senna | |
2 | + | |
3 | +*License | |
4 | + | |
5 | +This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation. | |
6 | + | |
7 | +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. | |
8 | + | |
9 | +*Requirements | |
10 | + | |
11 | +- OS | |
12 | +-- Linux | |
13 | +- Requirements | |
14 | +-- Java Runtime Environment 1.4.2 or later | |
15 | +-- Senna-1.00 or later [[http://qwik.jp/senna/]] | |
16 | + | |
17 | +*Contact | |
18 | + | |
19 | +<jiro@cpan.org> | |
20 | + |
@@ -0,0 +1,115 @@ | ||
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<project name="senna-java" default="jni" basedir="."> | |
3 | + <property name="project" value="senna-java" /> | |
4 | + <property name="version" value="0.01" /> | |
5 | + <property name="build.src" value="src/java" /> | |
6 | + <property name="build.dest" value="classes" /> | |
7 | + <property name="build.jar" value="${project}-${version}.jar" /> | |
8 | + <property name="jni.source" value="src/jni" /> | |
9 | + <property name="test.src" value="src/test" /> | |
10 | + <property name="test.dest" value="tests" /> | |
11 | + <property name="javadoc.dest" value="docs" /> | |
12 | + <property name="dist.dir" value="${project}-${version}" /> | |
13 | + <property name="debug" value="false" /> | |
14 | + <target name="compile"> | |
15 | + <mkdir dir="${build.dest}" /> | |
16 | + <mkdir dir="${test.dest}" /> | |
17 | + <javac srcdir="${build.src}" | |
18 | + debug="${debug}" | |
19 | + destdir="${build.dest}" | |
20 | + encoding="utf-8" | |
21 | + source="1.4"> | |
22 | + </javac> | |
23 | + </target> | |
24 | + <target name="jar" depends="compile"> | |
25 | + <jar jarfile="${build.jar}" basedir="${build.dest}"> | |
26 | + </jar> | |
27 | + </target> | |
28 | + <target name="javadoc"> | |
29 | + <javadoc packagenames="*" | |
30 | + sourcepath="${build.src}" | |
31 | + destdir="${javadoc.dest}" | |
32 | + charset="utf-8" | |
33 | + source="1.4"> | |
34 | + </javadoc> | |
35 | + </target> | |
36 | + <target name="javah" depends="compile"> | |
37 | + <javah classpath="${build.dest}" | |
38 | + class="senna.Senna" | |
39 | + outputfile="${jni.source}/senna_Senna.h" /> | |
40 | + <javah classpath="${build.dest}" | |
41 | + class="senna.Index" | |
42 | + outputfile="${jni.source}/senna_Index.h" /> | |
43 | + <javah classpath="${build.dest}" | |
44 | + class="senna.Records" | |
45 | + outputfile="${jni.source}/senna_Records.h" /> | |
46 | + <javah classpath="${build.dest}" | |
47 | + class="senna.Snippet" | |
48 | + outputfile="${jni.source}/senna_Snippet.h" /> | |
49 | + </target> | |
50 | + <target name="jni" depends="jar"> | |
51 | + <exec dir="${jni.source}" executable="make" /> | |
52 | + <copy file="${jni.source}/libsennajava.so" tofile="libsennajava.so" /> | |
53 | + <chmod file="libsennajava.so" perm="755" /> | |
54 | + </target> | |
55 | + <target name="test" depends="compile,jni"> | |
56 | + <javac srcdir="${test.src}" | |
57 | + debug="${debug}" | |
58 | + destdir="${test.dest}" | |
59 | + classpath="lib/junit.jar:${build.dest}" | |
60 | + encoding="utf-8" | |
61 | + source="1.4"> | |
62 | + </javac> | |
63 | + <junit haltonerror="off" | |
64 | + haltonfailure="off" | |
65 | + filtertrace="on" | |
66 | + showoutput="on"> | |
67 | + <classpath> | |
68 | + <pathelement location="${test.dest}" /> | |
69 | + <pathelement location="${build.dest}" /> | |
70 | + </classpath> | |
71 | + <formatter type="brief" /> | |
72 | + <test name="senna.IndexTest"> | |
73 | + </test> | |
74 | + </junit> | |
75 | + </target> | |
76 | + <target name="dist" depends="jar"> | |
77 | + <mkdir dir="${dist.dir}" /> | |
78 | + <copy file="${build.jar}" todir="${dist.dir}" /> | |
79 | + <antcall target="clean" /> | |
80 | + <antcall target="javadoc" /> | |
81 | + <copy todir="${dist.dir}"> | |
82 | + <fileset file="build.xml" /> | |
83 | + <fileset file="README" /> | |
84 | + <fileset file="INSTALL" /> | |
85 | + <fileset file="COPYING" /> | |
86 | + <fileset file="ChangeLog" /> | |
87 | + </copy> | |
88 | + <copy todir="${dist.dir}/doc"> | |
89 | + <fileset dir="${javadoc.dest}" /> | |
90 | + </copy> | |
91 | + <copy todir="${dist.dir}/src"> | |
92 | + <fileset dir="src" /> | |
93 | + </copy> | |
94 | + <copy todir="${dist.dir}/lib"> | |
95 | + <fileset dir="lib" /> | |
96 | + </copy> | |
97 | + <tar destfile="${dist.dir}.tar.gz" | |
98 | + basedir="." | |
99 | + includes="${dist.dir}/**/*" | |
100 | + compression="gzip" /> | |
101 | + <delete dir="${dist.dir}" /> | |
102 | + </target> | |
103 | + <target name="clean"> | |
104 | + <delete dir="${build.dest}" /> | |
105 | + <delete dir="${test.dest}" /> | |
106 | + <delete dir="${javadoc.dest}" /> | |
107 | + <exec dir="${jni.source}" executable="make"> | |
108 | + <arg value="clean" /> | |
109 | + </exec> | |
110 | + <delete file="${build.jar}" /> | |
111 | + <delete file="libsennajava.so" /> | |
112 | + <delete file="TEST-senna.IndexTest.txt" /> | |
113 | + <delete file="${project}-${version}.tar.gz" /> | |
114 | + </target> | |
115 | +</project> |