public class CharacterReplacementManager extends java.lang.Object implements Initializable
本クラスは、文字列中のある特定の文字を等価な代替文字に変換する用途での使用を想定している。
想定する変換の例: 髙→高 碕→崎
このような文字列変換処理のことを、寄せ時変換処理と呼ぶ。
禁則文字を一括で豆腐(■)に変換するような処理は、本クラスでは想定していないので、
文字を検知した場合に、ワーニングログを出力する機能や、呼び出し元に検知したことを通知する機能は提供しない。
想定しない変換の例: 唖→■ \→[
寄せ字変換処理は、寄せ字タイプごとに定義された寄せ字変換定義ファイルの情報をもとに行う。
寄せ字変換定義ファイルは初期化時に読み込み、メモリ上にキャッシュする。
本クラスは、文字列中の特定の1文字を、特定の1文字に変換することしかサポートしない(サロゲートペアの変換もサポートしない)。
よって、寄せ字変換定義ファイルに、「ヘ゜」のような半角2文字で1文字を表現する合字などの複数の文字や、サロゲートペアが定義された場合は、例外をスローする。
Constructor and Description |
---|
CharacterReplacementManager() |
Modifier and Type | Method and Description |
---|---|
protected void |
checkByteLength(java.lang.String fromStr,
java.lang.String toStr,
CharacterReplacementConfig config)
変換前文字列と変換後文字列のバイト長チェックを行う。
バイト長チェックは、文字エンコーディングに従い行う。
|
protected void |
checkProperty(java.lang.String name,
java.lang.String value,
CharacterReplacementConfig config)
設定されたプロパティの妥当性をチェックする。
|
protected void |
checkReplacementCharacterLength(java.lang.String fromStr,
java.lang.String toStr,
CharacterReplacementConfig config)
寄せ字変換定義ファイルに設定された変換前文字列と変換後文字列の文字列長が「1」であることを確認する。
|
boolean |
checkReplacementTypeEncoding(java.lang.String typeName,
java.nio.charset.Charset encoding)
引数で指定された寄せ字タイプ名と文字エンコーディングの組み合わせが、定義された組み合わせと一致するかどうかをチェックする。
|
boolean |
containsReplacementType(java.lang.String typeName)
引数で指定された寄せ字タイプ名が、寄せ字タイプ名として定義されているかどうかチェックする。
|
protected nablarch.core.dataformat.CharacterReplacementManager.CharacterReplacementDefinition |
createReplacementTable(CharacterReplacementConfig config)
寄せ字変換定義ファイルを読み込み、寄せ字変換テーブルを生成する。
|
protected void |
createReplacementTables()
寄せ字変換定義ファイルを読み込み、寄せ字変換テーブルを生成する。
|
static CharacterReplacementManager |
getInstance()
FormatterFactoryクラスのインスタンスをリポジトリより取得する。
リポジトリより取得できなかった場合は、デフォルトで本クラスのインスタンスを返却する。
|
void |
initialize()
初期化処理を行う。
|
protected java.util.Properties |
loadPropertyFile(java.lang.String filePath)
寄せ字変換定義ファイルをロードする。
|
protected void |
outputLog(java.lang.String typeName,
char from,
char to,
java.lang.String input)
文字を変換した際のログを出力する。
|
java.lang.String |
replaceCharacter(java.lang.String typeName,
java.lang.String input)
引数で渡された文字列に対して、寄せ字変換処理を行う。
|
CharacterReplacementManager |
setConfigList(java.util.List<CharacterReplacementConfig> configList)
寄せ字変換処理の設定を保持するListを設定する。
|
protected void |
setEncodingToTable(CharacterReplacementConfig config,
nablarch.core.dataformat.CharacterReplacementManager.CharacterReplacementDefinition definition)
寄せ字変換テーブルに、文字エンコーディングを設定する。
|
public static CharacterReplacementManager getInstance()
CharacterReplacementManager
のインスタンスpublic void initialize()
initialize
in interface Initializable
protected void createReplacementTables()
寄せ字変換定義ファイルに定義された変換前および変換後の文字列が1文字でない(Stringのlengthが1でない)場合は、 例外をスローする。
変換前と変換後の文字のバイト長一致チェックが有効な場合、 寄せ字変換定義ファイルに定義された変換前および変換後の文字列を指定されたエンコーディングに従いバイト配列に変換し、 変換前と変換後のバイト長が一致しない場合は、例外をスローする。
protected nablarch.core.dataformat.CharacterReplacementManager.CharacterReplacementDefinition createReplacementTable(CharacterReplacementConfig config)
config
- 寄せ字変換処理の設定を保持するクラスprotected void setEncodingToTable(CharacterReplacementConfig config, nablarch.core.dataformat.CharacterReplacementManager.CharacterReplacementDefinition definition)
config
- 寄せ字変換処理の設定を保持するクラスdefinition
- 寄せ字変換テーブルを保持するクラスprotected java.util.Properties loadPropertyFile(java.lang.String filePath)
filePath
- 寄せ字変換定義ファイルのパスprotected void checkReplacementCharacterLength(java.lang.String fromStr, java.lang.String toStr, CharacterReplacementConfig config)
fromStr
- 寄せ字変換前の文字列toStr
- 寄せ字変換後の文字列config
- 寄せ字変換処理の設定を保持するクラスprotected void checkByteLength(java.lang.String fromStr, java.lang.String toStr, CharacterReplacementConfig config)
fromStr
- 変換前文字列toStr
- 変換後文字列config
- 寄せ字変換処理の設定を保持するクラスprotected void checkProperty(java.lang.String name, java.lang.String value, CharacterReplacementConfig config) throws java.lang.IllegalStateException
name
- プロパティ名value
- プロパティの値config
- 寄せ字変換処理の設定を保持するクラスjava.lang.IllegalStateException
- プロパティが設定されていない場合public java.lang.String replaceCharacter(java.lang.String typeName, java.lang.String input)
typeName
- 寄せ字タイプ名input
- 入力文字列protected void outputLog(java.lang.String typeName, char from, char to, java.lang.String input)
typeName
- 寄せ字変換タイプ名from
- 寄せ字変換前の文字to
- 寄せ字変換後の文字input
- 入力文字列public CharacterReplacementManager setConfigList(java.util.List<CharacterReplacementConfig> configList)
configList
- 寄せ字変換処理の設定を保持するListpublic boolean containsReplacementType(java.lang.String typeName)
typeName
- 寄せ字タイプ名public boolean checkReplacementTypeEncoding(java.lang.String typeName, java.nio.charset.Charset encoding)
寄せ字タイプ名と、文字エンコーディングの組み合わせは、通常コンポーネント設定ファイルで定義される。
typeName
- 寄せ字タイプ名encoding
- 文字エンコーディング