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