    001/*
    002 * Copyright (c) 2009 The openGion Project.
    003 *
    004 * Licensed under the Apache License, Version 2.0 (the "License");
    005 * you may not use this file except in compliance with the License.
    006 * You may obtain a copy of the License at
    007 *
    008 *     http://www.apache.org/licenses/LICENSE-2.0
    009 *
    010 * Unless required by applicable law or agreed to in writing, software
    011 * distributed under the License is distributed on an "AS IS" BASIS,
    012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    013 * either express or implied. See the License for the specific language
    014 * governing permissions and limitations under the License.
    015 */
    016package org.opengion.fukurou.process;
    017
    018import org.opengion.fukurou.util.ApplicationInfo;
    019
    020import java.sql.Connection;
    021import java.sql.DriverManager;
    022import java.sql.SQLException;
    023import java.sql.DatabaseMetaData;
    024
    025import java.net.InetAddress;
    026import java.net.UnknownHostException;
    027
    028/**
    029 * ConnData は、Connection を管理する、独立したDB接続実装クラスです。
    030 *
    031 *
    032 * @version  4.0
    033 * @author   Kazuhiko Hasegawa
    034 * @since    JDK5.0,
    035 * @deprecated 5.1.9.0 (2010/08/01) 廃止クラスです。org.opengion.fukurou.db.ConnectionFactory 等をご使用ください。
    036 */
    037@Deprecated public final class ConnData {
    038        /** 実行しているサーバーの名称 */
    039        private static final String HOST_NAME ;
    040        /** 実行しているサーバーのIPアドレス */
    041        private static final String HOST_ADRS ;
    042
    043        static {
    044                String dmnHost ;
    045                String dnmAdrs ;
    046                try {
    047                        InetAddress address = InetAddress.getLocalHost();
    048                        dmnHost = address.getHostName() ;
    049                        dnmAdrs = address.getHostAddress() ;
    050                }
    051                catch( UnknownHostException ex ) {
    052                        dmnHost = "Unknown";
    053                        dnmAdrs = "Unknown";
    054                }
    055                HOST_NAME = dmnHost;
    056                HOST_ADRS = dnmAdrs;
    057        }
    058
    059        private final boolean useAppInfo ;
    060        private final Connection connection ;
    061        private final int uniq;
    062        private final long createTime;
    063        private final String info ;
    064
    065        /**
    066         * 【廃止】引数を指定してのコンストラクター
    067         *
    068         * @og.rev 5.1.1.0 (2009/12/01) MySQL対応 明示的に、TRANSACTION_READ_COMMITTED を指定する。
    069         *
    070         * @param       url             接続先URL
    071         * @param       user    接続ユーザー
    072         * @param       passwd  パスワード
    073         * @param       uniq    内部的なユニークコード
    074         * @deprecated  5.1.9.0 (2010/08/01) 廃止クラスです
    075         */
    076        @Deprecated public ConnData( final String url,final String user, final String passwd,final int uniq ) {
    077                createTime = System.currentTimeMillis();
    078                this.uniq = uniq ;
    079
    080                try {
    081                        connection = DriverManager.getConnection( url, user, passwd );
    082                        connection.setAutoCommit( false );
    083                        connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);  // 5.1.1.0 (2009/12/01)
    084
    085                        DatabaseMetaData meta = connection.getMetaData();
    086                        String productName  = meta.getDatabaseProductName();
    087                        useAppInfo = "ORACLE".equalsIgnoreCase( productName ) ;
    088                }
    089                catch (SQLException ex) {
    090                        String errMsg = "Connection の作成に失敗しました。[" + url + "],[" + user + "]";
    091                        throw new RuntimeException( errMsg,ex );
    092                }
    093
    094                info = url + "," + user + " (" + createTime + ")" ;
    095        }
    096
    097        /**
    098         * 【廃止】管理しているコネクションを返します。
    099         *
    100         * @return      管理しているコネクション
    101         * @deprecated  5.1.9.0 (2010/08/01) 廃止クラスです
    102         */
    103        @Deprecated public Connection getConnection() { return connection; }
    104
    105        /**
    106         * 【廃止】管理している接続先のユニークキーを返します。
    107         *
    108         * @return      接続先のユニークキー
    109         * @deprecated  5.1.9.0 (2010/08/01) 廃止クラスです
    110         */
    111        @Deprecated public int getUniq() { return uniq; }
    112
    113        /**
    114         * 【廃止】管理している接続先の作成時刻を返します。
    115         *
    116         * @return      接続先の作成時刻
    117         * @deprecated  5.1.9.0 (2010/08/01) 廃止クラスです
    118         */
    119        @Deprecated public long getCreateTime() { return createTime; }
    120
    121        /**
    122         * 【廃止】データベース接続に内部情報を設定します。
    123         * 処理は、ApplicationInfoオブジェクトの適用です。
    124         *
    125         * @param       user    DB接続履歴取得用の実行ユーザー
    126         * @param       pgid    DB接続履歴取得用の実行プログラムID
    127         * @deprecated  5.1.9.0 (2010/08/01) 廃止クラスです
    128         */
    129        @Deprecated public void makeApplicationInfo( final String user,final String pgid ) {
    130                if( useAppInfo ) {
    131                        ApplicationInfo appInfo = new ApplicationInfo();
    132                        // JavaVM 起動時のユーザーID,IPアドレス,ホスト名をセットします。
    133                        appInfo.setClientInfo( user,HOST_ADRS,HOST_NAME );
    134
    135                        // 画面ID,操作,プログラムID
    136                        appInfo.setModuleInfo( pgid,null,"ConnData" );
    137
    138                        appInfo.callAppInfo( connection );
    139                }
    140        }
    141
    142        /**
    143         * 【廃止】このオブジェクトの内部文字列表現を返します。
    144         *
    145         * 接続URL + "," + 接続ユーザー + " (" + 作成日付 + ")" です。
    146         *
    147         * @return 内部文字列表現
    148         * @deprecated  5.1.9.0 (2010/08/01) 廃止クラスです
    149         */
    150        @Deprecated public String toString() {
    151                return info ;
    152        }
    153}