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.db.ConnectionFactory;
019 import org.opengion.fukurou.util.Argument;
020 import org.opengion.fukurou.util.ApplicationInfo;
021 import org.opengion.fukurou.util.LogWriter;
022
023 import java.util.Set ;
024 import java.util.Map ;
025 import java.util.LinkedHashMap ;
026 import java.net.InetAddress;
027 import java.net.UnknownHostException;
028
029 import java.sql.Connection;
030
031 /**
032 * Process_DBParam は、他ã?プロセスへ共通ã?ãƒ??タベã?ス接続を割り当てる為のã€?
033 * ParamProcess インターフェースの実è£?‚¯ラスですã?
034 *
035 * DB接ç¶?がå¿?¦�な Process (DBCountFilter、DBMerge、DBReader、DBWriterなど)ã‚?
036 * 使用して処ç�?�™るå?合に、接続をæŒ?®šすることができますã?
037 * DBID(接続å?) は、Process_DBParam の -configFile でæŒ?®šすã‚?DBConfig.xml ファイルを使用しますã?
038 *
039 * @og.formSample
040 * Process_DBParam -infoUSER=C00000 -infoPGID=GE1234 -configFile=DBConfig.xml
041 *
042 * -infoUSER=実行ユーザー ??DB接続履歴取得用の実行ユーザー(ä¾?C00000)
043 * -infoPGID=実行ã?ログラãƒ?D ??DB接続履歴取得用の実行ã?ログラãƒ?D(ä¾?GE1234)
044 * -configFile=実行ã?ログラãƒ?D ??DB接続情報設å®?XMLファイル(ä¾?DBConfig.xml)
045 *
046 * @og.rev 4.0.0.0 (2007/11/22) DBConfig.xml による DBID(接続å?)æŒ?®šに変更ã€?
047 *
048 * @version 4.0
049 * @author Kazuhiko Hasegawa
050 * @since JDK5.0,
051 */
052 public class Process_DBParam extends AbstractProcess implements ParamProcess {
053 /** 実行してã�?‚‹サーバã?の名称 */
054 private static final String HOST_NAME ;
055 /** 実行してã�?‚‹サーバã?のIPアドレス */
056 private static final String HOST_ADRS ;
057
058 static {
059 String dmnHost ;
060 String dnmAdrs ;
061 try {
062 InetAddress address = InetAddress.getLocalHost();
063 dmnHost = address.getHostName() ;
064 dnmAdrs = address.getHostAddress() ;
065 }
066 catch( UnknownHostException ex ) {
067 dmnHost = "Unknown";
068 dnmAdrs = "Unknown";
069 }
070 HOST_NAME = dmnHost;
071 HOST_ADRS = dnmAdrs;
072 }
073
074 private ApplicationInfo appInfo = null;
075
076 // 5.3.4.0 (2011/04/01) bulkData 関係ã?メソãƒ?ƒ‰を追åŠ?
077 private Set<String> bulkData ;
078
079 private static final Map<String,String> mustProparty ; // ?»プロパティ?½å¿??チェãƒ?‚¯用 Map
080 private static final Map<String,String> usableProparty ; // ?»プロパティ?½整合æ?チェãƒ?‚¯ Map
081
082 static {
083 mustProparty = new LinkedHashMap<String,String>();
084 mustProparty.put( "infoUSER", "DB接続履歴取得用の実行ユーザー" );
085 mustProparty.put( "infoPGID", "DB接続履歴取得用の実行ã?ログラãƒ?D" );
086 mustProparty.put( "configFile", "DB接続情報設å®?XMLファイル" );
087
088 usableProparty = new LinkedHashMap<String,String>();
089 }
090
091 /**
092 * ãƒ?ƒ•ォルトコンストラクターã€?
093 * こã?クラスは、動çš?½œæ?されますã?ãƒ?ƒ•ォルトコンストラクターでã€?
094 * super クラスに対して、å¿?¦�な初期化を行っておきますã?
095 *
096 */
097 public Process_DBParam() {
098 super( "org.opengion.fukurou.process.Process_DBParam",mustProparty,usableProparty );
099 }
100
101 /**
102 * ApplicationInfoオブジェクトを登録しますã?
103 * これはã€??常の初期処ç�?�§はなくã?タグリブから起動される場合ã?み
104 * 呼ばれるメソãƒ?ƒ‰ですã?
105 * 初期処ç�?ƒ¡ソãƒ?ƒ‰(init)では、appInfo がセãƒ?ƒˆ済みの場合ã?ã€?
106 * ConnectionFactoryの初期化を行いませんã€?
107 *
108 * @og.rev 4.3.1.1 (2008/09/04) 新規追åŠ?taglib呼出専用)
109 *
110 * @param appInfo アプリæƒ??オブジェクãƒ?
111 */
112 public void setAppInfo( final ApplicationInfo appInfo ) {
113 this.appInfo = appInfo;
114 }
115
116 /**
117 * プロセスの初期化を行いますã?初めにä¸?º¦ã�?�‘、呼び出されますã?
118 * 初期処ç�?ファイルオープンã€?¼¤?¢オープンç?に使用しますã?
119 *
120 * @og.rev 4.3.1.1 (2008/09/04) taglib呼出時ã?、ConnectionFactoryの初期化を行わなã�?
121 *
122 * @param paramProcess ãƒ??タベã?スの接続å?æƒ??などを持ってã�?‚‹オブジェクãƒ?
123 */
124 public void init( final ParamProcess paramProcess ) {
125 // 4.3.1.1 (2008/09/04) taglib呼出時ã?、ConnectionFactoryの初期化を行わなã�?
126 if( appInfo == null ) {
127 Argument arg = getArgument();
128
129 String infoUSER = arg.getProparty( "infoUSER" ); // DB接続履歴取得用の実行ユーザー
130 String infoPGID = arg.getProparty( "infoPGID" ); // DB接続履歴取得用の実行ã?ログラãƒ?D
131 String configFile = arg.getProparty( "configFile" ); // DB接続情報設å®?XMLファイル
132
133 appInfo = new ApplicationInfo();
134 // JavaVM 起動時のユーザーID,IPアドレス,ホスト名をセãƒ?ƒˆしますã?
135 appInfo.setClientInfo( infoUSER,HOST_ADRS,HOST_NAME );
136
137 // 画面ID,操ä½?プログラãƒ?D
138 appInfo.setModuleInfo( infoPGID,null,"fukurou" );
139
140 // DBID接続情報の取得å?の設å®?
141 ConnectionFactory.init( null,configFile );
142 }
143 }
144
145 /**
146 * æŒ?®šã? 接続å?ID に対する コネクションを返しますã?
147 *
148 * @param key 接続å?ID
149 *
150 * @return コネクション
151 * @throws RuntimeException DB接続å?が未設定ã?場å�?
152 */
153 public Connection getConnection( final String key ) {
154 return ConnectionFactory.connection( key,appInfo );
155 }
156
157 /**
158 * 検索した結果が設定された Set オブジェクトを設定しますã?
159 *
160 * @og.rev 5.3.4.0 (2011/04/01) 新規追åŠ?
161 *
162 * @param bulkData 検索した結果が設定された Setオブジェクãƒ?
163 */
164 public void setBulkData( final Set<String> bulkData ) {
165 this.bulkData = bulkData;
166 }
167
168 /**
169 * 検索した結果が設定された Set オブジェクトを返しますã?
170 *
171 * @og.rev 5.3.4.0 (2011/04/01) 新規追åŠ?
172 *
173 * @return 検索した結果が設定された Setオブジェクãƒ?
174 */
175 public Set<String> getBulkData() {
176 return bulkData ;
177 }
178
179 /**
180 * プロセスの終äº?‚’行いますã?æœ?¾Œにä¸?º¦ã�?�‘、呼び出されますã?
181 * 終äº??ç�?ファイルクローズã€?¼¤?¢クローズç?に使用しますã?
182 *
183 * @og.rev 4.0.0.0 (2007/11/27) commit,rollback,remove 処ç�?‚’追åŠ?
184 *
185 * @param isOK トã?タルで、OKã�?�£たかどã�?�‹[true:成功/false:失敗]
186 */
187 public void end( final boolean isOK ) {
188 // 何もありませんã€?PMD エラー回避)
189 }
190
191 /**
192 * プロセスの処ç�?µ�果のレポã?ト表現を返しますã?
193 * 処ç�??ログラãƒ?��、å?力件数、å?力件数などのæƒ??ですã?
194 * こã?æ–?—å?をそのまま、標準å?力に出すことで、結果レポã?トと出来るよã�?�ª
195 * 形式で出してくださいã€?
196 *
197 * @return 処ç�?µ�果のレポã?ãƒ?
198 */
199 public String report() {
200 String report = "[" + getClass().getName() + "]" + CR
201 + ConnectionFactory.information();
202
203 return report ;
204 }
205
206 /**
207 * こã?クラスの使用方法を返しますã?
208 *
209 * @return こã?クラスの使用方æ³?
210 */
211 public String usage() {
212 StringBuilder buf = new StringBuilder();
213
214 buf.append( "Process_DBParam は、他ã?プロセスへ共通ã?ãƒ??タベã?ス接続を割り当てる為のã€? ).append( CR );
215 buf.append( "ParamProcess インターフェースの実è£?‚¯ラスですã?" ).append( CR );
216 buf.append( CR );
217 buf.append( "DB接ç¶?がå¿?¦�な Process (DBCountFilter、DBMerge、DBReader、DBWriterなど)ã‚? ).append( CR );
218 buf.append( "使用して処ç�?�™るå?合に、接続をæŒ?®šすることができますã?" ).append( CR );
219 buf.append( "DBID(接続å?) はã€?configFile でæŒ?®šすã‚?DBConfig.xml ファイルを使用しますã?" ).append( CR );
220 buf.append( CR );
221 buf.append( "引数æ–?—å?中に空白を含ã‚??合ã?、ダブルコーãƒ??ション(\"\") で括って下さã�??" ).append( CR );
222 buf.append( "引数æ–?—å?の ã€?』ã?前後には、空白は挟めません。å¿?�šã€?key=value の様に" ).append( CR );
223 buf.append( "繋げてくださいã€? ).append( CR );
224 buf.append( CR ).append( CR );
225
226 buf.append( getArgument().usage() ).append( CR );
227
228 return buf.toString();
229 }
230
231 /**
232 * こã?クラスは、main メソãƒ?ƒ‰から実行できませんã€?
233 *
234 * @param args コマンド引数配å?
235 */
236 public static void main( final String[] args ) {
237 LogWriter.log( new Process_DBParam().usage() );
238 }
239 }