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     */
016    package org.opengion.fukurou.process;
017    
018    import org.opengion.fukurou.util.ApplicationInfo;
019    
020    import java.sql.Connection;
021    import java.sql.DriverManager;
022    import java.sql.SQLException;
023    import java.sql.DatabaseMetaData;
024    
025    import java.net.InetAddress;
026    import 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接続履歴取得用の実行?ログラ?D
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,操?プログラ?D
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    }