パッケージ org.opengion.fukurou.db

## 列挙型 DBFunctionName

- java.lang.Object
- - java.lang.Enum<DBFunctionName>
  - - org.opengion.fukurou.db.DBFunctionName

- すべての実装されたインタフェース:
    `Serializable`, `Comparable<DBFunctionName>`

      public enum DBFunctionName
      extends Enum<DBFunctionName>

  各データベースに対応するenum名を返します。 主に、各データベースにおける関数名の差異を吸収するためのenumです。 本来は、互換性のあるファンクション以外、使用しないようにしましょう。 また、無ければ互換性パックなどで、ファンクションを定義してしまうのも 一つの方法です。

  各データベースにおける関数
  データベース名 | 連結 | 部分文字列 | 日付関数
  --- | --- | --- | ---
  {@DBF.XXX} | CON | SUBSTR | SYSDATE
  ORACLE | || | SUBSTR | SYSDATE
  HSQL | || | SUBSTR | CURRENT_TIMESTAMP
  POSTGRES | || | SUBSTR | CURRENT_DATE
  MYSQL | || | SUBSTR | now()
  SQLSERVER | + | SUBSTRING | GETDATE()
  FIREBIRD | || | SUBSTR | CURRENT_DATE
  DERBY | || | SUBSTR | CURRENT_TIMESTAMP
  CACHE | || | SUBSTRING | SYSDATE
  H2 | || | SUBSTR | SYSDATE
  OTHER | || | SUBSTR | SYSDATE

  ※ MySQLでは、通常文字列連結は、CONCAT関数を使います。パイプ(||)で結合するには、 SET sql_mode='PIPES_AS_CONCAT' しておく必要があります。 JDBCで設定する場合は、jdbc:mysql://《サーバー》/《DB名》?sessionVariables=sql_mode='PIPES_AS_CONCAT' と指定します。
  変更履歴:
    5.1.4.0 (2010/03/01) 新規作成, 5.8.5.0 (2015/03/06) CACHE追加
  バージョン
    5.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### 列挙型定数の概要

    列挙定数
    列挙型定数 | 説明
    --- | ---
    `CACHE` | ファンクション名
    `DERBY` | ファンクション名
    `FIREBIRD` | ファンクション名
    `H2` | ファンクション名
    `HSQL` | ファンクション名
    `MYSQL` | ファンクション名
    `ORACLE` | ファンクション名
    `OTHER` | ファンクション名
    `POSTGRES` | ファンクション名
    `SQLSERVER` | ファンクション名

  - ### メソッドの概要

    すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `static DBFunctionName` | `getDBName​(String dbName)` | 各データベースに対応するenum名を返します。
    `String` | `getFunctionName​(String func)` | 共通ファンクションに対応するデータベース個別のファンクション名を返します。
    `static String` | `getFunctionName​(String func, String dbid)` | 各データベースに対応するファンクション名を返します。
    `int` | `getSequence​(String seqName, Transaction tran)` | シーケンス名よりシーケンスオブジェクトを検索し、次の値を取り出します。
    `int` | `getSequence​(String seqName, Transaction tran, String DBID)` | シーケンス名よりシーケンスオブジェクトを検索し、次の値を取り出します。
    `static DBFunctionName` | `valueOf​(String name)` | 指定した名前を持つこの型の列挙型定数を返します。
    `static DBFunctionName[]` | `values()` | この列挙型の定数を含む配列を宣言されている順序で返します。

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

      `clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

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

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### 列挙型定数の詳細

    - #### ORACLE

          public static final DBFunctionName ORACLE

      ファンクション名

    - #### HSQL

          public static final DBFunctionName HSQL

      ファンクション名

    - #### POSTGRES

          public static final DBFunctionName POSTGRES

      ファンクション名

    - #### MYSQL

          public static final DBFunctionName MYSQL

      ファンクション名

    - #### SQLSERVER

          public static final DBFunctionName SQLSERVER

      ファンクション名

    - #### FIREBIRD

          public static final DBFunctionName FIREBIRD

      ファンクション名

    - #### DERBY

          public static final DBFunctionName DERBY

      ファンクション名

    - #### CACHE

          public static final DBFunctionName CACHE

      ファンクション名

    - #### H2

          public static final DBFunctionName H2

      ファンクション名

    - #### OTHER

          public static final DBFunctionName OTHER

      ファンクション名

  - ### メソッドの詳細

    - #### values

          public static DBFunctionName[] values()

      この列挙型の定数を含む配列を宣言されている順序で返します。 このメソッドは次のようにして定数を反復するために 使用できます:

          for (DBFunctionName c : DBFunctionName.values())
              System.out.println(c);

      戻り値:
        この列挙型の定数を含む、宣言されている順序での配列

    - #### valueOf

          public static DBFunctionName valueOf​(String name)

      指定した名前を持つこの型の列挙型定数を返します。 文字列は、この型の列挙型定数を宣言するのに使用した識別子と正確に 一致している必要があります。(余分な空白文字を含めることは できません。)
      パラメータ:
        `name` - 返される列挙型定数の名前。
      戻り値:
        指定した名前の列挙型定数
      例外:
        `IllegalArgumentException` - この列挙型に、指定した名前の定数がない場合
        `NullPointerException` - 引数がnullの場合

    - #### getFunctionName

          public String getFunctionName​(String func)

      共通ファンクションに対応するデータベース個別のファンクション名を返します。 現時点では、NAME,CON,SUBSTR のみ使用できます。
      パラメータ:
        `func` - 共通ファンクション
      戻り値:
        ファンクション名
      変更履歴:
        5.1.4.0 (2010/03/01) 新規作成, 6.2.2.1 (2015/03/31) SYSDATE 項目追加, 6.3.9.1 (2015/11/27) メソッドの出口は、最後の１か所にすべきです(PMD)。, 5.9.19.1 (2017/04/14) DBF.TYPE追加

    - #### getFunctionName

          public static String getFunctionName​(String func,
                                               String dbid)

      各データベースに対応するファンクション名を返します。
      パラメータ:
        `func` - ファンクション名(定義文字)
        `dbid` - 接続先ID
      戻り値:
        実ファンクション名
      変更履歴:
        4.3.8.0 (2009/08/01) SUBSTRを追加, 5.1.2.0 (2010/01/01) MySQL対応,SUBSTRB廃止(帳票データの分割の内部処理化に伴う), 5.1.4.0 (2010/03/01) データベース名 ではなく、dbid で判断するように変更, 5.7.7.2 (2014/06/20) DBF.NAME 時の処理の簡素化, 6.2.1.0 (2015/03/13) NAME だけ特殊処理するのではなく、統一する。

    - #### getSequence

          public int getSequence​(String seqName,
                                 Transaction tran)

      シーケンス名よりシーケンスオブジェクトを検索し、次の値を取り出します。 DBに対するシーケンスオブジェクトは予め作成されている必要があります。 また、MySQLの場合は、シーケンスオブジェクトが実装されていないため、 内部的には、引数のシーケンス名と同じ名前のテーブルから、Integer型の "SEQID"という項目名を検索することにより、シーケンスをエミュレートしています。
      パラメータ:
        `seqName` - シーケンス名
        `tran` - トランザクション
      戻り値:
        シーケンス番号
      変更履歴:
        5.1.9.0 (2010/08/01) 新規追加, 5.8.5.0 (2015/03/06) CACHE追加, 5.9.31.1 (2018/04/13) DBID追加対応

    - #### getSequence

          public int getSequence​(String seqName,
                                 Transaction tran,
                                 String DBID)

      シーケンス名よりシーケンスオブジェクトを検索し、次の値を取り出します。 DBに対するシーケンスオブジェクトは予め作成されている必要があります。 また、MySQLの場合は、シーケンスオブジェクトが実装されていないため、 内部的には、引数のシーケンス名と同じ名前のテーブルから、Integer型の "SEQID"という項目名を検索することにより、シーケンスをエミュレートしています。
      パラメータ:
        `seqName` - シーケンス名
        `tran` - トランザクション
        `DBID` - DBID
      戻り値:
        シーケンス番号
      変更履歴:
        5.1.9.0 (2010/08/01) 新規追加, 5.8.5.0 (2015/03/06) CACHE追加, 6.4.9.3 (2016/08/26) JavaDB(APACHE DERBY) の追加, 5.9.31.1 (2018/04/13) DBID追加対応, 6.9.8.0 (2018/05/28) DBID 対応漏れ,arg引数がないことを明確にするため、nullを渡します。

    - #### getDBName

          public static DBFunctionName getDBName​(String dbName)

      各データベースに対応するenum名を返します。
      パラメータ:
        `dbName` - データベース名(null不可)
      戻り値:
        データベースに対応するenum名
      変更履歴:
        5.1.4.0 (2010/03/01) 新規作成, 5.8.5.0 (2015/03/06) CACHE追加, 6.3.9.1 (2015/11/27) メソッドの出口は、最後の１か所にすべきです(PMD)。, 6.4.5.0 (2016/04/08) 規定以外のデータベースでも、動作するように、OTHER を用意する。, 6.4.9.3 (2016/08/26) JavaDB(APACHE DERBY) の追加, 6.8.3.0 (2017/11/27) H2 の追加
      このメソッドは、nullを返しません