1053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/*
259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Copyright (C) 2008-2012  OMRON SOFTWARE Co., Ltd.
3053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *
4053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * you may not use this file except in compliance with the License.
6053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * You may obtain a copy of the License at
7053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *
8053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *
10053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * See the License for the specific language governing permissions and
14053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * limitations under the License.
15053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */
16053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
17053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectpackage jp.co.omronsoft.openwnn.JAJP;
18053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
19053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport java.text.DecimalFormat;
20053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport java.util.ArrayList;
21053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport java.util.HashMap;
22053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport java.util.List;
23053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport java.util.Locale;
24053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport jp.co.omronsoft.openwnn.WnnDictionary;
25053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectimport jp.co.omronsoft.openwnn.WnnPOS;
267b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawaimport jp.co.omronsoft.openwnn.WnnWord;
27053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
28053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/**
293feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * The EISU-KANA converter class for Japanese IME.
30053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *
313feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa * @author Copyright (C) 2009 OMRON SOFTWARE CO., LTD.  All Rights Reserved.
32053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */
33053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Projectpublic class KanaConverter {
34053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
35e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa	/** Conversion rule for half-width numeric */
36e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    private static final HashMap<String,String> mHalfNumericMap = new HashMap<String,String>() {{
37053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3042", "1");
38053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3044", "11");
39053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3046", "111");
40053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3048", "1111");
41053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304a", "11111");
42053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3041", "111111");
43053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3043", "1111111");
44053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3045", "11111111");
45053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3047", "111111111");
46053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3049", "1111111111");
47053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304b", "2");
48053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304d", "22");
49053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304f", "222");
50053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3051", "2222");
51053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3053", "22222");
52053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3055", "3");
53053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3057", "33");
54053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3059", "333");
55053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305b", "3333");
56053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305d", "33333");
57053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305f", "4");
58053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3061", "44");
59053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3064", "444");
60053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3066", "4444");
61053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3068", "44444");
62053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3063", "444444");
63053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306a", "5");
64053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306b", "55");
65053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306c", "555");
66053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306d", "5555");
67053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306e", "55555");
68053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306f", "6");
69053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3072", "66");
70053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3075", "666");
71053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3078", "6666");
72053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307b", "66666");
73053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307e", "7");
74053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307f", "77");
75053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3080", "777");
76053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3081", "7777");
77053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3082", "77777");
78053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3084", "8");
79053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3086", "88");
80053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3088", "888");
81053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3083", "8888");
82053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3085", "88888");
83053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3087", "888888");
84053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3089", "9");
85053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308a", "99");
86053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308b", "999");
87053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308c", "9999");
883feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        put( "\u308d", "99999");
89053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308f", "0");
90053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3092", "00");
91053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3093", "000");
92053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308e", "0000");
93053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30fc", "00000");
94053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }};
95053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
96e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** Conversion rule for full-width numeric */
97e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    private static final HashMap<String,String> mFullNumericMap = new HashMap<String,String>() {{
98053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3042", "\uff11");
99053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3044", "\uff11\uff11");
100053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3046", "\uff11\uff11\uff11");
101053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3048", "\uff11\uff11\uff11\uff11");
102053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304a", "\uff11\uff11\uff11\uff11\uff11");
103053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3041", "\uff11\uff11\uff11\uff11\uff11\uff11");
104053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3043", "\uff11\uff11\uff11\uff11\uff11\uff11\uff11");
105053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3045", "\uff11\uff11\uff11\uff11\uff11\uff11\uff11\uff11");
106053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3047", "\uff11\uff11\uff11\uff11\uff11\uff11\uff11\uff11\uff11");
107053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3049", "\uff11\uff11\uff11\uff11\uff11\uff11\uff11\uff11\uff11\uff11");
108053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304b", "\uff12");
109053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304d", "\uff12\uff12");
110053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304f", "\uff12\uff12\uff12");
111053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3051", "\uff12\uff12\uff12\uff12");
112053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3053", "\uff12\uff12\uff12\uff12\uff12");
113053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3055", "\uff13");
114053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3057", "\uff13\uff13");
1153feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        put( "\u3059", "\uff13\uff13\uff13");
116053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305b", "\uff13\uff13\uff13\uff13");
117053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305d", "\uff13\uff13\uff13\uff13\uff13");
118053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305f", "\uff14");
119053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3061", "\uff14\uff14");
120053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3064", "\uff14\uff14\uff14");
121053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3066", "\uff14\uff14\uff14\uff14");
122053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3068", "\uff14\uff14\uff14\uff14\uff14");
123053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3063", "\uff14\uff14\uff14\uff14\uff14\uff14");
124053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306a", "\uff15");
125053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306b", "\uff15\uff15");
126053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306c", "\uff15\uff15\uff15");
127053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306d", "\uff15\uff15\uff15\uff15");
128053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306e", "\uff15\uff15\uff15\uff15\uff15");
129053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306f", "\uff16");
130053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3072", "\uff16\uff16");
131053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3075", "\uff16\uff16\uff16");
132053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3078", "\uff16\uff16\uff16\uff16");
133053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307b", "\uff16\uff16\uff16\uff16\uff16");
134053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307e", "\uff17");
135053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307f", "\uff17\uff17");
136053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3080", "\uff17\uff17\uff17");
137053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3081", "\uff17\uff17\uff17\uff17");
138053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3082", "\uff17\uff17\uff17\uff17\uff17");
139053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3084", "\uff18");
140053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3086", "\uff18\uff18");
141053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3088", "\uff18\uff18\uff18");
142053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3083", "\uff18\uff18\uff18\uff18");
143053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3085", "\uff18\uff18\uff18\uff18\uff18");
144053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3087", "\uff18\uff18\uff18\uff18\uff18\uff18");
145053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3089", "\uff19");
146053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308a", "\uff19\uff19");
147053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308b", "\uff19\uff19\uff19");
148053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308c", "\uff19\uff19\uff19\uff19");
149053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308d", "\uff19\uff19\uff19\uff19\uff19");
150053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308f", "\uff10");
151053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3092", "\uff10\uff10");
152053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3093", "\uff10\uff10\uff10");
153053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308e", "\uff10\uff10\uff10\uff10");
154053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30fc", "\uff10\uff10\uff10\uff10\uff10");
155053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }};
156053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
157e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** Conversion rule for half-width Katakana */
158e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    private static final HashMap<String,String> mHalfKatakanaMap = new HashMap<String,String>() {{
159053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3042", "\uff71");
160053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3044", "\uff72");
161053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3046", "\uff73");
162053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3048", "\uff74");
163053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304a", "\uff75");
164053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3041", "\uff67");
165053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3043", "\uff68");
166053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3045", "\uff69");
167053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3047", "\uff6a");
168053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3049", "\uff6b");
169053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30f4\u3041", "\uff73\uff9e\uff67");
170053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30f4\u3043", "\uff73\uff9e\uff68");
171053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30f4", "\uff73\uff9e");
172053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30f4\u3047", "\uff73\uff9e\uff6a");
173053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30f4\u3049", "\uff73\uff9e\uff6b");
174053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304b", "\uff76");
175053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304d", "\uff77");
176053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304f", "\uff78");
177053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3051", "\uff79");
178053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3053", "\uff7a");
179053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304c", "\uff76\uff9e");
180053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304e", "\uff77\uff9e");
181053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3050", "\uff78\uff9e");
182053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3052", "\uff79\uff9e");
183053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3054", "\uff7a\uff9e");
184053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3055", "\uff7b");
185053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3057", "\uff7c");
186053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3059", "\uff7d");
187053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305b", "\uff7e");
188053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305d", "\uff7f");
189053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3056", "\uff7b\uff9e");
190053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3058", "\uff7c\uff9e");
191053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305a", "\uff7d\uff9e");
192053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305c", "\uff7e\uff9e");
193053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305e", "\uff7f\uff9e");
194053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305f", "\uff80");
195053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3061", "\uff81");
196053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3064", "\uff82");
197053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3066", "\uff83");
198053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3068", "\uff84");
1993feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        put( "\u3063", "\uff6f");
200053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3060", "\uff80\uff9e");
201053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3062", "\uff81\uff9e");
202053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3065", "\uff82\uff9e");
203053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3067", "\uff83\uff9e");
204053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3069", "\uff84\uff9e");
205053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306a", "\uff85");
206053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306b", "\uff86");
207053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306c", "\uff87");
208053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306d", "\uff88");
209053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306e", "\uff89");
210053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306f", "\uff8a");
211053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3072", "\uff8b");
212053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3075", "\uff8c");
213053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3078", "\uff8d");
214053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307b", "\uff8e");
215053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3070", "\uff8a\uff9e");
216053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3073", "\uff8b\uff9e");
217053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3076", "\uff8c\uff9e");
218053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3079", "\uff8d\uff9e");
219053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307c", "\uff8e\uff9e");
220053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3071", "\uff8a\uff9f");
221053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3074", "\uff8b\uff9f");
222053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3077", "\uff8c\uff9f");
223053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307a", "\uff8d\uff9f");
224053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307d", "\uff8e\uff9f");
225053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307e", "\uff8f");
226053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307f", "\uff90");
227053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3080", "\uff91");
228053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3081", "\uff92");
229053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3082", "\uff93");
230053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3084", "\uff94");
231053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3086", "\uff95");
232053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3088", "\uff96");
233053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3083", "\uff6c");
234053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3085", "\uff6d");
235053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3087", "\uff6e");
236053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3089", "\uff97");
237053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308a", "\uff98");
238053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308b", "\uff99");
239053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308c", "\uff9a");
240053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308d", "\uff9b");
241053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308f", "\uff9c");
242053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3092", "\uff66");
243053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3093", "\uff9d");
244053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308e", "\uff9c");
245053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30fc", "\uff70");
246053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }};
247053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
248e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** Conversion rule for full-width Katakana */
249e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    private static final HashMap<String,String> mFullKatakanaMap = new HashMap<String,String>() {{
250053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3042", "\u30a2");
251053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3044", "\u30a4");
252053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3046", "\u30a6");
253053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3048", "\u30a8");
254053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304a", "\u30aa");
255053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3041", "\u30a1");
256053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3043", "\u30a3");
257053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3045", "\u30a5");
258053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3047", "\u30a7");
259053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3049", "\u30a9");
260053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30f4\u3041", "\u30f4\u30a1");
261053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30f4\u3043", "\u30f4\u30a3");
262053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30f4", "\u30f4");
263053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30f4\u3047", "\u30f4\u30a7");
264053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30f4\u3049", "\u30f4\u30a9");
265053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304b", "\u30ab");
266053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304d", "\u30ad");
267053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304f", "\u30af");
268053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3051", "\u30b1");
269053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3053", "\u30b3");
270053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304c", "\u30ac");
271053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304e", "\u30ae");
272053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3050", "\u30b0");
273053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3052", "\u30b2");
274053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3054", "\u30b4");
275053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3055", "\u30b5");
276053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3057", "\u30b7");
277053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3059", "\u30b9");
278053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305b", "\u30bb");
279053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305d", "\u30bd");
280053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3056", "\u30b6");
281053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3058", "\u30b8");
282053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305a", "\u30ba");
283053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305c", "\u30bc");
284053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305e", "\u30be");
285053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305f", "\u30bf");
286053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3061", "\u30c1");
287053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3064", "\u30c4");
288053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3066", "\u30c6");
289053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3068", "\u30c8");
290053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3063", "\u30c3");
291053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3060", "\u30c0");
292053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3062", "\u30c2");
293053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3065", "\u30c5");
294053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3067", "\u30c7");
295053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3069", "\u30c9");
296053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306a", "\u30ca");
297053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306b", "\u30cb");
298053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306c", "\u30cc");
299053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306d", "\u30cd");
300053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306e", "\u30ce");
301053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306f", "\u30cf");
302053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3072", "\u30d2");
303053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3075", "\u30d5");
304053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3078", "\u30d8");
305053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307b", "\u30db");
306053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3070", "\u30d0");
307053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3073", "\u30d3");
308053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3076", "\u30d6");
309053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3079", "\u30d9");
310053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307c", "\u30dc");
311053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3071", "\u30d1");
312053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3074", "\u30d4");
313053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3077", "\u30d7");
314053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307a", "\u30da");
315053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307d", "\u30dd");
316053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307e", "\u30de");
317053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307f", "\u30df");
318053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3080", "\u30e0");
319053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3081", "\u30e1");
320053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3082", "\u30e2");
321053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3084", "\u30e4");
322053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3086", "\u30e6");
323053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3088", "\u30e8");
324053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3083", "\u30e3");
325053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3085", "\u30e5");
326053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3087", "\u30e7");
327053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3089", "\u30e9");
328053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308a", "\u30ea");
329053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308b", "\u30eb");
330053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308c", "\u30ec");
331053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308d", "\u30ed");
332053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308f", "\u30ef");
333053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3092", "\u30f2");
334053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3093", "\u30f3");
335053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308e", "\u30ee");
336053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u30fc", "\u30fc");
337053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }};
338053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
339e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** Conversion rule for half-width alphabet */
340e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    private static final HashMap<String,String> mHalfAlphabetMap = new HashMap<String,String>() {{
341053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3042", ".");
342053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3044", "@");
3433feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        put( "\u3046", "-");
3443feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        put( "\u3048", "_");
345053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304a", "/");
346053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3041", ":");
3477b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa        put( "\u3043", "~");
348053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304b", "A");
349053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304d", "B");
350053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304f", "C");
351053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3055", "D");
352053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3057", "E");
353053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3059", "F");
354053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305f", "G");
355053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3061", "H");
356053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3064", "I");
357053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306a", "J");
358053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306b", "K");
359053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306c", "L");
360053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306f", "M");
361053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3072", "N");
362053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3075", "O");
363053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307e", "P");
364053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307f", "Q");
365053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3080", "R");
366053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3081", "S");
367053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3084", "T");
368053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3086", "U");
369053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3088", "V");
370053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3089", "W");
371053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308a", "X");
372053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308b", "Y");
373053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308c", "Z");
3747b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa        put( "\u308f", "-");
375053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }};
376053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
377e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** Conversion rule for full-width alphabet */
378e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    private static final HashMap<String,String> mFullAlphabetMap = new HashMap<String,String>() {{
379053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3042", "\uff0e");
380053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3044", "\uff20");
3813feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        put( "\u3046", "\u30fc");
3823feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        put( "\u3048", "\uff3f");
383053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304a", "\uff0f");
384053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3041", "\uff1a");
385053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3043", "\u301c");
386053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304b", "\uff21");
387053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304d", "\uff22" );
388053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u304f", "\uff23");
389053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3055", "\uff24" );
390053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3057", "\uff25" );
391053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3059", "\uff26" );
392053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u305f", "\uff27");
393053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3061", "\uff28" );
394053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3064", "\uff29");
395053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306a", "\uff2a");
396053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306b", "\uff2b" );
397053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306c", "\uff2c" );
398053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u306f", "\uff2d");
399053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3072", "\uff2e");
400053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3075", "\uff2f");
401053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307e", "\uff30");
402053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u307f", "\uff31");
403053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3080", "\uff32");
404053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3081", "\uff33" );
405053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3084", "\uff34" );
406053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3086", "\uff35" );
407053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3088", "\uff36" );
408053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u3089", "\uff37" );
409053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308a", "\uff38" );
410053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308b", "\uff39");
411053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "\u308c", "\uff3a" );
4127b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa        put( "\u308f", "\u30fc" );
413053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }};
414053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
415e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** Conversion rule for full-width alphabet (QWERTY mode) */
416e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    private static final HashMap<String,String> mFullAlphabetMapQwety = new HashMap<String,String>() {{
417053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "a", "\uff41");
418053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "b", "\uff42");
419053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "c", "\uff43");
420053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "d", "\uff44");
421053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "e", "\uff45");
422053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "f", "\uff46");
423053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "g", "\uff47");
424053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "h", "\uff48");
425053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "i", "\uff49");
426053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "j", "\uff4a");
427053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "k", "\uff4b");
428053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "l", "\uff4c");
429053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "m", "\uff4d");
430053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "n", "\uff4e");
431053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "o", "\uff4f");
432053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "p", "\uff50");
433053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "q", "\uff51");
434053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "r", "\uff52");
435053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "s", "\uff53");
436053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "t", "\uff54");
437053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "u", "\uff55");
438053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "v", "\uff56");
439053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "w", "\uff57");
440053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "x", "\uff58");
441053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "y", "\uff59");
442053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "z", "\uff5a");
443053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
444053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "A", "\uff21");
445053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "B", "\uff22");
446053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "C", "\uff23");
447053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "D", "\uff24");
448053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "E", "\uff25");
449053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "F", "\uff26");
450053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "G", "\uff27");
451053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "H", "\uff28");
452053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "I", "\uff29");
453053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "J", "\uff2a");
454053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "K", "\uff2b");
455053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "L", "\uff2c");
456053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "M", "\uff2d");
457053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "N", "\uff2e");
458053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "O", "\uff2f");
459053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "P", "\uff30");
460053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "Q", "\uff31");
461053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "R", "\uff32");
462053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "S", "\uff33");
463053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "T", "\uff34");
464053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "U", "\uff35");
465053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "V", "\uff36");
466053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "W", "\uff37");
467053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "X", "\uff38");
468053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "Y", "\uff39");
469053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        put( "Z", "\uff3a");
470053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }};
471053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
472e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** Decimal format using comma */
473053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    private static final DecimalFormat mFormat = new DecimalFormat("###,###");
474053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
475e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** List of the generated candidates */
476053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    private List<WnnWord> mAddCandidateList;
477e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa    /** Work area for generating string */
478053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    private StringBuffer mStringBuff;
479053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
480053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    /** part of speech (default) */
481053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    private WnnPOS mPosDefault;
482053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    /** part of speech (number) */
483053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    private WnnPOS mPosNumber;
484053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    /** part of speech (symbol) */
485053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    private WnnPOS mPosSymbol;
486053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
487053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    /**
488053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * Constructor
489053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     */
490053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    public KanaConverter() {
491053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        mAddCandidateList = new ArrayList<WnnWord>();
492053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        mStringBuff = new StringBuffer();
493053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
494053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
495053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    /**
496053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * Set The dictionary.
497053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * <br>
4987b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa     * {@link KanaConverter} gets part-of-speech tags from the dictionary.
499053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     *
500053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * @param dict  The dictionary
501053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     */
502053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    public void setDictionary(WnnDictionary dict) {
503053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        /* get part of speech tags */
504053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        mPosDefault  = dict.getPOS(WnnDictionary.POS_TYPE_MEISI);
505053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        mPosNumber   = dict.getPOS(WnnDictionary.POS_TYPE_SUUJI);
506053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        mPosSymbol   = dict.getPOS(WnnDictionary.POS_TYPE_KIGOU);
507053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
508053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
509053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    /**
5103feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa     * Create the pseudo candidate list
511053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * <br>
5127b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa     * @param inputHiragana     The input string (Hiragana)
5137b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa     * @param inputRomaji       The input string (Romaji)
514053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * @param keyBoardMode      The mode of keyboard
5153feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa     * @return                  The candidate list
516053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     */
5173feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa    public List<WnnWord> createPseudoCandidateList(String inputHiragana, String inputRomaji, int keyBoardMode) {
518053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        List<WnnWord> list = mAddCandidateList;
519053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
520053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        list.clear();
5217b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa        if (inputHiragana.length() == 0) {
5227b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa        	return list;
5237b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa        }
524053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
5253feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        /* Create pseudo candidates for all keyboard type */
5263feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        /* Hiragana(reading) / Full width katakana / Half width katakana */
527053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        list.add(new WnnWord(inputHiragana, inputHiragana));
528e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        if (createCandidateString(inputHiragana, mFullKatakanaMap, mStringBuff)) {
529053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            list.add(new WnnWord(mStringBuff.toString(), inputHiragana, mPosDefault));
530053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
531e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        if (createCandidateString(inputHiragana, mHalfKatakanaMap, mStringBuff)) {
532053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            list.add(new WnnWord(mStringBuff.toString(), inputHiragana, mPosDefault));
533053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
5343feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa
535053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        if (keyBoardMode == OpenWnnEngineJAJP.KEYBOARD_QWERTY) {
5363feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa            /* Create pseudo candidates for Qwerty keyboard */
5373feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa            createPseudoCandidateListForQwerty(inputHiragana, inputRomaji);
538053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        } else {
5393feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa            /* Create pseudo candidates for 12key */
540053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
5413feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        	/* Create pseudo candidates for half width numeric */
542e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa            if (createCandidateString(inputHiragana, mHalfNumericMap, mStringBuff)) {
543053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                String convHanSuuji = mStringBuff.toString();
544053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                String convNumComma = convertNumber(convHanSuuji);
545053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                list.add(new WnnWord(convHanSuuji, inputHiragana, mPosNumber));
546053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                if (convNumComma != null) {
547053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                    list.add(new WnnWord(convNumComma, inputHiragana, mPosNumber));
548053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                }
549053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            }
550053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
5513feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa            /* Create pseudo candidates for full width numeric */
552e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa            if (createCandidateString(inputHiragana, mFullNumericMap, mStringBuff)) {
553053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                list.add(new WnnWord(mStringBuff.toString(), inputHiragana, mPosNumber));
554053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            }
555053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
5563feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa            /* Create pseudo candidates for half width alphabet */
557e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa            if (createCandidateString(inputHiragana, mHalfAlphabetMap, mStringBuff)) {
558053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                String convHanEiji = mStringBuff.toString();
559053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                String convHanEijiLower = convHanEiji.toLowerCase();
560053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                list.add(new WnnWord(convHanEijiLower, inputHiragana, mPosSymbol));
561053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                list.add(new WnnWord(convertCaps(convHanEijiLower), inputHiragana, mPosSymbol));
562053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                list.add(new WnnWord(convHanEiji, inputHiragana, mPosSymbol));
563053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            }
564053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
5653feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa            /* Create pseudo candidates for full width alphabet */
566e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa            if (createCandidateString(inputHiragana, mFullAlphabetMap, mStringBuff)) {
567053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                String convZenEiji = mStringBuff.toString();
568053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                String convZenEijiLower = convZenEiji.toLowerCase(Locale.JAPAN);
569053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                list.add(new WnnWord(convZenEijiLower, inputHiragana, mPosSymbol));
570053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                list.add(new WnnWord(convertCaps(convZenEijiLower), inputHiragana, mPosSymbol));
571053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                list.add(new WnnWord(convZenEiji, inputHiragana, mPosSymbol));
572053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            }
573053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
574053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return list;
575053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
576053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
577053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    /**
5783feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa     * Create the pseudo candidate list for Qwerty keyboard
579053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * <br>
5807b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa     * @param inputHiragana     The input string (Hiragana)
5817b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa     * @param inputRomaji       The input string (Romaji)
582053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     */
5833feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa    private void createPseudoCandidateListForQwerty(String inputHiragana, String inputRomaji) {
584053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        List<WnnWord> list = mAddCandidateList;
585053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
5863feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        /* Create pseudo candidates for half width alphabet */
587053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        String convHanEijiLower = inputRomaji.toLowerCase();
588053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        list.add(new WnnWord(inputRomaji, inputHiragana, mPosDefault));
589053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        list.add(new WnnWord(convHanEijiLower, inputHiragana, mPosSymbol));
590053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        list.add(new WnnWord(convertCaps(convHanEijiLower), inputHiragana, mPosSymbol));
591053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        list.add(new WnnWord(inputRomaji.toUpperCase(), inputHiragana, mPosSymbol));
592053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
5933feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa        /* Create pseudo candidates for the full width alphabet */
594e83971e4dafd53e9fb00386355afdbae7e00c0cfDaisuke Miyakawa        if (createCandidateString(inputRomaji, mFullAlphabetMapQwety, mStringBuff)) {
595053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            String convZenEiji = mStringBuff.toString();
596053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            String convZenEijiLower = convZenEiji.toLowerCase(Locale.JAPAN);
597053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            list.add(new WnnWord(convZenEiji, inputHiragana, mPosSymbol));
598053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            list.add(new WnnWord(convZenEijiLower, inputHiragana, mPosSymbol));
599053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            list.add(new WnnWord(convertCaps(convZenEijiLower), inputHiragana, mPosSymbol));
600053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            list.add(new WnnWord(convZenEiji.toUpperCase(Locale.JAPAN), inputHiragana, mPosSymbol));
601053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
602053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
603053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
604053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    /**
605053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * Create the candidate string
606053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * <br>
607053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * @param input     The input string
608053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * @param map       The hash map
609053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * @param outBuf    The output string
6107b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa     * @return          {@code true} if success
611053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     */
6127b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa    private boolean createCandidateString(String input, HashMap<String,String> map, StringBuffer outBuf) {
613053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        if (outBuf.length() > 0) {
614053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            outBuf.delete(0, outBuf.length());
615053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
616053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        for (int index = 0; index < input.length(); index++) {
6177b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa            String convChar = map.get(input.substring(index, index + 1));
618053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            if (convChar == null) {
619053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                return false;
620053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            }
621053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            outBuf.append(convChar);
622053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
623053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return true;
624053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
625053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
626053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    /**
627053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * Convert into both small and capital letter
628053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * <br>
6293feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa     * @param moji  The input string
6303feb3d26d59be1626c59b72654020179e2b2ebe0Daisuke Miyakawa     * @return      The converted string
631053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     */
632053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    private String convertCaps(String moji) {
633053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        String tmp = "";
634053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        if (moji != null && moji.length() > 0) {
635053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            tmp = moji.substring(0, 1).toUpperCase(Locale.JAPAN)
636053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project                    + moji.substring(1).toLowerCase(Locale.JAPAN);
637053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
638053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        return tmp;
639053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
640053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project
641053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    /**
642053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * Convert the numeric into formatted string
643053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * <br>
644053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     * @param numComma  The value
6457b3b414976b6b3d6d85459de79e843d5ab35ed06Daisuke Miyakawa     * @return          {@code true} if success
646053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project     */
647053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    private String convertNumber(String numComma) {
648053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        try {
649053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            return mFormat.format(Double.parseDouble(numComma));
650053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        } catch (NumberFormatException e) {
651053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project            return null;
652053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project        }
653053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project    }
654053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project}
655