org.opengion.hayabusa.db

## クラス AbstractQuery

- java.lang.Object
- - org.opengion.hayabusa.db.AbstractQuery

- すべての実装されたインタフェース:
    Query
  直系の既知のサブクラス:
    Query_JDBC, Query_JDBCArrayCallable, Query_JDBCCallable, Query_JDBCErrMsg, Query_JDBCKeyEntry, Query_JDBCPLSQL, Query_JDBCPrepared, Query_JDBCTableUpdate, Query_JDBCUpdate

      public class AbstractQuery
      extends java.lang.Object
      implements Query

       Query インターフェースを継承した Query の実装クラスです。
       クエリークラスにステートメントを与えて execute()することにより内部に DBTableModel を
       作成します。
       このクラスは、Abstract クラスのため、実装は個々のサブクラスで行います。
       唯一実装する必要があるのは, execute() メソッドだけです。

  機能分類
    ＤＢ検索, ＤＢ登録
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### フィールドのサマリー

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static java.lang.String` | `ARG_ARRAY` 内部オブジェクトタイプ名 "ARG_ARRAY"
    `protected static int` | `BUFFER_MIDDLE` StringBilderなどの初期値を設定します。
    `protected static java.lang.String` | `CR` システムの改行コードを設定します。
    `protected static int` | `DB_FETCH_SIZE` 6.9.3.0 (2018/03/26) データ検索時のフェッチサイズ 251
    `protected static int` | `DB_MAX_QUERY_TIMEOUT` データ検索時の最大処理制限時間
    `static java.lang.String` | `ERR_MSG` 内部オブジェクトタイプ名 "ERR_MSG"
    `static java.lang.String` | `ERR_MSG_ARRAY` 内部オブジェクトタイプ名 "ERR_MSG_ARRAY"
    `static java.lang.String` | `SYSARG_ARRAY` 内部オブジェクトタイプ名 "SYSARG_ARRAY"

  - ### コンストラクタのサマリー

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

  - ### メソッドのサマリー

    すべてのメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `protected void` | `createTableModel(java.sql.ResultSet resultSet)` ResultSet を DBTableModelに割り当てます。
    `void` | `execute(int[] rowNo, DBTableModel table)` 引数配列付のクエリーを実行します。
    `void` | `execute(java.lang.String[] args)` 引数配列付のクエリーを実行します。
    `void` | `execute(java.lang.String[] keys, java.lang.String[] args)` 引数配列付のクエリーを実行します。
    `void` | `execute(java.lang.String names, java.lang.String dbArrayType, DBSysArg[] sysArg, DBUserArg[] userArg)` 引数配列付のクエリーを実行します。
    `protected java.sql.Connection` | `getConnection()` ConnectionFactory.connection( String ); を利用して,Connection オブジェクトを取り出します。
    `DBTableModel` | `getDBTableModel()` 実行結果の DBTableModel を返します。
    `protected DBEditConfig` | `getEditConfig()` 編集設定オブジェクトを取得します。
    `int` | `getErrorCode()` エラーコード を取得します。
    `ErrorMessage` | `getErrorMessage()` エラーメッセージオブジェクト を取得します。
    `int` | `getExecuteCount()` クエリーの実行結果を返します。
    `int` | `getMaxRowCount()` データベースの最大検索件数を返します。
    `int` | `getSkipRowCount()` データベースの検索スキップ件数を返します。
    `java.lang.String` | `getStatement()` ステートメント文字列を取り出します。
    `boolean` | `isUpdate()` アップデートフラグを取得します。
    `void` | `setConnection(java.sql.Connection conn)` Connectionオブジェクトを外部から設定します。
    `protected void` | `setDBTableModel(DBTableModel table)` DBTableModel をセットします。
    `void` | `setEditConfig(DBEditConfig config)` 編集設定オブジェクトをセットします。
    `protected void` | `setErrorCode(int cd)` エラーコード をセットします。
    `protected void` | `setErrorMessage(ErrorMessage em)` エラーメッセージオブジェクト をセットします。
    `protected void` | `setExecuteCount(int executeCount)` クエリーの実行結果件数をセットします。
    `void` | `setMaxRowCount(int maxRowCount)` データベースの最大検索件数をセットします。
    `void` | `setResourceManager(ResourceManager resource)` リソースマネージャーをセットします。
    `void` | `setSkipRowCount(int skipRowCount)` データベースの検索スキップ件数をセットします。
    `void` | `setStatement(java.lang.String stmt)` ステートメント文字列をセットします。
    `protected void` | `setUpdateFlag(boolean up)` アップデートフラグをセットします。
    `java.lang.String` | `toString()` オブジェクトの識別子として，最後のクエリーを返します。
    `protected boolean` | `useParameterMetaData()` この接続が、PreparedStatement#getParameterMetaData() を使用するかどうかを判定します。

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

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

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

    - #### CR

          protected static final java.lang.String CR

      システムの改行コードを設定します。

    - #### BUFFER_MIDDLE

          protected static final int BUFFER_MIDDLE

      StringBilderなどの初期値を設定します。 200
      関連項目:
        定数フィールド値

    - #### DB_MAX_QUERY_TIMEOUT

          protected static final int DB_MAX_QUERY_TIMEOUT

      データ検索時の最大処理制限時間

    - #### DB_FETCH_SIZE

          protected static final int DB_FETCH_SIZE

      6.9.3.0 (2018/03/26) データ検索時のフェッチサイズ 251
      関連項目:
        定数フィールド値

    - #### ARG_ARRAY

          public static final java.lang.String ARG_ARRAY

      内部オブジェクトタイプ名 "ARG_ARRAY"
      関連項目:
        定数フィールド値

    - #### SYSARG_ARRAY

          public static final java.lang.String SYSARG_ARRAY

      内部オブジェクトタイプ名 "SYSARG_ARRAY"
      関連項目:
        定数フィールド値

    - #### ERR_MSG

          public static final java.lang.String ERR_MSG

      内部オブジェクトタイプ名 "ERR_MSG"
      関連項目:
        定数フィールド値

    - #### ERR_MSG_ARRAY

          public static final java.lang.String ERR_MSG_ARRAY

      内部オブジェクトタイプ名 "ERR_MSG_ARRAY"
      関連項目:
        定数フィールド値

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

    - #### AbstractQuery

          protected AbstractQuery()

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

  - ### メソッドの詳細

    - #### setConnection

          public void setConnection(java.sql.Connection conn)

      Connectionオブジェクトを外部から設定します。 通常は、Transaction と 接続先(DBID) を使用して作成した Connection を渡します。 このクラスでは、Connection の close() や、ConnectionFactory への返却なども 行いません。それらは、外部処理(通常は、Transactionオブジェクト)で行います。 Connection には、null は登録できません。
      定義:
        `setConnection` インタフェース内 `Query`
      パラメータ:
        `conn` - Connectionオブジェクト
      変更履歴:
        6.3.6.1 (2015/08/28) 新規追加

    - #### setStatement

          public void setStatement(java.lang.String stmt)

      ステートメント文字列をセットします。
      定義:
        `setStatement` インタフェース内 `Query`
      パラメータ:
        `stmt` - ステートメント文字列
      変更履歴:
        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

    - #### getStatement

          public java.lang.String getStatement()

      ステートメント文字列を取り出します。
      定義:
        `getStatement` インタフェース内 `Query`
      戻り値:
        ステートメント文字列

    - #### execute

          public void execute(java.lang.String[] args)

      引数配列付のクエリーを実行します。 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery や { call xxxx( ?,?,? ) } などの CallableStatement の ? 部分の引数を 順番にセットしていきます。 ※ このクラスでは実装されていません。
      定義:
        `execute` インタフェース内 `Query`
      パラメータ:
        `args` - オブジェクトの引数配列(可変長引数)
      変更履歴:
        6.1.1.0 (2015/01/17) 引数配列を可変引数にして、execute() を含めて定義します。

    - #### execute

          public void execute(java.lang.String[] keys,
                              java.lang.String[] args)

      引数配列付のクエリーを実行します。 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の ? 部分の引数を 順番にセットしていきます。 ※ このクラスでは実装されていません。
      定義:
        `execute` インタフェース内 `Query`
      パラメータ:
        `keys` - オブジェクトのキー配列
        `args` - オブジェクトの引数配列(可変長引数)
      変更履歴:
        4.0.0.0 (2005/01/31) 新規追加

    - #### execute

          public void execute(java.lang.String names,
                              java.lang.String dbArrayType,
                              DBSysArg[] sysArg,
                              DBUserArg[] userArg)

      引数配列付のクエリーを実行します。 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の ? 部分の引数を 順番にセットしていきます。 ※ このクラスでは実装されていません。
      定義:
        `execute` インタフェース内 `Query`
      パラメータ:
        `names` - カラム名(CSV形式)
        `dbArrayType` - アレイタイプ名称
        `sysArg` - DBSysArg配列
        `userArg` - DBUserArg配列
      変更履歴:
        4.0.0.0 (2005/01/31) 引数をすべて受け取って実行するメソッドを標準メソッドとして追加

    - #### execute

          public void execute(int[] rowNo,
                              DBTableModel table)

      引数配列付のクエリーを実行します。 処理自体は, #execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の [カラム名] 部分の引数を、DBTableModelから順番にセットしていきます。 ※ このクラスでは実装されていません。
      定義:
        `execute` インタフェース内 `Query`
      パラメータ:
        `rowNo` - 選択された行番号配列(登録する対象行)
        `table` - DBTableModelオブジェクト(登録する元データ)

    - #### setExecuteCount

          protected void setExecuteCount(int executeCount)

      クエリーの実行結果件数をセットします。 初期値は -1 です。(クエリーが失敗した場合や,CallableStatement の呼び出し等で 実行件数が明確でない場合の戻り値)。
      パラメータ:
        `executeCount` - 実行結果件数
      変更履歴:
        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

    - #### getExecuteCount

          public int getExecuteCount()

      クエリーの実行結果を返します。 クエリーが失敗した場合や,CallableStatement の呼び出し等で実行件数が明確でない 場合は, -1 が返されます。
      定義:
        `getExecuteCount` インタフェース内 `Query`
      戻り値:
        実行結果件数

    - #### setDBTableModel

          protected void setDBTableModel(DBTableModel table)

      DBTableModel をセットします。 なお、検索系実行前に setDBTableModel() でテーブルをセットしていたとしても そのオブジェクトは破棄されて、新しい DBTableModel が生成されます。
      パラメータ:
        `table` - DBTableModelオブジェクト
      変更履歴:
        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

    - #### getDBTableModel

          public DBTableModel getDBTableModel()

      実行結果の DBTableModel を返します。
      定義:
        `getDBTableModel` インタフェース内 `Query`
      戻り値:
        DBTableModelオブジェクト

    - #### getMaxRowCount

          public int getMaxRowCount()

      データベースの最大検索件数を返します。 (初期値:DB_MAX_ROW_COUNT[=1000])。 データベース自体の検索は,指定されたSQLの全件を検索しますが, DBTableModelのデータとして登録する最大件数をこの値に設定します。0は無制限です。 サーバーのメモリ資源と応答時間の確保の為です。
      定義:
        `getMaxRowCount` インタフェース内 `Query`
      戻り値:
        最大検索件数

    - #### setMaxRowCount

          public void setMaxRowCount(int maxRowCount)

      データベースの最大検索件数をセットします。 データベース自体の検索は,指定されたSQLの全件を検索しますが, DBTableModelのデータとして登録する最大件数をこの値に設定します。 サーバーのメモリ資源と応答時間の確保の為です。 ゼロ、または、負の値を設定すると、無制限(Integer.MAX_VALUE)になります。
      定義:
        `setMaxRowCount` インタフェース内 `Query`
      パラメータ:
        `maxRowCount` - 最大検索件数
      変更履歴:
        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 4.0.0.0 (2005/08/31) ゼロ、または、負の値は、無制限(Integer.MAX_VALUE)にする。

    - #### getSkipRowCount

          public int getSkipRowCount()

      データベースの検索スキップ件数を返します。 データベース自体の検索は,指定されたSQLの全件を検索しますが, DBTableModelのデータとしては、スキップ件数分は登録されません。 サーバーのメモリ資源と応答時間の確保の為です。
      定義:
        `getSkipRowCount` インタフェース内 `Query`
      戻り値:
        最大検索件数

    - #### setSkipRowCount

          public void setSkipRowCount(int skipRowCount)

      データベースの検索スキップ件数をセットします。 データベース自体の検索は,指定されたSQLの全件を検索しますが, DBTableModelのデータとしては、スキップ件数分は登録されません。 サーバーのメモリ資源と応答時間の確保の為です。
      定義:
        `setSkipRowCount` インタフェース内 `Query`
      パラメータ:
        `skipRowCount` - スキップ件数
      変更履歴:
        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

    - #### setUpdateFlag

          protected void setUpdateFlag(boolean up)

      アップデートフラグをセットします。 これは、Query で更新処理の SQL 文を実行したときにセットされます。 更新処理が実行：true / 検索処理のみ：false をセットします。 このメソッドを呼び出さない場合は、デフォルト：true です。
      パラメータ:
        `up` - アップデートされたかどうか[true:更新処理/false:検索処理]
      変更履歴:
        2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更, 3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。

    - #### isUpdate

          public boolean isUpdate()

      アップデートフラグを取得します。 これは、Query で更新処理の SQL 文を実行したときに true にセットされます。 更新処理が実行：true / 検索処理のみ：false を取得できます。
      定義:
        `isUpdate` インタフェース内 `Query`
      戻り値:
        アップデートされたかどうか[true:更新処理/false:検索処理]
      変更履歴:
        2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更, 4.0.0.0 (2007/07/20) メソッド名変更( getUpdateFlag() ⇒ isUpdate() )

    - #### setResourceManager

          public void setResourceManager(ResourceManager resource)

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

    - #### getErrorCode

          public int getErrorCode()

      エラーコード を取得します。 エラーコード は、ErrorMessage クラスで規定されているコードです。
      定義:
        `getErrorCode` インタフェース内 `Query`
      戻り値:
        エラーコード

    - #### setErrorCode

          protected void setErrorCode(int cd)

      エラーコード をセットします。 エラーコード は、ErrorMessage クラスで規定されているコードです。
      パラメータ:
        `cd` - エラーコード

    - #### getErrorMessage

          public ErrorMessage getErrorMessage()

      エラーメッセージオブジェクト を取得します。
      定義:
        `getErrorMessage` インタフェース内 `Query`
      戻り値:
        エラーメッセージオブジェクト

    - #### setErrorMessage

          protected void setErrorMessage(ErrorMessage em)

      エラーメッセージオブジェクト をセットします。
      パラメータ:
        `em` - エラーメッセージオブジェクト

    - #### setEditConfig

          public void setEditConfig(DBEditConfig config)

      編集設定オブジェクトをセットします。
      定義:
        `setEditConfig` インタフェース内 `Query`
      パラメータ:
        `config` - 編集設定オブジェクト
      変更履歴:
        5.3.6.0 (2011/06/01) 新規追加

    - #### getEditConfig

          protected DBEditConfig getEditConfig()

      編集設定オブジェクトを取得します。
      戻り値:
        編集設定オブジェクト
      変更履歴:
        5.3.6.0 (2011/06/01) 新規追加

    - #### createTableModel

          protected void createTableModel(java.sql.ResultSet resultSet)

      ResultSet を DBTableModelに割り当てます。 毎回,検索毎に,DBTableModel にコピーするイメージです。 ResulSet 以外のオブジェクトから，DBTableModelを作成する場合は, このメソッドをオーバーライドします。 このメソッドは， execute からのみ,呼び出されます。 それ以外からは呼出し出来ません。
      パラメータ:
        `resultSet` - ResultSetオブジェクト
      変更履歴:
        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 3.3.3.3 (2003/08/06) カラムのラベル名を、大文字に変換する。, 3.8.5.0 (2006/03/02) CLOB カラムかどうかを判定しCLOBの場合は、Clob オブジェクトから文字列を取り出します。, 3.8.8.8 (2007/05/11) ROWID対応(小数点対応 "0.3" が ".3" と表示される対策), 4.0.0.0 (2006/01/31) CLOB カラムかどうかを判定しCLOBの場合は、ストリームから値を取り出します。, 5.3.6.0 (2011/06/01) DBTableModel作成処理をDBTableModelUtilに移動＆集計機能対応, 6.3.6.1 (2015/08/28) close(),realClose() 廃止。Queryはキャッシュしません。

    - #### getConnection

          protected java.sql.Connection getConnection()

      ConnectionFactory.connection( String ); を利用して,Connection オブジェクトを取り出します。 コネクションプールが一杯の場合は、即エラーになります。
      戻り値:
        コネクション
      変更履歴:
        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定, 5.1.9.0 (2010/08/01) transaction 属性追加。, 6.3.6.1 (2015/08/28) transaction 属性廃止。内部のConnectionを返します。

    - #### useParameterMetaData

          protected boolean useParameterMetaData()

      この接続が、PreparedStatement#getParameterMetaData() を使用するかどうかを判定します。 ConnectionFactory#useParameterMetaData(String) の結果を返します。(postgreSQL対応) ※ 暫定処理です。もっと、良い方法を考える必要があります。
      戻り値:
        使用する場合：true / その他:false
      関連項目:
        `ConnectionFactory.useParameterMetaData(String)`
      変更履歴:
        5.3.8.0 (2011/08/01) 新規追加, 6.3.6.1 (2015/08/28) 内部変数にconnIDが無くなったため、直接所得することになりました。, 6.4.2.0 (2016/01/29) ex.printStackTrace() を、ThrowUtil#ogStackTrace(Throwable) に置き換え。

    - #### toString

          public java.lang.String toString()

      オブジェクトの識別子として，最後のクエリーを返します。
      オーバーライド:
        `toString` クラス内 `java.lang.Object`
      戻り値:
        最後のクエリー
      このメソッドは、nullを返しません

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