jp.terasoluna.fw.file.dao.standard

クラス AbstractFileLineIterator<T>

    • メソッドの概要

      メソッド 
      修飾子とタイプ メソッドと説明
      void closeFile()
      ファイル閉塞処理を行う。
      protected int[] getColumnBytes()
      各カラムのバイト数を取得する。
      protected char[] getColumnEncloseChar()
      カラムの囲み文字を取得する。
      int getCurrentLineCount()
      現在ファイル入力処理済みのデータ部内の行数を取得する。
      protected abstract char getDelimiter()
      区切り文字を取得する。
      protected abstract char getEncloseChar()
      囲み文字を取得する。
      protected Field[] getFields()
      ファイル行オブジェクトのField情報(Annotation)を格納する変数を取得する。
      protected String getFileEncoding()
      ファイルエンコーディング取得する。
      protected String getFileName()
      ファイル名を取得する。
      List<String> getHeader()
      ヘッダ部のデータを取得する。
      protected int getHeaderLineCount()
      ヘッダ行数を取得する。
      protected String getLineFeedChar()
      行区切り文字を取得する。
      protected int getTotalBytes()
      1行分のバイト数を取得する。
      List<String> getTrailer()
      トレイラ部のデータを取得する。
      protected int getTrailerLineCount()
      トレイラ行数を取得する。
      boolean hasNext()
      次の行のレコードがあるかどうか確認する。
      protected void init()
      初期化処理を行う。
      protected boolean isCheckByte(InputFileColumn inputFileColumn)
      対象カラムに対するバイト数チェックを行うかを返す。
      protected boolean isCheckByte(int columnByte)
      対象カラムに対するバイト数チェックを行うかを返す。
      protected boolean isCheckColumnAnnotationCount()
      ファイル行オブジェクトにアノテーションが設定されている事をチェックするかどうかを返す。
      protected boolean isCheckEncloseChar()
      囲み文字が設定されていない事をチェックするかどうかを返す。
      protected boolean isEnclosed()
      囲み文字が設定されているかを返す。
      T next()
      繰り返し処理でファイル行オブジェクトを返却する。
      protected String readLine()
      ファイルからデータ部のデータを1行分読み取り、文字列として呼出元に返却する。
      void remove()
      サポートしない。
      protected abstract String[] separateColumns(String fileLineString)
      データ部のデータ1行分をファイル行オブジェクトのアノテーションの記述に 従いカラムに分割する。
      protected void setLineFeedChar(String lineFeedChar)
      行区切り文字を設定する。
      void skip(int skipLines)
      データ部のデータを読み飛ばす処理を行う。
    • コンストラクタの詳細

      • AbstractFileLineIterator

        public AbstractFileLineIterator(String fileName,
                                Class<T> clazz,
                                Map<String,ColumnParser> columnParserMap)
        コンストラクタ。
        引数のチェック及び、ファイル行オブジェクトのFileFormatアノテーション 設定のチェックを行う。
        チェック結果問題がある場合は例外を発生する。
        パラメータ:
        fileName - ファイル名最後に移動
        clazz - ファイル行オブジェクトクラス
        columnParserMap - フォーマット処理リスト
        例外:
        FileException - 初期化処理で失敗した場合。
    • メソッドの詳細

      • hasNext

        public boolean hasNext()
        次の行のレコードがあるかどうか確認する。
        繰り返し処理でさらに要素がある場合に true を返します。
        定義:
        hasNext インタフェース内 Iterator
        定義:
        hasNext インタフェース内 FileLineIterator<T>
        戻り値:
        繰り返し処理でさらに要素がある場合に true
        例外:
        FileException - リーダからIOExceptionが発生した場合。
      • next

        public T next()
        繰り返し処理でファイル行オブジェクトを返却する。

        次の行のレコードの情報をファイル行オブジェクトに格納して返却します。
        繰り返し処理で次の要素を返します。

        次の行のレコードの情報はファイル行オブジェクトのInputFileColumnの定義に 基づいて格納される。
        もし、ファイル行オブジェクトのマッピングフィールドの数と合わない レコード情報が来た場合は例外を発生する。
        また、InputFileColumnに設定されたバイト数と違う情報が来た場合も例外を発生する。
        それではない場合は以下の順番でデータを処理し格納する。
            
        • トリム処理
        •   
        • パディング処理
        •   
        • 文字列変換処理
        •   
        • 型変換(マッピング)処理
        定義:
        next インタフェース内 Iterator
        定義:
        next インタフェース内 FileLineIterator<T>
        戻り値:
        ファイル行オブジェクト
        例外:
        FileException - ファイル行オブジェクトの生成に失敗した場合。
        FileLineException - ファイル行オブジェクトの取得に失敗した場合。
      • remove

        public void remove()
        サポートしない。
        Iteratorで定義されているメソッド。
        FileQueryDAOでは実装しないので、他のクラスから呼び出した場合、 UnsupportedOperationExceptionをスローする。
        定義:
        remove インタフェース内 Iterator
        例外:
        UnsupportedOperationException - このメソッドはサポートしない。
      • init

        protected void init()
        初期化処理を行う。
        初期化処理で行う処理は以下です。。
        • ファイル行オブジェクトの属性(Field)の取得
        • 文字変換種別オブジェクト(stringConverters)の生成
        • ファイル行オブジェクトの属性に対するセッタメソッド(methods)の取得
        • ファイルからデータを読込むためのLineReaderの生成
        • ヘッダ部の取得
        • トレイラキューの初期化
        init()はAbstracFileLineIteratorを継承するクラスのコンストラクタで 呼ぶメソッドである。
        下位互換性のため、2回以上実行できないようにしている。
        例外:
        FileException - 初期化処理で失敗した場合。
        FileLineException - カラムに関連する初期化処理で失敗した場合。
      • closeFile

        public void closeFile()
        ファイル閉塞処理を行う。
        定義:
        closeFile インタフェース内 FileLineIterator<T>
        例外:
        FileException - ファイル閉塞処理で失敗した場合。
      • getHeader

        public List<String> getHeader()
        ヘッダ部のデータを取得する。
        データ部とトレイラ部の取得処理の実行可否と関係なくヘッダ部を取得することが 出来る。
        定義:
        getHeader インタフェース内 FileLineIterator<T>
        戻り値:
        header ヘッダ部の文字列リスト
      • getTrailer

        public List<String> getTrailer()
        トレイラ部のデータを取得する。
        トレイラ部のデータを取得するとデータ部のデータを取得することは出来ない。
        理由はトレイラ部のデータ取得時に、データ部の情報を全部スキップするためです。
        ※注意事項
        データ部のデータを全部取得する以前にトレイラ部を取得しないこと。
        定義:
        getTrailer インタフェース内 FileLineIterator<T>
        戻り値:
        トレイラ部の文字列リスト
        例外:
        FileException - データ行取得処理で失敗した場合。
      • readLine

        protected String readLine()
        ファイルからデータ部のデータを1行分読み取り、文字列として呼出元に返却する。
        トレイラ部が存在する場合はトレイラキューからデータを取得して結果文字列に する。
        その後LineReaderから1行分の文字列を取得しトレイラキューに格納する。
        トレイラ部が存在しない場合はLineReaderから取得した1行分の文字列を結果文字列に する。
        もし、次の1行分のデータがない場合はnullを返す。
        戻り値:
        データ部の1行分の文字列
        例外:
        FileException - データ行取得処理で失敗した場合。
      • skip

        public void skip(int skipLines)
        データ部のデータを読み飛ばす処理を行う。
        定義:
        skip インタフェース内 FileLineIterator<T>
        パラメータ:
        skipLines - 読み飛ばす行数。
      • getDelimiter

        protected abstract char getDelimiter()
        区切り文字を取得する。
        戻り値:
        行区切り文字。
      • getEncloseChar

        protected abstract char getEncloseChar()
        囲み文字を取得する。
        戻り値:
        囲み文字。
      • separateColumns

        protected abstract String[] separateColumns(String fileLineString)
        データ部のデータ1行分をファイル行オブジェクトのアノテーションの記述に 従いカラムに分割する。
        引数fileLineStringnullもしくは 空文字の場合は、要素を持たないString配列を返します。
        サブクラスはこのメソッドをオーバーライドします。
        パラメータ:
        fileLineString - データ部のデータ1行分
        戻り値:
        データ部1行の文字列を分解した文字配列
      • isCheckByte

        protected boolean isCheckByte(InputFileColumn inputFileColumn)
        対象カラムに対するバイト数チェックを行うかを返す。
        パラメータ:
        inputFileColumn - 対象カラムのInputFileColumn情報
        戻り値:
        バイト数が設定されている(1バイト以上)場合はtrue。
      • isCheckByte

        protected boolean isCheckByte(int columnByte)
        対象カラムに対するバイト数チェックを行うかを返す。
        パラメータ:
        columnByte - 対象カラムのバイト数
        戻り値:
        バイト数が設定されている(1バイト以上)場合はtrue。
      • getLineFeedChar

        protected String getLineFeedChar()
        行区切り文字を取得する。
        戻り値:
        行区切り文字
      • setLineFeedChar

        protected void setLineFeedChar(String lineFeedChar)
        行区切り文字を設定する。
        パラメータ:
        行区切り文字 -
      • getFileEncoding

        protected String getFileEncoding()
        ファイルエンコーディング取得する。
        戻り値:
        ファイルエンコーディング
      • getHeaderLineCount

        protected int getHeaderLineCount()
        ヘッダ行数を取得する。
        戻り値:
        ヘッダ行数
      • getTrailerLineCount

        protected int getTrailerLineCount()
        トレイラ行数を取得する。
        戻り値:
        トレイラ行数
      • getCurrentLineCount

        public int getCurrentLineCount()
        現在ファイル入力処理済みのデータ部内の行数を取得する。
        戻り値:
        ファイル入力処理済みのデータ部の行数。
      • getFields

        protected Field[] getFields()
        ファイル行オブジェクトのField情報(Annotation)を格納する変数を取得する。
        戻り値:
        ファイル行オブジェクトのField情報(Annotation)を格納する変数
      • getFileName

        protected String getFileName()
        ファイル名を取得する。
        戻り値:
        fileName ファイル名
      • getColumnEncloseChar

        protected char[] getColumnEncloseChar()
        カラムの囲み文字を取得する。
        戻り値:
        columnEncloseChar 囲み文字
      • isEnclosed

        protected boolean isEnclosed()
        囲み文字が設定されているかを返す。
        戻り値:
        enclosed 囲み文字
      • getColumnBytes

        protected int[] getColumnBytes()
        各カラムのバイト数を取得する。
        戻り値:
        columnBytes 各カラムのバイト数
      • getTotalBytes

        protected int getTotalBytes()
        1行分のバイト数を取得する。
        戻り値:
        totalBytes 1行分のバイト数
      • isCheckEncloseChar

        protected boolean isCheckEncloseChar()
        囲み文字が設定されていない事をチェックするかどうかを返す。
        戻り値:
        チェックを行う場合はtrue。
      • isCheckColumnAnnotationCount

        protected boolean isCheckColumnAnnotationCount()
        ファイル行オブジェクトにアノテーションが設定されている事をチェックするかどうかを返す。
        戻り値:
        チェックを行う場合はtrue。

Copyright © 2014 NTT DATA Corporation.