パッケージ 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
指定の区切り記号(初期値:タブ区切り)ファイルの読み取りクラスです。 名前、データの入力部のみオーバーライドすれば、各種入力フォーマットに合わせた サブクラスを実現する事が可能です。
機能分類
ファイル入力
導入されたバージョン:
JDK5.0,
  • フィールドの概要

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

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

    TAB_SEPARATOR
  • コンストラクタの概要

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    デフォルトコンストラクター
  • メソッドの概要

    修飾子とタイプ
    メソッド
    説明
    int
    データの読み始めの初期値を取得します。
    protected boolean
    デバッグ情報を出力するかどうか[true:する/false:しない]を取得します。
    protected boolean
    行番号情報を、使用している(true)/していない(false)を返します。
    void
    ColumnActionListenerオブジェクトを設定します。
    void
    読み取り元ファイルのカラム列を、外部(タグ)より指定します。
    void
    setDebug(boolean useDebug)
    デバッグ情報を出力するかどうか[true:する/false:しない]を指定します。
    void
    ここに指定されたカラム列に NULL が現れた時点で読み取りを中止します。
    void
    ここに指定されたカラム列に NULL が現れたレコードは読み飛ばします。
    protected void
    #NAME のオリジナルカラム名配列がそろった段階で、イベントが発生します。
    void
    データを読み込む場合の区切り文字をセットします。
    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オブジェクトに、1行分のデータを追加します。
    protected void
    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
  • フィールド詳細

  • コンストラクタの詳細

    • AbstractTableReader

      protected AbstractTableReader()
      デフォルトコンストラクター
      変更履歴:
      6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
  • メソッドの詳細

    • setTableDBColumn

      protected void setTableDBColumn(String[] names)
      DBColumn オブジェクトをDBTable に設定します。 ここでは、omitNames 属性を加味した、カラム名を作成します。 その際、ゼロ文字列のカラム名は、omit します。 戻り値は、新しいカラム数(omitNames を加味、ゼロ文字列のカラムも除去)です。 ※ 6.1.0.0 (2014/12/26) で、omitNames 属性を追加します。 これに伴い、従来は、EXCELのみ、#NAME で、ゼロ文字列のカラム名や columns 指定で、a,b,,,,,,x のようなカラム名指定で、カラム飛ばしを 実装していましたが、その他の Reader でも、対応します。 これは、互換性に影響しますので、ご注意ください。 (読み込んでも、カラム名が無いので、使えなかったと思いますけど…)
      パラメータ:
      names - カラム名配列 // * @return 新しいカラム数(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), 8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
    • setOriginalNames

      protected void setOriginalNames(String[] names)
      #NAME のオリジナルカラム名配列がそろった段階で、イベントが発生します。
      パラメータ:
      names - カラム名配列
      変更履歴:
      7.3.1.3 (2021/03/09) #NAMEのオリジナルを取得できるようにします。, 8.0.0.0 (2021/08/20) spotbugs:Bug kind and pattern: UwF - UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR
    • setTableColumnValues

      protected void setTableColumnValues(String[] values, int rowNo)
      DBTableModelオブジェクトに、1行分のデータを追加します。 これ自体は、メソッドの共通化による 拡張をしやすくするために用意しました。
      パラメータ:
      values - 1行分のデータ配列
      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 - シート名
      関連項目:
      変更履歴:
      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から始まる)
      関連項目:
      変更履歴:
      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-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等のデータの読み始めの初期値を指定します。 ファイルの先頭行が、0行としてカウントしますので、設定値は、読み飛ばす 件数になります。(1と指定すると、1件読み飛ばし、2行目から読み込みます。) 読み飛ばしは、コメント行などは、無視しますので、実際の行数分読み飛ばします。 #NAME属性や、columns 属性は、有効です。
      戻り値:
      読み始めの初期値
      変更履歴:
      5.1.6.0 (2010/05/01) 新規作成
    • setSkipRowCount

      public void setSkipRowCount(int count)
      データの読み飛ばし件数を設定します。 TAB区切りテキストやEXCEL等のデータの読み始めの初期値を指定します。 ファイルの先頭行が、0行としてカウントしますので、設定値は、読み飛ばす 件数になります。(1と指定すると、1件読み飛ばし、2行目から読み込みます。) 読み飛ばしは、コメント行などは、無視しますので、実際の行数分読み飛ばします。 #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

      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) 新規作成