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