パッケージ org.opengion.hayabusa.io

## クラス AbstractTableReader

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

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

      public abstract class AbstractTableReader
      extends Object
      implements TableReader

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

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

    フィールド
    修飾子とタイプ | フィールド | 説明
    --- | --- | ---
    `protected String` | `columns` | カラム名
    `protected String` | `constAdrs` | 固定値となるアドレス
    `protected String` | `constKeys` | カラム名(CSV形式)
    `protected String` | `nullBreakClm` | BREAK条件
    `protected String` | `nullSkipClm` | 行読み飛ばし
    `protected String` | `separator` | 区切り文字列
    `protected String` | `sheetName` | シート名
    `protected String` | `sheetNos` | シート番号

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

      `TAB_SEPARATOR`

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

    コンストラクタ
    修飾子 | コンストラクタ | 説明
    --- | --- | ---
    `protected` | `AbstractTableReader()` | デフォルトコンストラクター

  - ### メソッドの概要

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `int` | `getSkipRowCount()` | データの読み始めの初期値を取得します。
    `protected boolean` | `isDebug()` | デバッグ情報を出力するかどうか[true:する/false:しない]を取得します。
    `protected boolean` | `isUseNumber()` | 行番号情報を、使用している(true)/していない(false)を返します。
    `void` | `setColumnActionListener​(ColumnActionListener listener)` | ColumnActionListenerオブジェクトを設定します。
    `void` | `setColumns​(String clms)` | 読み取り元ファイルのカラム列を、外部(タグ)より指定します。
    `void` | `setDebug​(boolean useDebug)` | デバッグ情報を出力するかどうか[true:する/false:しない]を指定します。
    `void` | `setNullBreakClm​(String clm)` | ここに指定されたカラム列に NULL が現れた時点で読み取りを中止します。
    `void` | `setNullSkipClm​(String clm)` | ここに指定されたカラム列に NULL が現れたレコードは読み飛ばします。
    `protected void` | `setOriginalNames​(String[] names)` | #NAME のオリジナルカラム名配列がそろった段階で、イベントが発生します。
    `void` | `setSeparator​(String sep)` | データを読み込む場合の,区切り文字をセットします。
    `void` | `setSheetConstData​(String constKeys, String constAdrs)` | 固定値となるカラム名(CSV形式)と、constAdrs 固定値となるアドレス(行-列,行-列,・・・)を設定します。
    `void` | `setSheetName​(String sheetName)` | DBTableModelのデータとしてEXCELファイルを読み込むときのシート名を設定します。
    `void` | `setSheetNos​(String sheetNos)` | EXCELファイルを読み込むときのシート番号を指定します(初期値:0)。
    `void` | `setSkipRowCount​(int count)` | データの読み飛ばし件数を設定します。
    `protected void` | `setTableColumnValues​(String[] values, int rowNo)` | DBTableModelオブジェクトに、１行分のデータを追加します。
    `protected int` | `setTableDBColumn​(String[] names)` | DBColumn オブジェクトをDBTable に設定します。
    `void` | `setUseNumber​(boolean useNumber)` | 行番号情報を指定[true:使用している/false:していない]します(初期値:true)。
    `protected void` | `shtName​(String sheetName)` | 新しくEXCELのシートを処理する際に、シート名をセットするときに呼び出されます。

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

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

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

      `readDBTable`

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

    - #### separator

          protected String separator

      区切り文字列

    - #### columns

          protected String columns

      カラム名

    - #### sheetName

          protected String sheetName

      シート名

    - #### sheetNos

          protected String sheetNos

      シート番号

    - #### constKeys

          protected String constKeys

      カラム名(CSV形式)

    - #### constAdrs

          protected String constAdrs

      固定値となるアドレス

    - #### nullBreakClm

          protected String nullBreakClm

      BREAK条件

    - #### nullSkipClm

          protected String nullSkipClm

      行読み飛ばし

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

    - #### AbstractTableReader

          protected AbstractTableReader()

      デフォルトコンストラクター
      変更履歴:
        6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.

  - ### メソッドの詳細

    - #### setTableDBColumn

          protected int setTableDBColumn​(String[] names)

      DBColumn オブジェクトをDBTable に設定します。 ここでは、omitNames 属性を加味した、カラム名を作成します。 その際、ゼロ文字列のカラム名は、omit します。 戻り値は、新しいカラム数(omitNames を加味、ゼロ文字列のカラムも除去)です。 ※ 6.1.0.0 (2014/12/26) で、omitNames 属性を追加します。 これに伴い、従来は、EXCELのみ、#NAME で、ゼロ文字列のカラム名や columns 指定で、a,b,,,,,,x のようなカラム名指定で、カラム飛ばしを 実装していましたが、その他の Reader でも、対応します。 これは、互換性に影響しますので、ご注意ください。 (読み込んでも、カラム名が無いので、使えなかったと思いますけど…)
      パラメータ:
        `names` - カラム名配列
      戻り値:
        新しいカラム数(omitNames を加味、ゼロ文字列のカラムも除去)
      変更履歴:
        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対応(コードリソース毎のラベル逆引き), 6.1.0.0 (2014/12/26) omitNames 属性を追加, 6.2.1.0 (2015/03/13) ロングラベルから、コード値を見つける機能を、廃止します。, 6.2.2.0 (2015/03/27) ColumnActionListener 対応。, 6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)

    - #### setOriginalNames

          protected void setOriginalNames​(String[] names)

      #NAME のオリジナルカラム名配列がそろった段階で、イベントが発生します。
      パラメータ:
        `names` - カラム名配列
      変更履歴:
        7.3.1.3 (2021/03/09) #NAMEのオリジナルを取得できるようにします。

    - #### setTableColumnValues

          protected void setTableColumnValues​(String[] values,
                                              int rowNo)

      DBTableModelオブジェクトに、１行分のデータを追加します。 これ自体は、メソッドの共通化による 拡張をしやすくするために用意しました。
      パラメータ:
        `values` - １行分のデータ配列
        `rowNo` - 行番号
      変更履歴:
        5.2.1.0 (2010/10/01) 新規作成, 6.2.0.0 (2015/02/27) コードリソースの逆引き処理の前に、Key:Val 分解を実行する。, 6.2.1.0 (2015/03/13) ロングラベルから、コード値を見つける機能を、廃止します。, 6.2.2.0 (2015/03/27) ColumnActionListener 対応。, 6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)

    - #### shtName

          protected void shtName​(String sheetName)

      新しくEXCELのシートを処理する際に、シート名をセットするときに呼び出されます。 EXCEL関係の処理の場合のみ呼び出されます。
      パラメータ:
        `sheetName` - 現在実行中のシート名
      変更履歴:
        7.3.1.1 (2021/02/25) 現在実行中のシート名をセットする

    - #### setSeparator

          public void setSeparator​(String sep)

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

    - #### 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) 新規追加, 6.2.0.0 (2015/02/27) TableReader クラスの呼び出し元メソッドの共通化(EXCEL,TEXT)

    - #### setSheetNos

          public void setSheetNos​(String sheetNos)

      EXCELファイルを読み込むときのシート番号を指定します(初期値:0)。 EXCEL読み込み時に複数シートをマージして取り込みます。 シート番号は、0 から始まる数字で表します。 ヘッダーは、最初のシートのカラム位置に合わせます。（ヘッダータイトルの自動認識はありません。） よって、指定するシートは、すべて同一レイアウトでないと取り込み時にカラムのずれが発生します。 シート番号の指定は、CSV形式で、複数指定できます。また、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) 新規追加, 6.2.0.0 (2015/02/27) TableReader クラスの呼び出し元メソッドの共通化(EXCEL,TEXT)

    - #### setSheetConstData

          public void setSheetConstData​(String constKeys,
                                        String constAdrs)

      固定値となるカラム名(CSV形式)と、constAdrs 固定値となるアドレス(行-列,行-列,・・・)を設定します。 アドレスは、EXCEL上の行-列をCSV形式で指定します。 行列は、EXCELオブジェクトに準拠するため、０から始まる整数です。 0-0 ⇒ A1 , 1-0 ⇒ A2 , 0-1 ⇒ B1 になります。 これにより、シートの一か所に書かれている情報を、DBTableModel のカラムに固定値として 設定することができます。 例として、DB定義書で、テーブル名をシートの全レコードに設定したい場合などに使います。 このメソッドは、isExcel() == true の場合のみ利用されます。 5.7.6.3 (2014/05/23) より、 ①EXCEL表記に準拠した、A1,A2,B1 の記述も処理できるように対応します。 なお、A1,A2,B1 の記述は、必ず、英字1文字＋数字 にしてください。(A～Zまで) ②処理中のEXCELシート名をカラムに割り当てるために、"SHEET" という記号に対応します。 例えば、sheetConstKeys="CLM,LANG,NAME" とし、sheetConstAdrs="0-0,A2,SHEET" とすると、 NAMEカラムには、シート名を読み込むことができます。 これは、内部処理の簡素化のためです。 例として、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) 新規追加, 6.2.0.0 (2015/02/27) TableReader クラスの呼び出し元メソッドの共通化(EXCEL,TEXT)

    - #### setNullSkipClm

          public void setNullSkipClm​(String clm)

      ここに指定されたカラム列に NULL が現れたレコードは読み飛ばします。 例えば、更新対象カラムで、null の場合は、何もしない、などのケースで使用できます。 複数カラムの場合は、AND条件やOR条件などが、考えられるため、 カラムを一つにまとめて、指定してください。
      定義:
        `setNullSkipClm` インタフェース内 `TableReader`
      パラメータ:
        `clm` - カラム列
      変更履歴:
        6.2.3.0 (2015/05/01) 行読み飛ばし nullSkipClm追加

    - #### setColumns

          public void setColumns​(String clms)

      読み取り元ファイルのカラム列を、外部(タグ)より指定します。 ファイルに記述された #NAME より優先して使用されます。
      定義:
        `setColumns` インタフェース内 `TableReader`
      パラメータ:
        `clms` - 読み取り元ファイルのカラム列(CSV形式)
      変更履歴:
        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) 新規作成

    - #### 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())

    - #### setColumnActionListener

          public void setColumnActionListener​(ColumnActionListener listener)

      ColumnActionListenerオブジェクトを設定します。 ColumnActionListenerオブジェクトは、カラム名配列設定時と、それに対応する値配列設定時に 呼ばれるイベントリスナーです。 具体的なテーブル処理は、このイベントを使用して書き込みを行います。
      定義:
        `setColumnActionListener` インタフェース内 `TableReader`
      パラメータ:
        `listener` - ColumnActionListenerオブジェクト
      変更履歴:
        6.2.2.0 (2015/03/27) 新規作成

    - #### setDebug

          public void setDebug​(boolean useDebug)

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

    - #### isDebug

          protected boolean isDebug()

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