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    }