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

## クラス ExcelLayout

- java.lang.Object
- - org.opengion.hayabusa.report.ExcelLayout

-     public class ExcelLayout
      extends java.lang.Object

  【EXCEL取込】雛形EXCELシートの {@カラム} 解析データを管理、収集する 雛形レイアウト管理クラスです。 POIのHSSFListener などで、雛形情報を収集し、HSSFSheet などで、雛形情報のアドレス(行列)から 必要な情報を取得し、このオブジェクトに設定しておきます。 EXCELシート毎に、INSERT文と、対応する文字列配列を取り出します。
  機能分類
    帳票システム
  変更履歴:
    3.8.0.0 (2005/06/07) 新規追加
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

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

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `ExcelLayout​(int sheetSize)` | コンストラクター 雛形の最大シート数を設定します。

  - ### メソッドの概要

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `void` | `addData​(java.lang.String clm, int edbn, java.lang.String value)` | 解析情報(clm,edbn)と関連付けて、データEXCELの値を設定します。
    `void` | `addModel​(int sheetNo, java.lang.String key, int rowNo, short colNo)` | 雛形EXCELの {@カラム} 解析情報を設定します。
    `void` | `dataClear()` | データEXCELの設定情報を初期化します。
    `java.util.List<java.lang.String[]>` | `getBodyInsertData​(java.lang.String systemId, int ykno, int sheetNo)` | ボディ(明細)情報のINSERT用Queryに対応する、データ配列のリスト(String[] のList)を取得します。
    `java.lang.String` | `getBodyInsertQuery​(java.lang.String table)` | ボディ(明細)情報のINSERT用Query文字列を取得します。
    `java.lang.String[]` | `getHeaderInsertData​(java.lang.String systemId, int ykno, int sheetNo)` | ヘッダー情報のINSERT用Queryに対応する、データ配列を取得します。
    `java.lang.String` | `getHeaderInsertQuery​(java.lang.String table)` | ヘッダー情報のINSERT用Query文字列を取得します。
    `java.util.Iterator<ExcelLayoutData>` | `getLayoutDataIterator​(int sheetNo, java.lang.String loopClm)` | 雛形EXCELの {@カラム} 解析情報(ExcelLayoutData)を配列で取得します。

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

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

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

    - #### ExcelLayout

          public ExcelLayout​(int sheetSize)

      コンストラクター 雛形の最大シート数を設定します。 ここでは、連番で管理している為、その雛形シート番号が処理対象外であっても、 雛形EXCEL上に存在するシート数を設定する必要があります。 具体的には、HSSFListener#processRecord( Record )で、BoundSheetRecord.sid の イベントの数を数えて設定します。
      パラメータ:
        `sheetSize` - 最大シート数

  - ### メソッドの詳細

    - #### addModel

          public void addModel​(int sheetNo,
                               java.lang.String key,
                               int rowNo,
                               short colNo)

      雛形EXCELの {@カラム} 解析情報を設定します。 雛形EXCELは、HSSFListener を使用して、イベント駆動で取得します。その場合、 {@カラム}を含むセルを見つける都度、このメソッドを呼び出して、{@カラム}の 位置(行列番号)を設定します。 データEXCELからデータを読み出す場合は、ここで登録したカラムの行列より、読み込みます。 具体的には、HSSFListener#processRecord( Record )で、SSTRecord.sid の 情報をキープしておき、 LabelSSTRecord.sid 毎に、{@カラム}を含むかチェックし、含む場合に、このメソッドに 解析情報を設定します。
      パラメータ:
        `sheetNo` - シート番号
        `key` - 処理カラム
        `rowNo` - 行番号
        `colNo` - 列番号

    - #### getLayoutDataIterator

          public java.util.Iterator<ExcelLayoutData> getLayoutDataIterator​(int sheetNo,
                                                                           java.lang.String loopClm)

      雛形EXCELの {@カラム} 解析情報(ExcelLayoutData)を配列で取得します。 雛形EXCELは、イベント処理で取り込む為、すべての処理が終了してから、このメソッドで 処理結果を取り出す必要があります。 解析情報は、ExcelLayoutData オブジェクトにシート単位に保管されています。 この ExcelLayoutData オブジェクト ひとつに、{@カラム} ひとつ、つまり、 ある特定の行列番号を持っています。 データEXCELを読取る場合、この ExcelLayoutData配列から、行列情報を取り出し、 addData メソッドで、キー情報と関連付けて登録する為に、使用します。
      パラメータ:
        `sheetNo` - シート番号
        `loopClm` - 繰返必須カラム(なければ通常の１対１処理)
      戻り値:
        ExcelLayoutData配列

    - #### addData

          public void addData​(java.lang.String clm,
                              int edbn,
                              java.lang.String value)

      解析情報(clm,edbn)と関連付けて、データEXCELの値を設定します。 データEXCELは、雛形EXCELの解析情報を元に、行列番号から設定値を取り出します。 その設定値は、取りだした ExcelLayoutData の clm,edbn と関連付けて、このメソッドで登録します。 この処理は、シート毎に、初期化して使う必要があります。 初期化メソッドする場合は、dataClear() を呼び出してください。
      パラメータ:
        `clm` - カラム名
        `edbn` - 枝番
        `value` - データ値
      変更履歴:
        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)

    - #### dataClear

          public void dataClear()

      データEXCELの設定情報を初期化します。 データEXCELと、雛形EXCELの解析情報を関連付ける処理は、シート毎に行う必要があります。 処理終了時(シート切り替え時)このメソッドを呼び出して、初期化しておく必要があります

    - #### getHeaderInsertQuery

          public java.lang.String getHeaderInsertQuery​(java.lang.String table)

      ヘッダー情報のINSERT用Query文字列を取得します。 シート単位に、データEXCELより、INSERT用のQuery文字列を作成します。 この、Query は、シート単位に登録したキー情報の最大数(使用されているすべてのキー)を 元に、PreparedStatement で処理できる形の INSERT文を作成します。 シート単位に呼び出す必要があります。
      パラメータ:
        `table` - ヘッダー情報を登録するデータベース名(HEADERDBID)
      戻り値:
        ヘッダー情報のINSERT用Query文字列

    - #### getBodyInsertQuery

          public java.lang.String getBodyInsertQuery​(java.lang.String table)

      ボディ(明細)情報のINSERT用Query文字列を取得します。 シート単位に、データEXCELより、INSERT用のQuery文字列を作成します。 この、Query は、シート単位に登録したキー情報の最大数(使用されているすべてのキー)を 元に、PreparedStatement で処理できる形の INSERT文を作成します。 シート単位に呼び出す必要があります。
      パラメータ:
        `table` - ボディ(明細)情報を登録するデータベース名(BODYDBID)
      戻り値:
        ボディ(明細)情報のINSERT用Query文字列

    - #### getHeaderInsertData

          public java.lang.String[] getHeaderInsertData​(java.lang.String systemId,
                                                        int ykno,
                                                        int sheetNo)

      ヘッダー情報のINSERT用Queryに対応する、データ配列を取得します。 getHeaderInsertQuery( String ) で取りだした PreparedStatement に設定する値配列です。 シート単位に呼び出す必要があります。
      パラメータ:
        `systemId` - システムID(SYSTEM_ID)
        `ykno` - 要求番号(YKNO)
        `sheetNo` - 登録するデータEXCELのシート番号(SHEETNO)
      戻り値:
        データ配列
      このメソッドは、nullを返しません

    - #### getBodyInsertData

          public java.util.List<java.lang.String[]> getBodyInsertData​(java.lang.String systemId,
                                                                      int ykno,
                                                                      int sheetNo)

      ボディ(明細)情報のINSERT用Queryに対応する、データ配列のリスト(String[] のList)を取得します。 getHeaderInsertQuery( String ) で取りだした PreparedStatement に設定する値配列です。 シート単位に呼び出す必要があります。
      パラメータ:
        `systemId` - システムID(SYSTEM_ID)
        `ykno` - 要求番号(YKNO)
        `sheetNo` - 登録するデータEXCELのシート番号(SHEETNO)
      戻り値:
        データ配列のリスト