/*
 * このソースコードは blanco Frameworkにより自動生成されました。
 */
package blanco.sample.stringconverter;

/**
 * 半角カタカナ→全角カタカナの文字列変換のサンプル。blancoStringConverterの実装には影響しません。
 */
public class SampleKatakanaHan2ZenStringConverter {
    /**
     * 文字列置換定義。
     */
    public static final String[][] STRING_CONVERT_DEF = new String[][] {new String[] { "｡", "。" }/* No.2 説明:a1: 句読点。全角カタカナではない値に変換。 */, new String[] { "｢", "「" }/* No.3 説明:a2: 半角のカギカッコ。全角カタカナではない値に変換。 */, new String[] { "｣", "」" }/* No.4 説明:a3: 半角のカギカッコ。全角カタカナではない値に変換。 */, new String[] { "､", "、" }/* No.5 説明:a4: 句読点。全角カタカナではない値に変換。 */, new String[] { "･", "・" }/* No.6 説明:a5: 半角の中黒。全角カタカナではない値に変換。 */, new String[] { "ｳﾞ", "ヴ" }/* No.8 説明:濁音を先に定義します。 */, new String[] { "ｶﾞ", "ガ" }/* No.9 説明:濁音を先に定義します。 */, new String[] { "ｷﾞ", "ギ" }/* No.10 説明:濁音を先に定義します。 */, new String[] { "ｸﾞ", "グ" }/* No.11 説明:濁音を先に定義します。 */, new String[] { "ｹﾞ", "ゲ" }/* No.12 説明:濁音を先に定義します。 */, new String[] { "ｺﾞ", "ゴ" }/* No.13 説明:濁音を先に定義します。 */, new String[] { "ｻﾞ", "ザ" }/* No.14 説明:濁音を先に定義します。 */, new String[] { "ｼﾞ", "ジ" }/* No.15 説明:濁音を先に定義します。 */, new String[] { "ｽﾞ", "ズ" }/* No.16 説明:濁音を先に定義します。 */, new String[] { "ｾﾞ", "ゼ" }/* No.17 説明:濁音を先に定義します。 */, new String[] { "ｿﾞ", "ゾ" }/* No.18 説明:濁音を先に定義します。 */, new String[] { "ﾀﾞ", "ダ" }/* No.19 説明:濁音を先に定義します。 */, new String[] { "ﾁﾞ", "ヂ" }/* No.20 説明:濁音を先に定義します。 */, new String[] { "ﾂﾞ", "ヅ" }/* No.21 説明:濁音を先に定義します。 */, new String[] { "ﾃﾞ", "デ" }/* No.22 説明:濁音を先に定義します。 */, new String[] { "ﾄﾞ", "ド" }/* No.23 説明:濁音を先に定義します。 */, new String[] { "ﾊﾞ", "バ" }/* No.24 説明:濁音を先に定義します。 */, new String[] { "ﾋﾞ", "ビ" }/* No.25 説明:濁音を先に定義します。 */, new String[] { "ﾌﾞ", "ブ" }/* No.26 説明:濁音を先に定義します。 */, new String[] { "ﾍﾞ", "ベ" }/* No.27 説明:濁音を先に定義します。 */, new String[] { "ﾎﾞ", "ボ" }/* No.28 説明:濁音を先に定義します。 */, new String[] { "ﾊﾟ", "パ" }/* No.29 説明:濁音を先に定義します。 */, new String[] { "ﾋﾟ", "ピ" }/* No.30 説明:濁音を先に定義します。 */, new String[] { "ﾌﾟ", "プ" }/* No.31 説明:濁音を先に定義します。 */, new String[] { "ﾍﾟ", "ペ" }/* No.32 説明:濁音を先に定義します。 */, new String[] { "ﾎﾟ", "ポ" }/* No.33 説明:濁音を先に定義します。 */, new String[] { "ｧ", "ァ" }/* No.34 説明:a7: 小さいカタカナ。ァ。 */, new String[] { "ｨ", "ィ" }/* No.35 説明:a8: 小さいカタカナ */, new String[] { "ｩ", "ゥ" }/* No.36 説明:a9: 小さいカタカナ */, new String[] { "ｪ", "ェ" }/* No.37 説明:aa: 小さいカタカナ */, new String[] { "ｫ", "ォ" }/* No.38 説明:ab: 小さいカタカナ */, new String[] { "ｬ", "ャ" }/* No.39 説明:ac: 小さいカタカナ */, new String[] { "ｭ", "ュ" }/* No.40 説明:ad: 小さいカタカナ */, new String[] { "ｮ", "ョ" }/* No.41 説明:ae: 小さいカタカナ。ョ。 */, new String[] { "ｯ", "ッ" }/* No.42 説明:af: 小さいカタカナ。ッ。ョの次に定義しています。 */, new String[] { "ｰ", "ー" }/* No.43 説明:b0: 半角の伸ばす。全角カタカナではない、伸ばす「ー」に変換。 */, new String[] { "ｱ", "ア" }/* No.44 説明:b1: カタカナ。ア。 */, new String[] { "ｲ", "イ" }/* No.45 説明:b2: カタカナ */, new String[] { "ｳ", "ウ" }/* No.46 説明:b3: カタカナ */, new String[] { "ｴ", "エ" }/* No.47 説明:b4: カタカナ */, new String[] { "ｵ", "オ" }/* No.48 説明:b5: カタカナ */, new String[] { "ｶ", "カ" }/* No.49 説明:b6: カタカナ */, new String[] { "ｷ", "キ" }/* No.50 説明:b7: カタカナ */, new String[] { "ｸ", "ク" }/* No.51 説明:b8: カタカナ */, new String[] { "ｹ", "ケ" }/* No.52 説明:b9: カタカナ */, new String[] { "ｺ", "コ" }/* No.53 説明:ba: カタカナ */, new String[] { "ｻ", "サ" }/* No.54 説明:bb: カタカナ */, new String[] { "ｼ", "シ" }/* No.55 説明:bc: カタカナ */, new String[] { "ｽ", "ス" }/* No.56 説明:bd: カタカナ */, new String[] { "ｾ", "セ" }/* No.57 説明:be: カタカナ */, new String[] { "ｿ", "ソ" }/* No.58 説明:bf: カタカナ */, new String[] { "ﾀ", "タ" }/* No.59 説明:c0: カタカナ */, new String[] { "ﾁ", "チ" }/* No.60 説明:c1: カタカナ */, new String[] { "ﾂ", "ツ" }/* No.61 説明:c2: カタカナ */, new String[] { "ﾃ", "テ" }/* No.62 説明:c3: カタカナ */, new String[] { "ﾄ", "ト" }/* No.63 説明:c4: カタカナ */, new String[] { "ﾅ", "ナ" }/* No.64 説明:c5: カタカナ */, new String[] { "ﾆ", "ニ" }/* No.65 説明:c6: カタカナ */, new String[] { "ﾇ", "ヌ" }/* No.66 説明:c7: カタカナ */, new String[] { "ﾈ", "ネ" }/* No.67 説明:c8: カタカナ */, new String[] { "ﾉ", "ノ" }/* No.68 説明:c9: カタカナ */, new String[] { "ﾊ", "ハ" }/* No.69 説明:ca: カタカナ */, new String[] { "ﾋ", "ヒ" }/* No.70 説明:cb: カタカナ */, new String[] { "ﾌ", "フ" }/* No.71 説明:cc: カタカナ */, new String[] { "ﾍ", "ヘ" }/* No.72 説明:cd: カタカナ */, new String[] { "ﾎ", "ホ" }/* No.73 説明:ce: カタカナ */, new String[] { "ﾏ", "マ" }/* No.74 説明:cf: カタカナ */, new String[] { "ﾐ", "ミ" }/* No.75 説明:d0: カタカナ */, new String[] { "ﾑ", "ム" }/* No.76 説明:d1: カタカナ */, new String[] { "ﾒ", "メ" }/* No.77 説明:d2: カタカナ */, new String[] { "ﾓ", "モ" }/* No.78 説明:d3: カタカナ */, new String[] { "ﾔ", "ヤ" }/* No.79 説明:d4: カタカナ */, new String[] { "ﾕ", "ユ" }/* No.80 説明:d5: カタカナ */, new String[] { "ﾖ", "ヨ" }/* No.81 説明:d6: カタカナ */, new String[] { "ﾗ", "ラ" }/* No.82 説明:d7: カタカナ */, new String[] { "ﾘ", "リ" }/* No.83 説明:d8: カタカナ */, new String[] { "ﾙ", "ル" }/* No.84 説明:d9: カタカナ */, new String[] { "ﾚ", "レ" }/* No.85 説明:da: カタカナ */, new String[] { "ﾛ", "ロ" }/* No.86 説明:db: カタカナ */, new String[] { "ﾜ", "ワ" }/* No.87 説明:dc: カタカナ。ワ。 */, new String[] { "ｦ", "ヲ" }/* No.88 説明:a6: カタカナ。ヲ。MS932におけるコード順としては 小さいアより前に位置します。 */, new String[] { "ﾝ", "ン" }/* No.89 説明:dd: カタカナ。ン。 */, new String[] { "ﾞ", "゛" }/* No.90 説明:de: 濁音。全角カタカナではない値に変換。 */, new String[] { "ﾟ", "゜" }/* No.91 説明:df: 濁音。全角カタカナではない値に変換。 */ };

    /**
     * 文字列変換定義に従い、文字列を変換します。
     *
     * @param argCheck 変換対象の文字列。
     * @return 文字列変換定義にしたがって変換された文字列。変換定義にひとつも合致しない場合には元の文字列が戻ります。
     */
    public String convert(final String argCheck) {
        if (argCheck == null) {
            throw new IllegalArgumentException("メソッド[convert]のパラメータ[argCheck]にnullが与えられました。しかし、このパラメータにnullを与えることはできません。");
        }

        String wrkString = "";
        for (int index = 0; index < argCheck.length(); ) {
            final String look = argCheck.substring(index);
            boolean isFound = false;
            for (int indexDef = 0; indexDef < STRING_CONVERT_DEF.length; indexDef++) {
                if (look.startsWith(STRING_CONVERT_DEF[indexDef][0])) {
                    wrkString += STRING_CONVERT_DEF[indexDef][1];
                    index += STRING_CONVERT_DEF[indexDef][0].length();
                    isFound = true;
                    break;
                }
            }
            if (!isFound) {
                wrkString += argCheck.charAt(index);
                index = index + 1;
            }
        }

        return wrkString;
    }
}
