Package nablarch.core.dataformat
Class DataRecordFormatterSupport
java.lang.Object
nablarch.core.dataformat.DataRecordFormatterSupport
- All Implemented Interfaces:
Closeable
,AutoCloseable
,DataRecordFormatter
- Direct Known Subclasses:
FixedLengthDataRecordFormatter
,StructuredDataRecordFormatterSupport
,VariableLengthDataRecordFormatter
@Published(tag="architect")
public abstract class DataRecordFormatterSupport
extends Object
implements DataRecordFormatter
フォーマット定義ファイルの内容に従い、ファイルデータの読み書きを行うクラスの抽象基底クラス。
本クラスでは、フォーマット定義情報保持クラス(LayoutDefinition)の初期化および内容の妥当性検証を行い、 実際のファイルデータの読み書きはサブクラスにて行う。
本クラスを継承するクラスでは、以下のディレクティブを指定することができる。
- ファイルタイプ
- 文字エンコーディング
- レコード終端文字列(改行コード)
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
ファイルフォーマッタが共通的に使用するディレクティブの名前と値の型。(タイプセーフEnum) 以下に一覧を示す。
file-type:String text-encoding:String record-separator:String -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
addConvertorToField
(FieldDefinition field, RecordDefinition recordDefinition) フィールドのフォーマット定義を保持するクラスに関連するコンバータを生成し、フィールド定義クラスに設定する。 コンバータを生成する役割を担うコンバータファクトリは、サブクラスで指定されたコンバータ情報設定クラスをもとに生成する。getConvertorSetting()
protected final InvalidDataFormatException
InvalidDataFormatException
に フォーマットファイルのパスと例外発生時の行番号を設定する。protected CharacterReplacer
createCharacterReplacer
(FieldDefinition field, String replacementType) デフォルトの寄せ字コンバータを生成する。protected Map<String,
DataRecordFormatterSupport.Directive> 使用するディレクティブの名前とDirectiveのMapを生成する。 サブクラスで使用するディレクティブを追加する場合は、本メソッドをオーバーライドし、任意のディレクティブを追加すること。protected abstract ConvertorSetting
コンバータの設定情報を取得する。デフォルトの文字エンコーディングを取得する。protected LayoutDefinition
フォーマット定義ファイルの情報を保持するクラスを取得する。このフォーマッタが取り扱うファイル種別を返却する。このフォーマッタが取り扱うファイルのmime-typeを返却する。
デフォルトではtext/plainを返却する。必要に応じサブクラスでオーバーライドすること。int
読み込みまたは書き込み中のレコードのレコード番号を取得する。protected String
レコード終端文字列を取得する。protected void
読み込みまたは書き込み中のレコードのレコード番号をインクリメントする。フォーマット定義情報保持クラスの初期化を行う。 初期化は本メソッドの1回目の実行時のみ行われ、2回目以降の実行時に初期化は行われない。protected void
レコード識別情報が存在する場合(マルチレイアウトファイルの場合)、 レコード識別情報に関連するフィールド定義クラスの初期化(コンバータ設定およびエンコーディング設定)を行う。protected void
フォーマット定義情報保持クラス(LayoutDefinition
)の初期化および内容の妥当性を検証し、 フォーマット定義情報保持クラスから必要な情報を本クラスのプロパティに設定する。 フォーマット定義情報保持クラスがすでに初期化されている場合、初期化は行わない。protected void
initializeField
(Map<String, Object> directive) フィールドを初期化する。protected void
フィールド定義クラスについて、以下の初期化処理を行う。 コンバータ設定 エンコーディング設定 差分定義が行われている場合は、親のフィールド定義情報を反映 レコード長、フィールド長の妥当性検証protected final InvalidDataFormatException
newInvalidDataFormatException
(Object... msgElements) 引数を連結したものをメッセージとして、InvalidDataFormatException
を生成する。
この例外には、フォーマットファイルのパスと例外発生時の行番号が設定される。setAllowedRecordSeparatorList
(List<String> allowedRecordSeparatorList) 許容するレコード終端文字列のリストを設定する。protected DataRecordFormatterSupport
setDataTypeProperty
(DataType<?, ?> dataType) データタイプの設定を行う。ファイルタイプ個別の設定を行う必要がある場合、必要に応じてサブクラスでオーバーライドする。setDefaultReplacementType
(Map<String, String> defaultReplacementType) データタイプ名に対応するデフォルトの寄せ字変換タイプ名を設定する。setDefinition
(LayoutDefinition definition) フォーマット定義ファイルの情報を保持するクラスを設定する。protected void
setFieldProperty
(FieldDefinition field, RecordDefinition recordDef) フィールド定義情報保持クラスのプロパティを設定する。protected void
setRecordNumber
(int recordNumber) 読み込みまたは書き込み中のレコードのレコード番号を設定する。protected void
setValueConvertorProperty
(ValueConvertor<?, ?> valueConvertor) コンバータの設定を行う。ファイルタイプ個別の設定を行う必要がある場合、必要に応じてサブクラスでオーバーライドする。protected void
validateDirectives
(Map<String, Object> directive) ディレクティブの内容の妥当性を検証する。protected void
validateDirectivesDataType
(Map<String, Object> directive) 定義されたすべてのディレクティブの値のデータ型が正しいことを検証する。protected void
validatePosition
(int head, FieldDefinition field) 開始位置と、現在位置の妥当性を検証する。protected void
validateRecordLength
(int head, RecordDefinition record) レコード長の妥当性を検証する。Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface nablarch.core.dataformat.DataRecordFormatter
close, hasNext, readRecord, setInputStream, setOutputStream, writeRecord, writeRecord
-
Constructor Details
-
DataRecordFormatterSupport
public DataRecordFormatterSupport()コンストラクタ。 ディレクティブを初期化する。
-
-
Method Details
-
createDirectiveMap
使用するディレクティブの名前とDirectiveのMapを生成する。 サブクラスで使用するディレクティブを追加する場合は、本メソッドをオーバーライドし、任意のディレクティブを追加すること。- Returns:
- 使用するディレクティブの名前と値の型のMap
-
getConvertorSetting
コンバータの設定情報を取得する。- Returns:
- コンバータの設定情報
-
initialize
フォーマット定義情報保持クラスの初期化を行う。 初期化は本メソッドの1回目の実行時のみ行われ、2回目以降の実行時に初期化は行われない。- Specified by:
initialize
in interfaceDataRecordFormatter
- Returns:
- このオブジェクト自体
-
initializeDefinition
protected void initializeDefinition()フォーマット定義情報保持クラス(LayoutDefinition
)の初期化および内容の妥当性を検証し、 フォーマット定義情報保持クラスから必要な情報を本クラスのプロパティに設定する。 フォーマット定義情報保持クラスがすでに初期化されている場合、初期化は行わない。 -
validateDirectives
ディレクティブの内容の妥当性を検証する。サブクラスで独自のディレクティブを使用する場合は、このメソッドをオーバーライドし、独自のディレクティブに対して妥当性検証を行うこと。
DataRecordFormatter
では以下の仕様を満たしているかどうかの検証を行う。- ディレクティブの値のデータ型が正しい
- ファイルタイプが定義されている
- エンコーディングが定義されている
- エンコーディングがCharset型に変換できる
- レコード終端文字列が許容されている文字である
妥当性検証に失敗した場合は、
SyntaxErrorException
がスローされる。- Parameters:
directive
- ディレクティブ
-
initializeField
フィールドを初期化する。DataRecordFormatterSupport
では、ディレクティブに設定された以下の値をフィールドに設定する。- レコード終端文字列
- 文字エンコーディング
- Parameters:
directive
- ディレクティブ
-
validateDirectivesDataType
定義されたすべてのディレクティブの値のデータ型が正しいことを検証する。- Parameters:
directive
- ディレクティブ
-
initializeClassifier
protected void initializeClassifier()レコード識別情報が存在する場合(マルチレイアウトファイルの場合)、 レコード識別情報に関連するフィールド定義クラスの初期化(コンバータ設定およびエンコーディング設定)を行う。 レコード種別識別定義の場合は、フィールド位置の整合性チェックは行わない。 -
initializeFieldDefinition
protected void initializeFieldDefinition()フィールド定義クラスについて、以下の初期化処理を行う。- コンバータ設定
- エンコーディング設定
- 差分定義が行われている場合は、親のフィールド定義情報を反映
- レコード長、フィールド長の妥当性検証
-
setFieldProperty
フィールド定義情報保持クラスのプロパティを設定する。- Parameters:
field
- フィールド定義情報保持クラスrecordDef
- レコード定義情報保持クラス
-
validateRecordLength
レコード長の妥当性を検証する。- Parameters:
head
- 位置record
- レコード定義情報保持クラス
-
validatePosition
開始位置と、現在位置の妥当性を検証する。- Parameters:
head
- 位置field
- フィールド定義情報保持クラス
-
addConvertorToField
フィールドのフォーマット定義を保持するクラスに関連するコンバータを生成し、フィールド定義クラスに設定する。 コンバータを生成する役割を担うコンバータファクトリは、サブクラスで指定されたコンバータ情報設定クラスをもとに生成する。getConvertorSetting()
- Parameters:
field
- フォーマット定義を保持するクラスrecordDefinition
- レコード定義情報保持クラス
-
createCharacterReplacer
デフォルトの寄せ字コンバータを生成する。- Parameters:
field
- フィールドreplacementType
- 寄せ字変換タイプ- Returns:
- デフォルトの寄せ字コンバータ
-
setDataTypeProperty
データタイプの設定を行う。ファイルタイプ個別の設定を行う必要がある場合、必要に応じてサブクラスでオーバーライドする。- Parameters:
dataType
- データタイプ- Returns:
- このオブジェクト自体
-
setValueConvertorProperty
コンバータの設定を行う。ファイルタイプ個別の設定を行う必要がある場合、必要に応じてサブクラスでオーバーライドする。- Parameters:
valueConvertor
- コンバータ
-
setDefinition
フォーマット定義ファイルの情報を保持するクラスを設定する。- Specified by:
setDefinition
in interfaceDataRecordFormatter
- Parameters:
definition
- フォーマット定義ファイルの定義情報- Returns:
- 本クラスのインスタンス
-
getDefinition
フォーマット定義ファイルの情報を保持するクラスを取得する。- Returns:
- フォーマット定義ファイルの情報を保持するクラス
-
setAllowedRecordSeparatorList
public DataRecordFormatterSupport setAllowedRecordSeparatorList(List<String> allowedRecordSeparatorList) 許容するレコード終端文字列のリストを設定する。- Parameters:
allowedRecordSeparatorList
- 許容されるレコード終端文字列のリスト- Returns:
- このオブジェクト自体
-
getRecordNumber
public int getRecordNumber()読み込みまたは書き込み中のレコードのレコード番号を取得する。- Specified by:
getRecordNumber
in interfaceDataRecordFormatter
- Returns:
- recordNumber 読み込みまたは書き込み中のレコードのレコード番号
-
incrementRecordNumber
protected void incrementRecordNumber()読み込みまたは書き込み中のレコードのレコード番号をインクリメントする。 -
setRecordNumber
protected void setRecordNumber(int recordNumber) 読み込みまたは書き込み中のレコードのレコード番号を設定する。- Parameters:
recordNumber
- 読み込みまたは書き込み中のレコードのレコード番号
-
getDefaultEncoding
デフォルトの文字エンコーディングを取得する。- Returns:
- 文字エンコーディング
-
getRecordSeparator
レコード終端文字列を取得する。- Returns:
- レコード終端文字列
-
setDefaultReplacementType
public DataRecordFormatterSupport setDefaultReplacementType(Map<String, String> defaultReplacementType) データタイプ名に対応するデフォルトの寄せ字変換タイプ名を設定する。- Parameters:
defaultReplacementType
- データタイプ名に対応するデフォルトの寄せ字変換タイプ名- Returns:
- このオブジェクト自体
-
newInvalidDataFormatException
引数を連結したものをメッセージとして、InvalidDataFormatException
を生成する。
この例外には、フォーマットファイルのパスと例外発生時の行番号が設定される。- Parameters:
msgElements
- メッセージ要素- Returns:
InvalidDataFormatException
インスタンス
-
addFormatAndRecordNumberTo
InvalidDataFormatException
に フォーマットファイルのパスと例外発生時の行番号を設定する。- Parameters:
e
- 設定対象の例外インスタンス- Returns:
- 引数で与えられたインスタンス
-
getFileType
このフォーマッタが取り扱うファイル種別を返却する。- Returns:
- ファイル種別
-
getMimeType
このフォーマッタが取り扱うファイルのmime-typeを返却する。
デフォルトではtext/plainを返却する。必要に応じサブクラスでオーバーライドすること。- Returns:
- ファイルのmime-type
-