• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package jp.co.omronsoft.openwnn;
18 
19 /**
20  * The implementation class of JNI wrapper for dictionary.
21  *
22  * @author Copyright (C) 2008, 2009 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
23  */
24 public class OpenWnnDictionaryImplJni {
25     /*
26      * DEFINITION OF CONSTANTS
27      */
28     /**
29      * Constant about the approximate pattern (for JNI native library)
30      *
31      * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_TOUPPER
32      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#setApproxPattern
33      */
34     public static final int APPROX_PATTERN_EN_TOUPPER               = WnnDictionary.APPROX_PATTERN_EN_TOUPPER;
35     /**
36      * Constant about the approximate pattern (for JNI native library)
37      *
38      * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_TOLOWER
39      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#setApproxPattern
40      */
41     public static final int APPROX_PATTERN_EN_TOLOWER               = WnnDictionary.APPROX_PATTERN_EN_TOLOWER;
42     /**
43      * Constant about the approximate pattern (for JNI native library)
44      *
45      * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_QWERTY_NEAR
46      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#setApproxPattern
47      */
48     public static final int APPROX_PATTERN_EN_QWERTY_NEAR           = WnnDictionary.APPROX_PATTERN_EN_QWERTY_NEAR;
49     /**
50      * Constant about the approximate pattern (for JNI native library)
51      *
52      * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_QWERTY_NEAR_UPPER
53      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#setApproxPattern
54      */
55     public static final int APPROX_PATTERN_EN_QWERTY_NEAR_UPPER     = WnnDictionary.APPROX_PATTERN_EN_QWERTY_NEAR_UPPER;
56     /**
57      * Constant about the approximate pattern (for JNI native library)
58      *
59      * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_JAJP_12KEY_NORMAL
60      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#setApproxPattern
61      */
62     public static final int APPROX_PATTERN_JAJP_12KEY_NORMAL        = WnnDictionary.APPROX_PATTERN_JAJP_12KEY_NORMAL;
63 
64     /**
65      * Constant about the search operation (for JNI native library)
66      *
67      * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_EXACT
68      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#searchWord
69      */
70     public static final int SEARCH_EXACT                           = WnnDictionary.SEARCH_EXACT;
71     /**
72      * Constant about the search operation (for JNI native library)
73      *
74      * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_PREFIX
75      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#searchWord
76      */
77     public static final int SEARCH_PREFIX                          = WnnDictionary.SEARCH_PREFIX;
78     /**
79      * Constant about the search operation (for JNI native library)
80      *
81      * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_LINK
82      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#searchWord
83      */
84     public static final int SEARCH_LINK                            = WnnDictionary.SEARCH_LINK;
85 
86     /**
87      * Constant about the sort order (for JNI native library)
88      *
89      * @see jp.co.omronsoft.openwnn.WnnDictionary#ORDER_BY_FREQUENCY
90      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#searchWord
91      */
92     public static final int ORDER_BY_FREQUENCY                     = WnnDictionary.ORDER_BY_FREQUENCY;
93     /**
94      * Constant about the sort order (for JNI native library)
95      *
96      * @see jp.co.omronsoft.openwnn.WnnDictionary#ORDER_BY_KEY
97      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#searchWord
98      */
99     public static final int ORDER_BY_KEY                           = WnnDictionary.ORDER_BY_KEY;
100 
101     /**
102      * Type of a part of speech (for JNI native library)
103      * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_V1
104      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType
105      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType
106      */
107     public static final int POS_TYPE_V1                             = WnnDictionary.POS_TYPE_V1;
108     /**
109      * Type of a part of speech (for JNI native library)
110      * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_V2
111      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType
112      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType
113      */
114     public static final int POS_TYPE_V2                             = WnnDictionary.POS_TYPE_V2;
115     /**
116      * Type of a part of speech (for JNI native library)
117      * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_V3
118      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType
119      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType
120      */
121     public static final int POS_TYPE_V3                             = WnnDictionary.POS_TYPE_V3;
122     /**
123      * Type of a part of speech (for JNI native library)
124      * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_BUNTOU
125      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType
126      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType
127      */
128     public static final int POS_TYPE_BUNTOU                         = WnnDictionary.POS_TYPE_BUNTOU;
129     /**
130      * Type of a part of speech (for JNI native library)
131      * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_TANKANJI
132      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType
133      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType
134      */
135     public static final int POS_TYPE_TANKANJI                       = WnnDictionary.POS_TYPE_TANKANJI;
136     /**
137      * Type of a part of speech (for JNI native library)
138      * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_SUUJI
139      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType
140      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType
141      */
142     public static final int POS_TYPE_SUUJI                          = WnnDictionary.POS_TYPE_SUUJI;
143     /**
144      * Type of a part of speech (for JNI native library)
145      * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_MEISI
146      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType
147      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType
148      */
149     public static final int POS_TYPE_MEISI                          = WnnDictionary.POS_TYPE_MEISI;
150     /**
151      * Type of a part of speech (for JNI native library)
152      * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_JINMEI
153      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType
154      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType
155      */
156     public static final int POS_TYPE_JINMEI                         = WnnDictionary.POS_TYPE_JINMEI;
157     /**
158      * Type of a part of speech (for JNI native library)
159      * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_CHIMEI
160      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType
161      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType
162      */
163     public static final int POS_TYPE_CHIMEI                         = WnnDictionary.POS_TYPE_CHIMEI;
164     /**
165      * Type of a part of speech (for JNI native library)
166      * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_KIGOU
167      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType
168      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType
169      */
170     public static final int POS_TYPE_KIGOU                          = WnnDictionary.POS_TYPE_KIGOU;
171 
172     /*
173      * METHODS
174      */
175     /**
176      * Create a internal work area.
177      * A internal work area is allocated dynamically, and the specified dictionary library is loaded.
178      *
179      * @param dicLibPath    The path of the dictionary library file
180      * @return              The internal work area or null
181      */
createWnnWork( String dicLibPath )182     public static final native long createWnnWork( String dicLibPath );
183 
184     /**
185      * Free the internal work area.
186      * The specified work area and the loaded dictionary library is free.
187      *
188      * @param work      The internal work area
189      * @return          0 if processing is successful; <0 if an error occur
190      */
freeWnnWork( long work )191     public static final native int freeWnnWork( long work );
192 
193     /**
194      * Clear all dictionary information.
195      *
196      * @see jp.co.omronsoft.openwnn.WnnDictionary#clearDictionary
197      * @param work      The internal work area
198      * @return          0 if processing is successful; <0 if an error occur
199      */
clearDictionaryParameters( long work )200     public static final native int clearDictionaryParameters( long work );
201 
202     /**
203      * Set a dictionary information.
204      *
205      * @see jp.co.omronsoft.openwnn.WnnDictionary#setDictionary
206      * @param work      The internal work area
207      * @param index     The index of dictionary
208      * @param base      The base frequency or -1
209      * @param high      The maximum frequency or -1
210      * @return           0 if processing is successful; <0 otherwise
211      */
setDictionaryParameter( long work, int index, int base, int high )212     public static final native int setDictionaryParameter( long work, int index, int base, int high );
213 
214     /**
215      * Search a word from dictionaries.
216      *
217      * @see jp.co.omronsoft.openwnn.WnnDictionary#searchWord
218      * @param work          The internal work area
219      * @param operation     The search operation (see "Constant about the search operation")
220      * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_EXACT
221      * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_PREFIX
222      * @param order         The sort order (see "Constant about the sort order")
223      * @see jp.co.omronsoft.openwnn.WnnDictionary#ORDER_BY_FREQUENCY
224      * @see jp.co.omronsoft.openwnn.WnnDictionary#ORDER_BY_KEY
225      * @param keyString     The key string
226      * @return              0 if no result is found; 1 if a result is found; <0 if an error occur
227      *
228      */
searchWord(long work, int operation, int order, String keyString )229     public static final native int searchWord(long work, int operation, int order, String keyString );
230 
231     /**
232      * Retrieve a word information.
233      * A word information is stored to the internal work area. To retrieve a detail information,
234      * use {@code getStroke()}, {@code getCandidate()}, {@code getFreqeuency(),} or other {@code get...()} method.
235      *
236      * @see jp.co.omronsoft.openwnn.WnnDictionary#getNextWord
237      * @param work      The internal work area
238      * @param length    >0 if only the result of specified length is retrieved; 0 if no condition exist
239      * @return          0 if no result is retrieved; >0 if a result is retrieved; <0 if an error occur
240      */
getNextWord( long work, int length )241     public static final native int getNextWord( long work, int length );
242 
243     /**
244      * Retrieve the key string from the current word information.
245      *
246      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getNextWord
247      * @param work      The internal work area
248      * @return          The Key string
249      */
getStroke( long work )250     public static final native String getStroke( long work );
251 
252     /**
253      * Retrieve the candidate string from the current word information.
254      *
255      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getNextWord
256      * @param work      The internal work area
257      * @return          The candidate string
258      */
getCandidate( long work )259     public static final native String getCandidate( long work );
260 
261     /**
262      * Retrieve the frequency from the current word information.
263      *
264      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getNextWord
265      * @param work      The internal work area
266      * @return          The frequency
267      */
getFrequency( long work )268     public static final native int getFrequency( long work );
269 
270     /**
271      * Retrieve the part of speech at left side from the current word information.
272      *
273      * @param work      The internal work area
274      * @return          The part of speech
275      */
getLeftPartOfSpeech( long work )276     public static final native int getLeftPartOfSpeech( long work );
277 
278     /**
279      * Retrieve the part of speech at right side from the current word information.
280      *
281      * @param work      The internal work area
282      * @return          The part of speech
283      */
getRightPartOfSpeech( long work )284     public static final native int getRightPartOfSpeech( long work );
285 
286     /**
287      * Clear approximate patterns.
288      *
289      * @see jp.co.omronsoft.openwnn.WnnDictionary#clearApproxPattern
290      * @param work      The internal work area.
291      */
clearApproxPatterns( long work )292     public static final native void clearApproxPatterns( long work );
293 
294     /**
295      * Set a approximate pattern.
296      *
297      * @see jp.co.omronsoft.openwnn.WnnDictionary#setApproxPattern
298      * @param work      The internal work area
299      * @param src       The string (before)
300      * @param dst       The string (after)
301      * @return          0 if processing is successful; <0 if an error occur
302      */
setApproxPattern( long work, String src, String dst )303     public static final native int setApproxPattern( long work, String src, String dst );
304 
305     /**
306      * Set a predefined approximate pattern.
307      *
308      * @see jp.co.omronsoft.openwnn.WnnDictionary#setApproxPattern
309      * @param work              The internal work area
310      * @param approxPattern     The index of predefined approximate pattern (See "Constant about the approximate pattern")
311      * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_TOUPPER
312      * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_TOLOWER
313      * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_QWERTY_NEAR
314      * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_QWERTY_NEAR_UPPER
315      * @return                  0 if processing is successful; <0 if an error occur
316      */
setApproxPattern( long work, int approxPattern )317     public static final native int setApproxPattern( long work, int approxPattern );
318 
319     /**
320      * Get the specified approximate pattern.
321      * @param work      The internal work area
322      * @param src       The string (before)
323      * @return          The string array (after)
324      */
getApproxPattern( long work, String src )325     public static final native String[] getApproxPattern( long work, String src );
326 
327     /**
328      * Clear the current word information.
329      *
330      * @param work      The internal work area
331      */
clearResult( long work )332     public static final native void clearResult( long work );
333 
334     /**
335      * Set the part of speech at left side to the current word information.
336      *
337      * @param work          The internal work area
338      * @param partOfSpeech  The part of speech
339      * @return              0 if processing is successful; <0 if an error occur
340      *
341      */
setLeftPartOfSpeech( long work, int partOfSpeech )342     public static final native int setLeftPartOfSpeech( long work, int partOfSpeech );
343     /**
344      * Set the part of speech at right side to the current word information.
345      *
346      * @param work          The internal work area
347      * @param partOfSpeech  The part of speech
348      * @return              0 if processing is successful; <0 if an error occur
349      *
350      */
setRightPartOfSpeech( long work, int partOfSpeech )351     public static final native int setRightPartOfSpeech( long work, int partOfSpeech );
352 
353     /**
354      * Set the key string to the current word information.
355      *
356      * @param work          The internal work area
357      * @param stroke        The key string
358      * @return              0 if processing is successful; <0 if an error occur
359      *
360      */
setStroke( long work, String stroke )361     public static final native int setStroke( long work, String stroke );
362     /**
363      * Set the candidate string to the current word information.
364      *
365      * @param work          The internal work area
366      * @param candidate     The candidate string
367      * @return              0 if processing is successful; <0 if an error occur
368      *
369      */
setCandidate( long work, String candidate )370     public static final native int setCandidate( long work, String candidate );
371 
372     /**
373      * Set the previous word information from the current word information.
374      *
375      * @param work          The internal work area
376      * @return              0 if processing is successful; <0 if an error occur
377      */
selectWord( long work )378     public static final native int selectWord( long work );
379 
380     /**
381      * Retrieve the connect array
382      *
383      * @param work                  The internal work area
384      * @param leftPartOfSpeech      The part of speech at left side
385      * @return                      The connect array
386      */
getConnectArray( long work, int leftPartOfSpeech )387     public static final native byte[] getConnectArray( long work, int leftPartOfSpeech );
388 
389     /**
390      * Retrieve the number of the part of speeches at left side.
391      *
392      * @return              The number
393      */
getNumberOfLeftPOS( long work )394     public static final native int getNumberOfLeftPOS( long work );
395     /**
396      * Retrieve the number of the part of speeches at right side.
397      *
398      * @return              The number
399      */
getNumberOfRightPOS( long work )400     public static final native int getNumberOfRightPOS( long work );
401 
402     /**
403      * Retrieve the specified part of speech at left side.
404      *
405      * @param work          The internal work area
406      * @param type          The type of a part of speech
407      * @return              0 if type is not found; <0 if an error occur; >0 The part of speech
408      */
getLeftPartOfSpeechSpecifiedType( long work, int type )409     public static final native int getLeftPartOfSpeechSpecifiedType( long work, int type );
410 
411     /**
412      * Retrieve the specified part of speech at right side.
413      *
414      * @param work          The internal work area
415      * @param type          The type of a part of speech
416      * @return              0 if type is not found; <0 if an error occur; >0 The part of speech
417      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_V1
418      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_V2
419      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_V3
420      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_BUNTOU
421      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_TANKANJI
422      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_SUUJI
423      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_MEISI
424      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_JINMEI
425      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_CHIMEI
426      * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_KIGOU
427      */
getRightPartOfSpeechSpecifiedType( long work, int type )428     public static final native int getRightPartOfSpeechSpecifiedType( long work, int type );
429 
430     /**
431      * Create the string array that is used by operation of query
432      *
433      * @param work                  The internal work area
434      * @param keyString             The key string
435      * @param maxBindsOfQuery       The maximum number of binds of query
436      * @param maxPatternOfApprox    The maximum number of approximate patterns per character
437      * @return                     The string array for binding
438      */
createBindArray( long work, String keyString, int maxBindsOfQuery, int maxPatternOfApprox )439     public static final native String[] createBindArray( long work, String keyString, int maxBindsOfQuery, int maxPatternOfApprox );
440 
441     /**
442      * Create the string which used query parameter
443      *
444      * @param work                  The internal work area
445      * @param maxBindsOfQuery       The maximum number of binds of query
446      * @param maxPatternOfApprox    The maximum number of approximate patterns per character
447      * @param keyColumnName        The name of the key column
448      * @return                     The string for querying
449      */
createQueryStringBase( long work, int maxBindsOfQuery, int maxPatternOfApprox, String keyColumnName )450     public static final native String createQueryStringBase( long work, int maxBindsOfQuery, int maxPatternOfApprox, String keyColumnName );
451 }
452