/* * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jp.co.omronsoft.openwnn; /** * The implementation class of JNI wrapper for dictionary. * * @author Copyright (C) 2008, 2009 OMRON SOFTWARE CO., LTD. All Rights Reserved. */ public class OpenWnnDictionaryImplJni { /* * DEFINITION OF CONSTANTS */ /** * Constant about the approximate pattern (for JNI native library) * * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_TOUPPER * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#setApproxPattern */ public static final int APPROX_PATTERN_EN_TOUPPER = WnnDictionary.APPROX_PATTERN_EN_TOUPPER; /** * Constant about the approximate pattern (for JNI native library) * * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_TOLOWER * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#setApproxPattern */ public static final int APPROX_PATTERN_EN_TOLOWER = WnnDictionary.APPROX_PATTERN_EN_TOLOWER; /** * Constant about the approximate pattern (for JNI native library) * * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_QWERTY_NEAR * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#setApproxPattern */ public static final int APPROX_PATTERN_EN_QWERTY_NEAR = WnnDictionary.APPROX_PATTERN_EN_QWERTY_NEAR; /** * Constant about the approximate pattern (for JNI native library) * * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_QWERTY_NEAR_UPPER * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#setApproxPattern */ public static final int APPROX_PATTERN_EN_QWERTY_NEAR_UPPER = WnnDictionary.APPROX_PATTERN_EN_QWERTY_NEAR_UPPER; /** * Constant about the approximate pattern (for JNI native library) * * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_JAJP_12KEY_NORMAL * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#setApproxPattern */ public static final int APPROX_PATTERN_JAJP_12KEY_NORMAL = WnnDictionary.APPROX_PATTERN_JAJP_12KEY_NORMAL; /** * Constant about the search operation (for JNI native library) * * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_EXACT * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#searchWord */ public static final int SEARCH_EXACT = WnnDictionary.SEARCH_EXACT; /** * Constant about the search operation (for JNI native library) * * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_PREFIX * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#searchWord */ public static final int SEARCH_PREFIX = WnnDictionary.SEARCH_PREFIX; /** * Constant about the search operation (for JNI native library) * * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_LINK * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#searchWord */ public static final int SEARCH_LINK = WnnDictionary.SEARCH_LINK; /** * Constant about the sort order (for JNI native library) * * @see jp.co.omronsoft.openwnn.WnnDictionary#ORDER_BY_FREQUENCY * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#searchWord */ public static final int ORDER_BY_FREQUENCY = WnnDictionary.ORDER_BY_FREQUENCY; /** * Constant about the sort order (for JNI native library) * * @see jp.co.omronsoft.openwnn.WnnDictionary#ORDER_BY_KEY * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#searchWord */ public static final int ORDER_BY_KEY = WnnDictionary.ORDER_BY_KEY; /** * Type of a part of speech (for JNI native library) * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_V1 * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType */ public static final int POS_TYPE_V1 = WnnDictionary.POS_TYPE_V1; /** * Type of a part of speech (for JNI native library) * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_V2 * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType */ public static final int POS_TYPE_V2 = WnnDictionary.POS_TYPE_V2; /** * Type of a part of speech (for JNI native library) * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_V3 * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType */ public static final int POS_TYPE_V3 = WnnDictionary.POS_TYPE_V3; /** * Type of a part of speech (for JNI native library) * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_BUNTOU * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType */ public static final int POS_TYPE_BUNTOU = WnnDictionary.POS_TYPE_BUNTOU; /** * Type of a part of speech (for JNI native library) * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_TANKANJI * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType */ public static final int POS_TYPE_TANKANJI = WnnDictionary.POS_TYPE_TANKANJI; /** * Type of a part of speech (for JNI native library) * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_SUUJI * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType */ public static final int POS_TYPE_SUUJI = WnnDictionary.POS_TYPE_SUUJI; /** * Type of a part of speech (for JNI native library) * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_MEISI * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType */ public static final int POS_TYPE_MEISI = WnnDictionary.POS_TYPE_MEISI; /** * Type of a part of speech (for JNI native library) * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_JINMEI * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType */ public static final int POS_TYPE_JINMEI = WnnDictionary.POS_TYPE_JINMEI; /** * Type of a part of speech (for JNI native library) * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_CHIMEI * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType */ public static final int POS_TYPE_CHIMEI = WnnDictionary.POS_TYPE_CHIMEI; /** * Type of a part of speech (for JNI native library) * @see jp.co.omronsoft.openwnn.WnnDictionary#POS_TYPE_KIGOU * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getLeftPartOfSpeechSpecifiedType * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getRightPartOfSpeechSpecifiedType */ public static final int POS_TYPE_KIGOU = WnnDictionary.POS_TYPE_KIGOU; /* * METHODS */ /** * Create a internal work area. * A internal work area is allocated dynamically, and the specified dictionary library is loaded. * * @param dicLibPath The path of the dictionary library file * @return The internal work area or null */ public static final native long createWnnWork( String dicLibPath ); /** * Free the internal work area. * The specified work area and the loaded dictionary library is free. * * @param work The internal work area * @return 0 if processing is successful; <0 if an error occur */ public static final native int freeWnnWork( long work ); /** * Clear all dictionary information. * * @see jp.co.omronsoft.openwnn.WnnDictionary#clearDictionary * @param work The internal work area * @return 0 if processing is successful; <0 if an error occur */ public static final native int clearDictionaryParameters( long work ); /** * Set a dictionary information. * * @see jp.co.omronsoft.openwnn.WnnDictionary#setDictionary * @param work The internal work area * @param index The index of dictionary * @param base The base frequency or -1 * @param high The maximum frequency or -1 * @return 0 if processing is successful; <0 otherwise */ public static final native int setDictionaryParameter( long work, int index, int base, int high ); /** * Search a word from dictionaries. * * @see jp.co.omronsoft.openwnn.WnnDictionary#searchWord * @param work The internal work area * @param operation The search operation (see "Constant about the search operation") * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_EXACT * @see jp.co.omronsoft.openwnn.WnnDictionary#SEARCH_PREFIX * @param order The sort order (see "Constant about the sort order") * @see jp.co.omronsoft.openwnn.WnnDictionary#ORDER_BY_FREQUENCY * @see jp.co.omronsoft.openwnn.WnnDictionary#ORDER_BY_KEY * @param keyString The key string * @return 0 if no result is found; 1 if a result is found; <0 if an error occur * */ public static final native int searchWord(long work, int operation, int order, String keyString ); /** * Retrieve a word information. * A word information is stored to the internal work area. To retrieve a detail information, * use {@code getStroke()}, {@code getCandidate()}, {@code getFreqeuency(),} or other {@code get...()} method. * * @see jp.co.omronsoft.openwnn.WnnDictionary#getNextWord * @param work The internal work area * @param length >0 if only the result of specified length is retrieved; 0 if no condition exist * @return 0 if no result is retrieved; >0 if a result is retrieved; <0 if an error occur */ public static final native int getNextWord( long work, int length ); /** * Retrieve the key string from the current word information. * * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getNextWord * @param work The internal work area * @return The Key string */ public static final native String getStroke( long work ); /** * Retrieve the candidate string from the current word information. * * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getNextWord * @param work The internal work area * @return The candidate string */ public static final native String getCandidate( long work ); /** * Retrieve the frequency from the current word information. * * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#getNextWord * @param work The internal work area * @return The frequency */ public static final native int getFrequency( long work ); /** * Retrieve the part of speech at left side from the current word information. * * @param work The internal work area * @return The part of speech */ public static final native int getLeftPartOfSpeech( long work ); /** * Retrieve the part of speech at right side from the current word information. * * @param work The internal work area * @return The part of speech */ public static final native int getRightPartOfSpeech( long work ); /** * Clear approximate patterns. * * @see jp.co.omronsoft.openwnn.WnnDictionary#clearApproxPattern * @param work The internal work area. */ public static final native void clearApproxPatterns( long work ); /** * Set a approximate pattern. * * @see jp.co.omronsoft.openwnn.WnnDictionary#setApproxPattern * @param work The internal work area * @param src The string (before) * @param dst The string (after) * @return 0 if processing is successful; <0 if an error occur */ public static final native int setApproxPattern( long work, String src, String dst ); /** * Set a predefined approximate pattern. * * @see jp.co.omronsoft.openwnn.WnnDictionary#setApproxPattern * @param work The internal work area * @param approxPattern The index of predefined approximate pattern (See "Constant about the approximate pattern") * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_TOUPPER * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_TOLOWER * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_QWERTY_NEAR * @see jp.co.omronsoft.openwnn.WnnDictionary#APPROX_PATTERN_EN_QWERTY_NEAR_UPPER * @return 0 if processing is successful; <0 if an error occur */ public static final native int setApproxPattern( long work, int approxPattern ); /** * Get the specified approximate pattern. * @param work The internal work area * @param src The string (before) * @return The string array (after) */ public static final native String[] getApproxPattern( long work, String src ); /** * Clear the current word information. * * @param work The internal work area */ public static final native void clearResult( long work ); /** * Set the part of speech at left side to the current word information. * * @param work The internal work area * @param partOfSpeech The part of speech * @return 0 if processing is successful; <0 if an error occur * */ public static final native int setLeftPartOfSpeech( long work, int partOfSpeech ); /** * Set the part of speech at right side to the current word information. * * @param work The internal work area * @param partOfSpeech The part of speech * @return 0 if processing is successful; <0 if an error occur * */ public static final native int setRightPartOfSpeech( long work, int partOfSpeech ); /** * Set the key string to the current word information. * * @param work The internal work area * @param stroke The key string * @return 0 if processing is successful; <0 if an error occur * */ public static final native int setStroke( long work, String stroke ); /** * Set the candidate string to the current word information. * * @param work The internal work area * @param candidate The candidate string * @return 0 if processing is successful; <0 if an error occur * */ public static final native int setCandidate( long work, String candidate ); /** * Set the previous word information from the current word information. * * @param work The internal work area * @return 0 if processing is successful; <0 if an error occur */ public static final native int selectWord( long work ); /** * Retrieve the connect array * * @param work The internal work area * @param leftPartOfSpeech The part of speech at left side * @return The connect array */ public static final native byte[] getConnectArray( long work, int leftPartOfSpeech ); /** * Retrieve the number of the part of speeches at left side. * * @return The number */ public static final native int getNumberOfLeftPOS( long work ); /** * Retrieve the number of the part of speeches at right side. * * @return The number */ public static final native int getNumberOfRightPOS( long work ); /** * Retrieve the specified part of speech at left side. * * @param work The internal work area * @param type The type of a part of speech * @return 0 if type is not found; <0 if an error occur; >0 The part of speech */ public static final native int getLeftPartOfSpeechSpecifiedType( long work, int type ); /** * Retrieve the specified part of speech at right side. * * @param work The internal work area * @param type The type of a part of speech * @return 0 if type is not found; <0 if an error occur; >0 The part of speech * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_V1 * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_V2 * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_V3 * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_BUNTOU * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_TANKANJI * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_SUUJI * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_MEISI * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_JINMEI * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_CHIMEI * @see jp.co.omronsoft.openwnn.OpenWnnDictionaryImplJni#POS_TYPE_KIGOU */ public static final native int getRightPartOfSpeechSpecifiedType( long work, int type ); /** * Create the string array that is used by operation of query * * @param work The internal work area * @param keyString The key string * @param maxBindsOfQuery The maximum number of binds of query * @param maxPatternOfApprox The maximum number of approximate patterns per character * @return The string array for binding */ public static final native String[] createBindArray( long work, String keyString, int maxBindsOfQuery, int maxPatternOfApprox ); /** * Create the string which used query parameter * * @param work The internal work area * @param maxBindsOfQuery The maximum number of binds of query * @param maxPatternOfApprox The maximum number of approximate patterns per character * @param keyColumnName The name of the key column * @return The string for querying */ public static final native String createQueryStringBase( long work, int maxBindsOfQuery, int maxPatternOfApprox, String keyColumnName ); }