All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nablarch.test.core.file.VariableLengthFile Maven / Gradle / Ivy

The newest version!
package nablarch.test.core.file;

import nablarch.core.dataformat.DataRecordFormatterSupport.Directive;
import nablarch.core.dataformat.VariableLengthDataRecordFormatter.VariableLengthDirective;
import nablarch.core.util.Builder;

import static nablarch.core.dataformat.VariableLengthDataRecordFormatter.VariableLengthDirective.FIELD_SEPARATOR;

/**
 * 可変長ファイルを表すクラス。
* * @author T.Kawasaki */ public class VariableLengthFile extends DataFile { /** タブを表す文字 */ private static final String TAB_EXPRESSION = "\\t"; /** ディレクティブのデフォルト値取得用キー */ private static final String DEFAULT_DIRECTIVES = "variableLengthDirectives"; /** * コンストラクタ。
* * @param path ファイルパス */ public VariableLengthFile(String path) { super(path); setDirective(FIELD_SEPARATOR.getName(), ","); prepareDefaultDirectives(DEFAULT_DIRECTIVES); } /** * {@inheritDoc} * 可変長ファイルを表すファイルタイプが返却される。 */ @Override protected String getFileType() { return "Variable"; } /** * {@inheritDoc} * 可変長ファイルの断片が返却される。 * @see VariableLengthFileFragment */ @Override protected DataFileFragment createNewFragment() { return new VariableLengthFileFragment(this); } /** * {@inheritDoc} * 可変長ファイルのディレクティブ定義から対応するディレクティブが返却される。 * @see VariableLengthDirective */ @Override protected Directive valueOf(String directiveName) { return VariableLengthDirective.valueOf(directiveName); } /** * {@inheritDoc} * 区切り文字に"\\t"が指定された場合、タブに変換する。 */ @Override protected Object convertDirectiveValue(Directive directive, String stringValue) { if (directive.equals(FIELD_SEPARATOR)) { // タブの変換 if (stringValue.equals(TAB_EXPRESSION)) { return "\t"; } // フィールド区切り文字は1文字でなければならない if (stringValue.length() != 1) { throw new IllegalArgumentException(Builder.concat( FIELD_SEPARATOR.getName(), " must be one character.", "but was ", stringValue)); } } return super.convertDirectiveValue(directive, stringValue); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy