org.opengion.hayabusa.io

## クラス AbstractTableReader

- java.lang.Object
- - org.opengion.hayabusa.io.AbstractTableReader

- すべての実装されたインタフェース:
    TableReader
  直系の既知のサブクラス:
    TableReader_Default, TableReader_JExcel

      public abstract class AbstractTableReader
      extends Object
      implements TableReader

  指定の区切り記号(初期値:タブ区切り)ファイルの読み取りクラスです。 名前，データの入力部のみオーバーライドすれば，各種入力フォーマットに合わせた サブクラスを実現する事が可能です。
  機能分類
    ファイル入力
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドの概要

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `protected String` | `columns`
    `protected DBColumn[]` | `dbColumn`
    `protected DBTableModel` | `table`

    - ### インタフェースから継承されたフィールド org.opengion.hayabusa.io.TableReader

      `TAB_SEPARATOR`

  - ### コンストラクタの概要

    コンストラクタ
    コンストラクタと説明
    `AbstractTableReader()`

  - ### メソッドの概要

    メソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `DBTableModel` | `getDBTableModel()` 内部の DBTableModel を返します。
    `protected String` | `getEncode()` 読み取り元ファイルのエンコード文字列を取得します。
    `int` | `getMaxRowCount()` DBTableModelのデータとして登録する最大件数をこの値に設定します (初期値:DB_MAX_ROW_COUNT[=1000])。
    `String` | `getSeparator()` データを書き込む場合の,区切り文字を返します。
    `int` | `getSkipRowCount()` データの読み始めの初期値を取得します。
    `protected boolean` | `isDebug()` デバッグ情報を出力するかどうかを取得します。
    `boolean` | `isExcel()` このクラスが、EXCEL対応機能を持っているかどうかを返します。
    `protected boolean` | `isUseNumber()` 行番号情報を、使用している(true)/していない(false)を返します。
    `protected boolean` | `matchCheck(String[] data, String[] names)` 正規表現チェックでの処理対象行判断 ファイルから特定の行のみ取り込みたい場合に利用します。
    `protected String[]` | `readData(String data, int clmSize)` １行のデータを テーブルモデルにセットするように分割します。
    `abstract void` | `readDBTable()` DBTableModel から 各形式のデータを作成して,BufferedReader より読み取ります。
    `abstract void` | `readDBTable(BufferedReader reader)` DBTableModel から 各形式のデータを作成して,BufferedReader より読み取ります。
    `void` | `setColumns(String clms)` 読み取り元ファイルのカラム列を、外部(タグ)より指定します。
    `void` | `setDebug(boolean useDebug)` デバッグ情報を出力するかどうかを指定します。
    `void` | `setEncode(String enc)` 読み取り元ファイルのエンコード文字列を指定します。
    `void` | `setFilename(String filename)` 読み取り元ファイル名をセットします。
    `void` | `setMatchKeys(String[] keys)` 取込み対象判定を行うカラムを配列で指定します。
    `void` | `setMatchVals(String[] vals)` 取込み対象判定の正規表現を配列で指定します。
    `void` | `setMaxRowCount(int maxRowCount)` DBTableModelのデータとして登録する最大件数をこの値に設定します (初期値:DB_MAX_ROW_COUNT[=1000])。
    `void` | `setNullBreakClm(String clm)` ここに指定されたカラム列に NULL が現れた時点で読み取りを中止します。
    `void` | `setResourceManager(ResourceManager resource)` リソースマネージャーをセットします。
    `void` | `setSeparator(String sep)` データを読み込む場合の,区切り文字をセットします。
    `void` | `setSheetConstData(String constKeys, String constAdrs)` EXCELファイルを読み込むときのシート単位の固定値を設定するためのカラム名とアドレスを指定します。
    `void` | `setSheetName(String sheetName)` DBTableModelのデータとしてEXCELファイルを読み込むときのシート名を設定します。
    `void` | `setSheetNos(String sheetNos)` EXCELファイルを読み込むときのシート番号を指定します(初期値:0)。
    `void` | `setSkipRowCount(int count)` データの読み飛ばし件数を設定します。
    `protected void` | `setTableColumnValues(String[] values)` DBTableModelオブジェクトに、１行分のデータを追加します。
    `protected void` | `setTableDBColumn(String[] names)` DBColumn オブジェクトをDBTable に設定します。
    `void` | `setUseNumber(boolean useNumber)` 行番号情報を指定[true:使用している/false:していない]します(初期値:true)。
    `void` | `setUseRenderer(boolean useRenderer)` 読取処理でラベルをコードリソースに逆変換を行うかどうかを指定します。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### フィールドの詳細

    - #### table

          protected DBTableModel table

    - #### dbColumn

          protected DBColumn[] dbColumn

    - #### columns

          protected String columns

  - ### コンストラクタの詳細

    - #### AbstractTableReader

          public AbstractTableReader()

  - ### メソッドの詳細

    - #### readDBTable

          public abstract void readDBTable()

      DBTableModel から 各形式のデータを作成して,BufferedReader より読み取ります。 コメント/空行を除き、最初の行は、必ず項目名が必要です。 それ以降は、コメント/空行を除き、データとして読み込んでいきます。 このメソッドは、EXCEL 読み込み時に使用します。
      定義:
        `readDBTable` インタフェース内 `TableReader`
      関連項目:
        `isExcel()`

    - #### readDBTable

          public abstract void readDBTable(BufferedReader reader)

      DBTableModel から 各形式のデータを作成して,BufferedReader より読み取ります。 コメント/空行を除き、最初の行は、必ず項目名が必要です。 それ以降は、コメント/空行を除き、データとして読み込んでいきます。
      定義:
        `readDBTable` インタフェース内 `TableReader`
      パラメータ:
        `reader` - BufferedReaderオブジェクト

    - #### setResourceManager

          public void setResourceManager(ResourceManager resource)

      リソースマネージャーをセットします。 これは、言語(ロケール)に応じた DBColumn をあらかじめ設定しておく為に 必要です。 リソースマネージャーが設定されていない、または、所定のキーの DBColumn が リソースに存在しない場合は、内部で DBColumn オブジェクトを作成します。
      定義:
        `setResourceManager` インタフェース内 `TableReader`
      パラメータ:
        `resource` - リソースマネージャー
      変更履歴:

        4.0.0.0 (2005/01/31) lang ⇒ ResourceManager へ変更

    - #### setTableDBColumn

          protected void setTableDBColumn(String[] names)

      DBColumn オブジェクトをDBTable に設定します。
      パラメータ:
        `names` - カラム名配列
      変更履歴:

        3.5.4.2 (2003/12/15) private を protected に変更。
        3.5.4.5 (2004/01/23) DBColumn 配列に値をセットします。
        5.2.1.0 (2010/10/01) useRenderer対応(コードリソース毎のラベル逆引き)
        5.9.0.0 (2015/09/04) XLSX対応でinitをここで行えるようにする。

    - #### setTableColumnValues

          protected void setTableColumnValues(String[] values)

      DBTableModelオブジェクトに、１行分のデータを追加します。 これ自体は、メソッドの共通化による 拡張をしやすくするために用意しました。
      パラメータ:
        `values` - １行分のデータ配列
      変更履歴:

        5.2.1.0 (2010/10/01) 新規作成

    - #### readData

          protected String[] readData(String data,
                          int clmSize)

      １行のデータを テーブルモデルにセットするように分割します。 なお、読込みは，NAME項目分を読み込みます。データ件数が少ない場合は、 "" をセットしておきます。 データの分割は、separator文字を使用します。
      パラメータ:
        `data` - １行のデータ
        `clmSize` - カラム数
      戻り値:
        分割された文字列配列
      変更履歴:

        3.3.3.1 (2003/07/18) ファイルリード/ライト時に後ろスペースの除去を行います。
        3.7.0.5 (2005/04/11) useNumber 属性を考慮します。

    - #### matchCheck

          protected boolean matchCheck(String[] data,
                           String[] names)

      正規表現チェックでの処理対象行判断 ファイルから特定の行のみ取り込みたい場合に利用します。 matchKey(カラム名)とmatchVals(正規表現）を利用して処理判定を行います なお、EXCEL 入力には、この設定は適用されません。 何も設定しない場合は全行取込みとなります。
      戻り値:
        処理対象行かどうか（true:処理対象）
      変更履歴:

        5.9.8.1 (2016/05/13) 新規追加

    - #### getDBTableModel

          public DBTableModel getDBTableModel()

      内部の DBTableModel を返します。
      定義:
        `getDBTableModel` インタフェース内 `TableReader`
      戻り値:
        テーブルモデル

    - #### setSeparator

          public void setSeparator(String sep)

      データを読み込む場合の,区切り文字をセットします。 なお，このメソッドは,サブクラスによっては,使用しない場合があります。 もし，使用しないサブクラスを作成する場合は, UnsupportedOperationException を throw するように,サブクラスで実装して下さい。
      定義:
        `setSeparator` インタフェース内 `TableReader`
      パラメータ:
        `sep` - 区切り文字
      変更履歴:

        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

    - #### getSeparator

          public String getSeparator()

      データを書き込む場合の,区切り文字を返します。
      戻り値:
        区切り文字

    - #### getMaxRowCount

          public int getMaxRowCount()

      DBTableModelのデータとして登録する最大件数をこの値に設定します (初期値:DB_MAX_ROW_COUNT[=1000])。 サーバーのメモリ資源と応答時間の確保の為です。
      定義:
        `getMaxRowCount` インタフェース内 `TableReader`
      戻り値:
        最大検索件数

    - #### setMaxRowCount

          public void setMaxRowCount(int maxRowCount)

      DBTableModelのデータとして登録する最大件数をこの値に設定します (初期値:DB_MAX_ROW_COUNT[=1000])。 サーバーのメモリ資源と応答時間の確保の為です。
      定義:
        `setMaxRowCount` インタフェース内 `TableReader`
      パラメータ:
        `maxRowCount` - 最大検索件数
      変更履歴:

        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
        5.5.8.5 (2012/11/27) 0を無制限として処理します。

    - #### setSheetName

          public void setSheetName(String sheetName)

      DBTableModelのデータとしてEXCELファイルを読み込むときのシート名を設定します。 これにより、複数の形式の異なるデータを順次読み込むことや、シートを指定して 読み取ることが可能になります。 sheetNos と sheetName が同時に指定された場合は、sheetNos が優先されます。エラーにはならないのでご注意ください。 のでご注意ください。 このメソッドは、isExcel() == true の場合のみ利用されます。 ※ このクラスでは実装されていません。
      定義:
        `setSheetName` インタフェース内 `TableReader`
      パラメータ:
        `sheetName` - シート名
      関連項目:
        `TableReader.setSheetNos( String )`
      変更履歴:

        3.5.4.2 (2003/12/15) 新規追加

    - #### setSheetNos

          public void setSheetNos(String sheetNos)

      EXCELファイルを読み込むときのシート番号を指定します(初期値:0)。 EXCEL読み込み時に複数シートをマージして取り込みます。 シート番号は、0 から始まる数字で表します。 ヘッダーは、最初のシートのカラム位置に合わせます。（ヘッダータイトルの自動認識はありません。） よって、指定するシートは、すべて同一レイアウトでないと取り込み時にカラムのずれが発生します。 シート番号の指定は、カンマ区切りで、複数指定できます。また、N-M の様にハイフンで繋げることで、 N 番から、M 番のシート範囲を一括指定可能です。また、"*" による、全シート指定が可能です。 これらの組み合わせも可能です。（ 0,1,3,5-8,10-* ） ただし、"*" に関しては例外的に、一文字だけで、すべてのシートを表すか、N-* を最後に指定するかの どちらかです。途中には、"*" は、現れません。 シート番号は、重複(1,1,2,2)、逆転(3,2,1) での指定が可能です。これは、その指定順で、読み込まれます。 sheetNos と sheetName が同時に指定された場合は、sheetNos が優先されます。エラーにはならないのでご注意ください。 このメソッドは、isExcel() == true の場合のみ利用されます。 初期値は、0（第一シート） です。 ※ このクラスでは実装されていません。
      定義:
        `setSheetNos` インタフェース内 `TableReader`
      パラメータ:
        `sheetNos` - EXCELファイルのシート番号（0から始まる）
      関連項目:
        `setSheetName( String )`
      変更履歴:

        5.5.7.2 (2012/10/09) 新規追加

    - #### setSheetConstData

          public void setSheetConstData(String constKeys,
                               String constAdrs)

      EXCELファイルを読み込むときのシート単位の固定値を設定するためのカラム名とアドレスを指定します。 カラム名は、カンマ区切りで指定します。 対応するアドレスを、EXCEL上の行-列を０から始まる整数でカンマ区切りで指定します。 これにより、シートの一か所に書かれている情報を、DBTableModel のカラムに固定値として 設定することができます。 例として、DB定義書で、テーブル名をシートの全レコードに設定したい場合などに使います。 このメソッドは、isExcel() == true の場合のみ利用されます。
      定義:
        `setSheetConstData` インタフェース内 `TableReader`
      パラメータ:
        `constKeys` - 固定値となるカラム名(CSV形式)
        `constAdrs` - 固定値となるアドレス(行-列,行-列,・・・)
      変更履歴:

        5.5.8.2 (2012/11/09) 新規追加

    - #### setNullBreakClm

          public void setNullBreakClm(String clm)

      ここに指定されたカラム列に NULL が現れた時点で読み取りを中止します。 これは、指定のカラムは必須という事を条件に、そのレコードだけを読み取る処理を行います。 複数Sheetの場合は、次のSheetを読みます。 現時点では、Excel の場合のみ有効です。
      定義:
        `setNullBreakClm` インタフェース内 `TableReader`
      パラメータ:
        `clm` - カラム列
      変更履歴:

        5.5.8.2 (2012/11/09) 新規追加

    - #### isExcel

          public boolean isExcel()

      このクラスが、EXCEL対応機能を持っているかどうかを返します。 EXCEL対応機能とは、シート名のセット、読み込み元ファイルの Fileオブジェクト取得などの、特殊機能です。 本来は、インターフェースを分けるべきと考えますが、taglib クラス等の 関係があり、問い合わせによる条件分岐で対応します。
      定義:
        `isExcel` インタフェース内 `TableReader`
      戻り値:
        EXCEL対応機能を持っているかどうか
      変更履歴:

        3.5.4.3 (2004/01/05) 新規追加

    - #### setFilename

          public void setFilename(String filename)

      読み取り元ファイル名をセットします。(DIR + Filename) これは、EXCEL追加機能として実装されています。 ※ このクラスでは実装されていません。
      定義:
        `setFilename` インタフェース内 `TableReader`
      パラメータ:
        `filename` - 読み取り元ファイル名
      変更履歴:

        3.5.4.3 (2004/01/05) 新規作成

    - #### setColumns

          public void setColumns(String clms)

      読み取り元ファイルのカラム列を、外部(タグ)より指定します。 ファイルに記述された #NAME より優先して使用されます。
      定義:
        `setColumns` インタフェース内 `TableReader`
      パラメータ:
        `clms` - 読み取り元ファイルのカラム列(カンマ区切り文字)
      変更履歴:

        3.5.4.5 (2004/01/23) 新規作成

    - #### setEncode

          public void setEncode(String enc)

      読み取り元ファイルのエンコード文字列を指定します。 ファイルは、BufferedReader で受け取る為、本来は、エンコードは不要ですが、 固定長ファイルの読み取り時のバイトコード分割時に、指定のエンコードで 分割する必要があります。(例えば、半角文字は、Shift_JIS では、１バイト)
      定義:
        `setEncode` インタフェース内 `TableReader`
      パラメータ:
        `enc` - ファイルのエンコード文字列
      変更履歴:

        3.5.4.5 (2004/01/23) 新規作成

    - #### getEncode

          protected String getEncode()

      読み取り元ファイルのエンコード文字列を取得します。 ファイルは、BufferedReader で受け取る為、本来は、エンコードは不要ですが、 固定長ファイルの読み取り時のバイトコード分割時に、指定のエンコードで 分割する必要があります。(例えば、半角文字は、Shift_JIS では、１バイト)
      戻り値:
        ファイルのエンコード文字列
      変更履歴:

        3.5.4.5 (2004/01/23) 新規作成

    - #### setUseNumber

          public void setUseNumber(boolean useNumber)

      行番号情報を指定[true:使用している/false:していない]します(初期値:true)。 通常のフォーマットでは、各行の先頭に行番号が出力されています。 読み取り時に、#NAME 属性を使用する場合は、この行番号を無視しています。 #NAME 属性を使用せず、columns 属性でカラム名を指定する場合(他システムの 出力ファイルを読み取るケース等)では、行番号も存在しないケースがあり、 その様な場合に、useNumber="false" を指定すれば、データの最初から読み取り始めます。 この場合、出力データのカラムの並び順が変更された場合、columns 属性も 指定しなおす必要がありますので、できるだけ、#NAME 属性を使用するように してください。 なお、EXCEL 入力には、この設定は適用されません。(暫定対応) 初期値は、true(使用する) です。
      定義:
        `setUseNumber` インタフェース内 `TableReader`
      パラメータ:
        `useNumber` - 行番号情報 [true:使用する/false:使用しない]
      変更履歴:

        3.7.0.5 (2005/04/11) 新規追加

    - #### getSkipRowCount

          public int getSkipRowCount()

      データの読み始めの初期値を取得します。 TAB区切りテキストやEXCEL等のデータの読み始めの初期値を指定します。 ファイルの先頭行が、０行としてカウントしますので、設定値は、読み飛ばす 件数になります。(１と指定すると、１件読み飛ばし、２行目から読み込みます。) 読み飛ばしは、コメント行などは、無視しますので、実際の行数分読み飛ばします。 ＃NAME属性や、columns 属性は、有効です。
      戻り値:
        読み始めの初期値
      変更履歴:

        5.1.6.0 (2010/05/01) 新規作成

    - #### setSkipRowCount

          public void setSkipRowCount(int count)

      データの読み飛ばし件数を設定します。 TAB区切りテキストやEXCEL等のデータの読み始めの初期値を指定します。 ファイルの先頭行が、０行としてカウントしますので、設定値は、読み飛ばす 件数になります。(１と指定すると、１件読み飛ばし、２行目から読み込みます。) 読み飛ばしは、コメント行などは、無視しますので、実際の行数分読み飛ばします。 ＃NAME属性や、columns 属性は、有効です。
      定義:
        `setSkipRowCount` インタフェース内 `TableReader`
      パラメータ:
        `count` - 読み始めの初期値
      変更履歴:

        5.1.6.0 (2010/05/01) 新規作成

    - #### setUseRenderer

          public void setUseRenderer(boolean useRenderer)

      読取処理でラベルをコードリソースに逆変換を行うかどうかを指定します。 TableWriter_Renderer 系のクラスで出力した場合は、コードリソースがラベルで出力されます。 そのファイルを読み取ると、当然、エラーになります。 ここでは、コードリソースのカラムに対して、ラベルからコードを求める逆変換を行うことで、 Renderer 系で出力したファイルを取り込むことができるようにします。 ここでは、TableWriter 系と同様に、TableReader_Renderer 系のクラスを作るのではなく、 属性値のフラグで、制御します。 将来的には、TableWriter 系も廃止して、同様のフラグで制御するように変更する予定です。
      定義:
        `setUseRenderer` インタフェース内 `TableReader`
      パラメータ:
        `useRenderer` - コードリソースのラベル変換を行うかどうかを指定
      変更履歴:

        5.2.1.0 (2010/10/01) 新規作成

    - #### isUseNumber

          protected boolean isUseNumber()

      行番号情報を、使用している(true)/していない(false)を返します。 通常のフォーマットでは、各行の先頭に行番号が出力されています。 読み取り時に、#NAME 属性を使用する場合は、この行番号を無視しています。 #NAME 属性を使用せず、columns 属性でカラム名を指定する場合(他システムの 出力ファイルを読み取るケース等)では、行番号も存在しないケースがあり、 その様な場合に、useNumber="false" を指定すれば、データの最初から読み取り始めます。 この場合、出力データのカラムの並び順が変更された場合、columns 属性も 指定しなおす必要がありますので、できるだけ、#NAME 属性を使用するように してください。 なお、EXCEL 入力には、この設定は適用されません。(暫定対応) 初期値は、true(使用する) です。
      戻り値:
        行番号情報を、使用している(true)/していない(false)を指定
      変更履歴:

        3.7.0.5 (2005/04/11) 新規追加
        4.0.0.0 (2007/07/20) メソッド名変更(getUseNumber() ⇒ isUseNumber())

    - #### setMatchKeys

          public void setMatchKeys(String[] keys)

      取込み対象判定を行うカラムを配列で指定します。
      定義:
        `setMatchKeys` インタフェース内 `TableReader`
      パラメータ:
        `keys` - 判定対象カラム名配列
      変更履歴:

        5.9.8.1 (2016/05/13) 新規作成

    - #### setMatchVals

          public void setMatchVals(String[] vals)

      取込み対象判定の正規表現を配列で指定します。
      定義:
        `setMatchVals` インタフェース内 `TableReader`
      パラメータ:
        `vals` - 判定対象カラム名配列
      変更履歴:

        5.9.8.1 (2016/05/13) 新規作成

    - #### setDebug

          public void setDebug(boolean useDebug)

      デバッグ情報を出力するかどうかを指定します。 EXCELなどを読み取る場合、シートマージで読み取ると、エラー時の行番号が、連番になるため、 どのシートなのか、判らなくなります。 そこで、どうしてもわからなくなった場合に備えて、デバッグ情報を出力できるようにします。 通常は使用しませんので、設定を無視します。 初期値は、false:デバッグ情報を出力しない です。
      定義:
        `setDebug` インタフェース内 `TableReader`
      パラメータ:
        `useDebug` - デバッグ情報を出力するかどうかを指定
      変更履歴:

        5.5.7.2 (2012/10/09) 新規作成

    - #### isDebug

          protected boolean isDebug()

      デバッグ情報を出力するかどうかを取得します。 EXCELなどを読み取る場合、シートマージで読み取ると、エラー時の行番号が、連番になるため、 どのシートなのか、判らなくなります。 そこで、どうしてもわからなくなった場合に備えて、デバッグ情報を出力できるようにします。
      戻り値:
        デバッグ情報を出力するかどうか(true:する/false:しない)
      変更履歴:

        5.5.7.2 (2012/10/09) 新規作成

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.