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 }