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 Object
      implements Query

  Query インターフェースを継承した Query の実装クラスです。 クエリークラスにステートメントを与えて execute()することにより内部に DBTableModel を 作成します。 このクラスは、Abstract クラスのため、実装は個々のサブクラスで行います。 唯一実装する必要があるのは, execute() メソッドだけです。
  機能分類
    ＤＢ検索, ＤＢ登録
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

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

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static String` | `ARG_ARRAY` 内部オブジェクトタイプ名 "ARG_ARRAY"
    `protected static int` | `DB_MAX_QUERY_TIMEOUT`
    `static String` | `ERR_MSG` 内部オブジェクトタイプ名 "ERR_MSG"
    `static String` | `ERR_MSG_ARRAY` 内部オブジェクトタイプ名 "ERR_MSG_ARRAY"
    `static String` | `SYSARG_ARRAY` 内部オブジェクトタイプ名 "SYSARG_ARRAY"

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

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

  - ### メソッドの概要

    メソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `void` | `close()` 使用した Statementオブジェクトをクロースし、Connection オブジェクトを プールに返します。
    `void` | `commit()` コミットを行います。
    `protected void` | `createTableModel(ResultSet resultSet)` ResultSet を DBTableModelに割り当てます。
    `void` | `execute()` クエリーを実行します。
    `void` | `execute(int[] rowNo, DBTableModel table)` 引数配列付のクエリーを実行します。
    `void` | `execute(String[] args)` 引数配列付のクエリーを実行します。
    `void` | `execute(String[] keys, String[] args)` 引数配列付のクエリーを実行します。
    `void` | `execute(String names, String dbArrayType, DBSysArg[] sysArg, DBUserArg[] userArg)` 引数配列付のクエリーを実行します。
    `protected Connection` | `getConnection()` ConnectionFactory.connection( String ); を利用して,Connection オブジェクトを取り出します。
    `DBTableModel` | `getDBTableModel()` 実行結果の DBTableModel を返します。
    `protected DBEditConfig` | `getEditConfig()` エディット設定オブジェクトを取得します。
    `int` | `getErrorCode()` エラーコード を取得します。
    `ErrorMessage` | `getErrorMessage()` エラーメッセージオブジェクト を取得します。
    `int` | `getExecuteCount()` クエリーの実行結果を返します。
    `int` | `getMaxRowCount()` データベースの最大検索件数を返します。
    `int` | `getSkipRowCount()` データベースの検索スキップ件数を返します。
    `String` | `getStatement()` ステートメント文字列を取り出します。
    `void` | `init()` Queryオブジェクトを初期化します。
    `boolean` | `isUpdate()` アップデートフラグを取得します。
    `void` | `realClose()` Connection オブジェクトを実際にクローズ(破棄)します。
    `void` | `rollback()` ロールバックを行います。
    `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(String stmt)` ステートメント文字列をセットします。
    `void` | `setTransaction(String connID, Transaction tran)` Transactionオブジェクトを外部から設定します。
    `protected void` | `setUpdateFlag(boolean up)` アップデートフラグをセットします。
    `String` | `toString()` オブジェクトの識別子として，最後のクエリーを返します。
    `protected boolean` | `useParameterMetaData()` この接続が、PreparedStatement#getParameterMetaData() を使用するかどうかを判定します。

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

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

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

    - #### DB_MAX_QUERY_TIMEOUT

          protected static final int DB_MAX_QUERY_TIMEOUT

    - #### ARG_ARRAY

          public static final String ARG_ARRAY

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

    - #### SYSARG_ARRAY

          public static final String SYSARG_ARRAY

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

    - #### ERR_MSG

          public static final String ERR_MSG

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

    - #### ERR_MSG_ARRAY

          public static final String ERR_MSG_ARRAY

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

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

    - #### AbstractQuery

          public AbstractQuery()

  - ### メソッドの詳細

    - #### init

          public void init()

      Queryオブジェクトを初期化します。 これは、QueryFactory のプールから取り出すときに(または戻すとき)に 初期化するのに使用します。
      定義:
        `init` インタフェース内 `Query`
      変更履歴:

        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
        3.8.7.0 (2006/12/15) アクセスログ取得の為,ApplicationInfoオブジェクトを設定
        5.1.9.0 (2010/08/01) transaction 属性(外部Transactionの使用)追加
        5.3.6.0 (2011/06/01) DBEditConfig 追加

    - #### setStatement

          public void setStatement(String stmt)

      ステートメント文字列をセットします。
      定義:
        `setStatement` インタフェース内 `Query`
      パラメータ:
        `stmt` - ステートメント文字列
      変更履歴:

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

    - #### getStatement

          public String getStatement()

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

    - #### execute

          public void execute()

      クエリーを実行します。 実行方法等は各サブクラスの実装に依存します。 セットされているステートメント文字列とそのタイプが合っていない場合は, エラーになります。 実行結果は、DBTableModel にセットされます。 実行結果の件数は #getExecuteCount() で取得できます。 ※ このクラスでは実装されていません。
      定義:
        `execute` インタフェース内 `Query`
      変更履歴:

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

    - #### execute

          public void execute(String[] args)

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

    - #### execute

          public void execute(String[] keys,
                     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(String names,
                     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オブジェクト(登録する元データ)

    - #### commit

          public void commit()

      コミットを行います。 外部からコネクションが与えられた場合は、何も行いません。
      定義:
        `commit` インタフェース内 `Query`
      変更履歴:

        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
        3.8.0.8 (2005/10/03) エラーメッセージの出力順をメッセージ＋Queryに変更します。
        5.1.9.0 (2010/08/01) transaction 属性追加。

    - #### rollback

          public void rollback()

      ロールバックを行います。 外部からコネクションが与えられた場合は、何も行いません。
      定義:
        `rollback` インタフェース内 `Query`
      変更履歴:

        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
        3.8.0.8 (2005/10/03) エラーメッセージの出力順をメッセージ＋Queryに変更します。
        5.1.9.0 (2010/08/01) transaction 属性追加。

    - #### close

          public void close()

      使用した Statementオブジェクトをクロースし、Connection オブジェクトを プールに返します。 主に、正常終了した場合のクローズ処理になります。 外部からコネクションが与えられた場合は、何も行いません。
      定義:
        `close` インタフェース内 `Query`
      変更履歴:

        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
        3.6.0.4 (2004/10/14) SQLWarning の取得(getWarning)をコメントアウトします。
        5.1.9.0 (2010/08/01) transaction 属性追加。
        5.3.8.0 (2011/08/01) Transaction発生箇所でclose()するため、ここではclose() しない。

    - #### realClose

          public void realClose()

      Connection オブジェクトを実際にクローズ(破棄)します。 プールからも削除します。 実行時エラー等が発生したときに、このメソッドを呼び出します。 外部からコネクションが与えられた場合は、何も行いません。
      定義:
        `realClose` インタフェース内 `Query`
      変更履歴:

        3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
        5.1.9.0 (2010/08/01) transaction 属性追加。
        5.3.8.0 (2011/08/01) Transaction発生箇所でclose()するため、ここではclose() しない。

    - #### 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(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に移動＆集計機能対応

    - #### getConnection

          protected 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 属性追加。

    - #### setTransaction

          public void setTransaction(String connID,
                            Transaction tran)

      Transactionオブジェクトを外部から設定します。 通常は、ConnectionFactory を使用して、内部で Connection を作成しますが、 一連のトランザクション処理を実施するには、外部から Transactionオブジェクトを を与えて、そこから、Connection を取り出す必要があります。 ここでは、内部の connection が存在しない場合に限り、セットを許可します。
      定義:
        `setTransaction` インタフェース内 `Query`
      パラメータ:
        `connID` - 接続先ID
        `tran` - Transactionオブジェクト
      変更履歴:

        5.1.9.0 (2010/08/01) 新規追加

    - #### useParameterMetaData

          protected boolean useParameterMetaData()

      この接続が、PreparedStatement#getParameterMetaData() を使用するかどうかを判定します。 ConnectionFactory#useParameterMetaData(String) の結果を返します。(postgreSQL対応)
      戻り値:
        使用する場合：true / その他:false
      関連項目:
        `ConnectionFactory.useParameterMetaData(String)`
      変更履歴:

        5.3.8.0 (2011/08/01) 新規追加

    - #### toString

          public String toString()

      オブジェクトの識別子として，最後のクエリーを返します。
      オーバーライド:
        `toString` クラス内 `Object`
      戻り値:
        最後のクエリー

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