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.hayabusa.db;
017    
018    import org.opengion.hayabusa.common.HybsSystem;
019    
020    /**
021     * Queryオブジェクトを取得する為に使用する?ファクトリクラスです?
022     *
023     *  Queryオブジェク?の識別ID を?に、QueryFactory.newInstance( String id )
024     * メソ?で?Queryオブジェクトを取得します?
025     * <del>QueryFactory.close( Query query ) メソ?で??部? QueryFactory に
026     * オブジェクトを戻す事によって,Queryオブジェクト?プ?リングを行なって?す?</del>
027     *
028     * 実?マッピングの関係か?識別ID は、シス?パラメータ で 定義しま?
029     * <del>大前提として、ユーザー共通で使用することを?えており,ユーザー個別にプ?ル
030     * する?があるなら?, HttpSession オブジェクトに登録すべきです?</del>
031     *
032     * @og.rev 3.6.0.8 (2004/11/19) キャ?ュ()ではなく?オブジェクトを直接生?します?
033     * @og.group ??タ表示
034     * @og.group ??タ編?
035     *
036     * @version  4.0
037     * @author   Kazuhiko Hasegawa
038     * @since    JDK5.0,
039     */
040    public final class QueryFactory {
041            // 3.1.0.0 (2003/03/20) Hashtable を使用して??で?同期でも構わな??を?HashMap に置換え?
042            /** newInstance() 時??ォルトクラス {@value} */
043            public static final String DEFAULT  = "JDBC" ;
044    
045            /**
046             *  ?ォルトコンストラクターをprivateにして?
047             *  オブジェクト?生?をさせな??する?
048             *
049             */
050            private QueryFactory() {
051            }
052    
053            /**
054             * 標準的な Queryオブジェク?JDBCQuery)を取得します?
055             * 過去に使用され?Queryオブジェク?はプ?ルから取得されます?
056             * ただし??変数はすべてクリアされます?で??取り出した
057             * オブジェクトを保持した??合??各アプリケーション側で保持して下さ??
058             *
059             * @return  Queryオブジェク?
060             */
061            public static Query newInstance() {
062                    return newInstance( DEFAULT );
063            }
064    
065            /**
066             * 識別id に応じ?Queryオブジェクトを取得します?
067             * 過去に使用され?Queryオブジェク?はプ?ルから取得されます?
068             * ただし??変数はすべてクリアされます?で??取り出した
069             * オブジェクトを保持した??合??各アプリケーション側で保持して下さ??
070             *
071             * @og.rev 3.6.0.8 (2004/11/19) キャ?ュ?。直接生?します?
072             * @og.rev 4.0.0.0 (2005/01/31) キーの?を、Query. から、Query_ に変更します?
073             * @og.rev 5.3.7.0 (2011/07/01) ゼロ???efaultを適用
074             *
075             * @param   id Queryインターフェースを実?たサブクラスの識別id
076             *
077             * @return  Queryオブジェク?
078             */
079            public static Query newInstance( final String id ) {
080    //              String type = ( id == null ) ? DEFAULT : id ;
081                    String type = ( id == null || id.length() == 0 ) ? DEFAULT : id ;
082                    return (Query)HybsSystem.newInstance( HybsSystem.sys( "Query_" + type ) );
083            }
084    
085            /**
086             * Queryオブジェクトをプ?ルに戻します?
087             * newInstance でオブジェクトを取り出す方法によっては、close() する?をなくす
088             * ことができますが、現状はこ?メソ?でオブジェクトをプ?ルに戻してください?
089             * オブジェクトを?個貸し?して?場?close() で戻すとすでに同じキーの
090             * 別のオブジェクトが存在する?そ?場合?,先?オブジェクト?破?れます?
091             *
092             * @og.rev 3.5.6.2 (2004/07/05) メソ?名がまぎらわし?、変更します?
093             * @og.rev 3.6.0.8 (2004/11/19) キャ?ュ??
094             * @og.rev 4.0.0.0 (2005/01/31) Queryの、close() 処?呼び出しておきます?
095             *
096             * @param   query Queryオブジェク?
097             */
098            public static void close( final Query query ) {
099                    if( query != null ) { query.close(); }  // 4.0.0 (2005/01/31)
100            }
101    
102            /**
103             * Queryオブジェクトをプ?ルからすべて削除します?
104             * シス?全体を初期化するときや、動作が不安定になったときに行います?
105             * プ?ルの方法?体が,?のキャ?ュ?使?たしかして??,
106             * 実行中でも??でも?ールを?期化できます?
107             *
108             * @og.rev 3.6.0.8 (2004/11/19) キャ?ュ?。メソ?も?します?
109             */
110            public static void clear() {
111                    // ここでは処?行いません?
112            }
113    }