Class CharacterReplacementManager

java.lang.Object
nablarch.core.dataformat.CharacterReplacementManager
All Implemented Interfaces:
Initializable

public class CharacterReplacementManager extends Object implements Initializable
寄せ字変換処理を行うクラス。

本クラスは、文字列中のある特定の文字を等価な代替文字に変換する用途での使用を想定している。
想定する変換の例: 髙→高 碕→崎
このような文字列変換処理のことを、寄せ時変換処理と呼ぶ。

禁則文字を一括で豆腐(■)に変換するような処理は、本クラスでは想定していないので、
文字を検知した場合に、ワーニングログを出力する機能や、呼び出し元に検知したことを通知する機能は提供しない。
想定しない変換の例: 唖→■ \→[

寄せ字変換処理は、寄せ字タイプごとに定義された寄せ字変換定義ファイルの情報をもとに行う。
寄せ字変換定義ファイルは初期化時に読み込み、メモリ上にキャッシュする。

本クラスは、文字列中の特定の1文字を、特定の1文字に変換することしかサポートしない(サロゲートペアの変換もサポートしない)。
よって、寄せ字変換定義ファイルに、「ヘ゜」のような半角2文字で1文字を表現する合字などの複数の文字や、サロゲートペアが定義された場合は、例外をスローする。

Author:
Masato Inoue
  • Constructor Details

    • CharacterReplacementManager

      public CharacterReplacementManager()
  • Method Details

    • getInstance

      public static CharacterReplacementManager getInstance()
      FormatterFactoryクラスのインスタンスをリポジトリより取得する。 リポジトリより取得できなかった場合は、デフォルトで本クラスのインスタンスを返却する。
      Returns:
      CharacterReplacementManagerのインスタンス
    • initialize

      public void initialize()
      初期化処理を行う。
      Specified by:
      initialize in interface Initializable
    • createReplacementTables

      protected void createReplacementTables()
      寄せ字変換定義ファイルを読み込み、寄せ字変換テーブルを生成する。

      寄せ字変換定義ファイルに定義された変換前および変換後の文字列が1文字でない(Stringのlengthが1でない)場合は、 例外をスローする。

      変換前と変換後の文字のバイト長一致チェックが有効な場合、 寄せ字変換定義ファイルに定義された変換前および変換後の文字列を指定されたエンコーディングに従いバイト配列に変換し、 変換前と変換後のバイト長が一致しない場合は、例外をスローする。

    • createReplacementTable

      protected nablarch.core.dataformat.CharacterReplacementManager.CharacterReplacementDefinition createReplacementTable(CharacterReplacementConfig config)
      寄せ字変換定義ファイルを読み込み、寄せ字変換テーブルを生成する。
      Parameters:
      config - 寄せ字変換処理の設定を保持するクラス
      Returns:
      寄せ字変換テーブルを保持するクラス
    • setEncodingToTable

      protected void setEncodingToTable(CharacterReplacementConfig config, nablarch.core.dataformat.CharacterReplacementManager.CharacterReplacementDefinition definition)
      寄せ字変換テーブルに、文字エンコーディングを設定する。
      Parameters:
      config - 寄せ字変換処理の設定を保持するクラス
      definition - 寄せ字変換テーブルを保持するクラス
    • loadPropertyFile

      protected Properties loadPropertyFile(String filePath)
      寄せ字変換定義ファイルをロードする。
      Parameters:
      filePath - 寄せ字変換定義ファイルのパス
      Returns:
      寄せ字変換定義ファイルをロードしたPropertiesクラス
    • checkReplacementCharacterLength

      protected void checkReplacementCharacterLength(String fromStr, String toStr, CharacterReplacementConfig config)
      寄せ字変換定義ファイルに設定された変換前文字列と変換後文字列の文字列長が「1」であることを確認する。
      Parameters:
      fromStr - 寄せ字変換前の文字列
      toStr - 寄せ字変換後の文字列
      config - 寄せ字変換処理の設定を保持するクラス
    • checkByteLength

      protected void checkByteLength(String fromStr, String toStr, CharacterReplacementConfig config)
      変換前文字列と変換後文字列のバイト長チェックを行う。 バイト長チェックは、文字エンコーディングに従い行う。
      Parameters:
      fromStr - 変換前文字列
      toStr - 変換後文字列
      config - 寄せ字変換処理の設定を保持するクラス
    • checkProperty

      protected void checkProperty(String name, String value, CharacterReplacementConfig config) throws IllegalStateException
      設定されたプロパティの妥当性をチェックする。
      Parameters:
      name - プロパティ名
      value - プロパティの値
      config - 寄せ字変換処理の設定を保持するクラス
      Throws:
      IllegalStateException - プロパティが設定されていない場合
    • replaceCharacter

      public String replaceCharacter(String typeName, String input)
      引数で渡された文字列に対して、寄せ字変換処理を行う。
      Parameters:
      typeName - 寄せ字タイプ名
      input - 入力文字列
      Returns:
      寄せ字変換処理後の文字列
    • outputLog

      protected void outputLog(String typeName, char from, char to, String input)
      文字を変換した際のログを出力する。
      Parameters:
      typeName - 寄せ字変換タイプ名
      from - 寄せ字変換前の文字
      to - 寄せ字変換後の文字
      input - 入力文字列
    • setConfigList

      public CharacterReplacementManager setConfigList(List<CharacterReplacementConfig> configList)
      寄せ字変換処理の設定を保持するListを設定する。
      Parameters:
      configList - 寄せ字変換処理の設定を保持するList
      Returns:
      このオブジェクト自体
    • containsReplacementType

      public boolean containsReplacementType(String typeName)
      引数で指定された寄せ字タイプ名が、寄せ字タイプ名として定義されているかどうかチェックする。
      Parameters:
      typeName - 寄せ字タイプ名
      Returns:
      引数で指定された寄せ字タイプ名が定義されている場合、true
    • checkReplacementTypeEncoding

      public boolean checkReplacementTypeEncoding(String typeName, Charset encoding)
      引数で指定された寄せ字タイプ名と文字エンコーディングの組み合わせが、定義された組み合わせと一致するかどうかをチェックする。

      寄せ字タイプ名と、文字エンコーディングの組み合わせは、通常コンポーネント設定ファイルで定義される。

      Parameters:
      typeName - 寄せ字タイプ名
      encoding - 文字エンコーディング
      Returns:
      寄せ字タイプ名が