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.transfer; 017 018 import java.util.Date; 019 import java.util.HashSet; 020 import java.util.Set; 021 022 import org.opengion.fukurou.db.ConnectionFactory; 023 import org.opengion.fukurou.db.Transaction; 024 import org.opengion.fukurou.db.TransactionReal; 025 import org.opengion.fukurou.util.ApplicationInfo; 026 import org.opengion.fukurou.util.LogWriter; 027 import org.opengion.fukurou.util.StringUtil; 028 029 /** 030 * ä¼é?処ç?‚’実行ã™ã‚‹ãŸã‚ã?クラスã§ã™ã? 031 * 032 * ä¼é?ãƒ??モンã§ã‚»ãƒ?ƒˆã•れãŸèªå–方法ã?実行方法ã?基ã¥ãä¼é?処ç?‚’実行ã—ã¾ã™ã? 033 * ä¼é?処ç??以下ã?フãƒãƒ¼ã§å®Ÿè¡Œã•れã¾ã™ã? 034 * 035 * â‘?ƒ‡ãƒ¼ã‚¿ã®èªã¿å–り 036 * ã€?ªå–方法ã«å¯¾å¿œã™ã‚‹å„実è£?‚¯ãƒ©ã‚¹ã®å‡¦ç?‚’呼ã³å‡ºã—データをèªã¿å–りã¾ã™ã? 037 * ②処ç?®Ÿè¡? 038 * ã€?®Ÿè¡Œæ–¹æ³•ã«å¯¾å¿œã™ã‚‹å„実è£?‚¯ãƒ©ã‚¹ã®å‡¦ç?‚’呼ã³å‡ºã—â‘ ã§å–å¾—ã—ãŸãƒ‡ãƒ¼ã‚¿ã«å¯¾ã—ã¦å‡¦ç?‚’実行ã—ã¾ã™ã? 039 * ③終äº??ç? 040 * ã€?‘ ã€â‘¡ãŒæ£å¸¸çµ‚äº?—ãŸå?åˆï¼Œèªå–方法ã?クラスã§å®šç¾©ã•れãŸçµ‚äº??ç?‚’実行ã—ã¾ã™ã? 041 * ã€?‘ ã€â‘¡ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå?åˆã?èªå–方法ã?クラスã§å®šç¾©ã•れãŸã‚¨ãƒ©ãƒ¼å‡¦ç?‚’実行ã—ã¾ã™ã? 042 * 043 * @og.group ä¼é?シスãƒ?ƒ 044 * 045 * @version 5.0 046 * @author Hiroki.Nakamura 047 * @since JDK1.6 048 */ 049 public class TransferProcess { 050 051 // 実行方法ã«å¯¾å¿œã™ã‚‹å®Ÿè£?‚¯ãƒ©ã‚¹ã®åŸºæº–å 052 private static final String READ_CLASS_BASE = "org.opengion.fukurou.transfer.TransferRead_" ; 053 054 // 実行方法ã«å¯¾å¿œã™ã‚‹å®Ÿè£?‚¯ãƒ©ã‚¹ã®åŸºæº–å 055 private static final String EXEC_CLASS_BASE = "org.opengion.fukurou.transfer.TransferExec_" ; 056 057 // 実行対象ã®ä¼é?ã‚»ãƒ?ƒˆã‚ªãƒ–ジェクトã?ã‚»ãƒ?ƒˆ 058 private final Set<TransferConfig> configSet; 059 060 // æœ?¾Œã«å®Ÿè¡Œã—ãŸä¼é?è¨å®šã‚ªãƒ–ジェクãƒ? 061 private TransferConfig config = null; 062 063 // 実行デーモンå? 064 private String dmnName = null; 065 066 // DBæŽ¥ç¶šæƒ…å ±è¨˜éŒ² 067 private ApplicationInfo appInfo; 068 069 // ãƒ?ƒãƒ?‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹ 070 private boolean isDebug = false; 071 072 /** 073 * コンストラクタã§ã™ã? 074 * 075 * @param configSet ä¼é?è¨å®šã‚ªãƒ–ジェクトã?ã‚»ãƒ?ƒˆ 076 */ 077 public TransferProcess( final Set<TransferConfig> configSet ) { 078 this.configSet = configSet; 079 } 080 081 /** 082 * ãƒ??モンåã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 083 * 084 * @param dmnName ãƒ??モンå? 085 */ 086 public void setDmnName( final String dmnName ) { 087 this.dmnName = dmnName; 088 } 089 090 /** 091 * DBæŽ¥ç¶šæƒ…å ±ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 092 * 093 * @param appInfo DBæŽ¥ç¶šæƒ…å ± 094 */ 095 public void setAppInfo( final ApplicationInfo appInfo ) { 096 this.appInfo = appInfo; 097 } 098 099 /** 100 * ãƒ?ƒãƒ?‚°æƒ??ã‚’å?力ã—ã¾ã™ã? 101 */ 102 public void setDebug() { 103 isDebug = true; 104 } 105 106 /** 107 * æœ?¾Œã«å®Ÿè¡Œã—ãŸä¼é?è¨å®šã‚ªãƒ–ジェクトを返ã—ã¾ã™ã? 108 * 109 * @return ä¼é?è¨å®šã‚ªãƒ–ジェクãƒ? 110 */ 111 public TransferConfig getLastConfig() { 112 return config; 113 } 114 115 /** 116 * ä¼é?処ç?‚’実行ã—ã¾ã™ã? 117 */ 118 public void process() { 119 Transaction tran = new TransactionReal( appInfo ); 120 TransferRead read = null; 121 TransferExec exec = null; 122 try { 123 for( TransferConfig c : configSet ) { 124 config = c; 125 126 // ãƒ?ƒãƒ?‚°æƒ??ã‚’å?力ã—ã¾ã™ã? 127 if( isDebug ) { 128 System.out.println(); 129 System.out.print( " START = " + new Date() ); 130 System.out.print( "[" + dmnName + "]:[" + config.toString() + "]" ); 131 } 132 133 // èªå–方法ã?オブジェクトを生æ?ã—ã?ä¼é?プãƒã‚»ã‚¹ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã? 134 read = (TransferRead)StringUtil.newInstance( READ_CLASS_BASE + config.getKbRead() ); 135 136 // 実行方法ã?オブジェクトを生æ?ã—ã?ä¼é?プãƒã‚»ã‚¹ã«ã‚»ãƒ?ƒˆã—ã¾ã™ã? 137 exec = (TransferExec)StringUtil.newInstance( EXEC_CLASS_BASE + config.getKbExec() ); 138 139 String[] vals = read.read( config, tran ); 140 exec.execute( vals, config, tran ); 141 read.complete( config, tran ); 142 143 // ãƒ?ƒãƒ?‚°æƒ??ã‚’å?力ã—ã¾ã™ã? 144 if( isDebug ) { 145 System.out.println(); 146 System.out.print( " END = " + new Date() ); 147 System.out.print( "[" + dmnName + "]:[" + config.toString() + "]" ); 148 } 149 } 150 } 151 catch( Throwable ex ) { 152 if( tran != null ) { 153 tran.rollback(); 154 tran.close(); 155 tran = null; // エラー発生時ã¯ã€æŽ¥ç¶šã‚’終äº?—ã¾ã™ã?(次ã®çŠ¶æ³æ›´æ–°ã§ãƒ?ƒƒãƒ‰ãƒãƒ?‚¯ã«ãªã‚‹ãŸã‚? 156 } 157 158 if( read != null ) { 159 read.error( config, appInfo ); 160 } 161 162 throw new RuntimeException( ex ); 163 } 164 finally { 165 if( tran != null ) { tran.close(); } 166 } 167 } 168 169 /** 170 * 実行用ã®ãƒ¡ã‚¤ãƒ³ãƒ¡ã‚½ãƒ?ƒ‰ 171 * 172 * Usage: java org.opengion.hayabusa.transfer.TransferProcess 173 * -kbRead=èªå–æ–¹æ³?-readObj=èªå–対象 [-readPrm=èªå–パラメーター] 174 * -kbExec=実行方æ³?-execObj=実行対象 [-execPrm=実行パラメーター] 175 * -DBConfig=DBConfig.xml [-execDbid=実行接続å?DBID] [-hfrom=é€ã‚Šå…??ストコード] 176 * [-debug=true/false] 177 * 178 * @og.rev 5.8.3.2 (2015/01/30) debug追åŠ? 179 * 180 * @param args コマンド引数é…å? 181 */ 182 public static void main( final String[] args ) { 183 boolean debug = false; // 5.8.3.2 (2015/01/30) 184 try { 185 if( args.length < 5 ) { 186 LogWriter.log( "Usage: java org.opengion.hayabusa.transfer.TransferProcess" ); 187 LogWriter.log( " -kbRead=èªå–æ–¹æ³?-readObj=èªå–対象 [-readPrm=èªå–パラメーター]" ); 188 LogWriter.log( " -kbExec=実行方æ³?-execObj=実行対象 [-execPrm=実行パラメーター]" ); 189 LogWriter.log( " -DBConfig=DBConfig.xml [-execDbid=実行接続å?DBID] [-hfrom=é€ã‚Šå…??ストコード]" ); 190 return; 191 } 192 193 String kbRead = null; 194 String readObj = null; 195 String readPrm = null; 196 String kbExec = null; 197 String execObj = null; 198 String execPrm = null; 199 String dbConfig = null; 200 String execDbid = null; 201 String hfrom = null; 202 203 204 for( int i=0; i<args.length; i++ ) { 205 String arg = args[i]; 206 if( arg.startsWith( "-kbRead=" ) ) { 207 kbRead = arg.substring( 8 ); 208 } 209 else if( arg.startsWith( "-readObj=" ) ) { 210 readObj = arg.substring( 9 ); 211 } 212 else if( arg.startsWith( "-readPrm=" ) ) { 213 readPrm = arg.substring( 9 ); 214 } 215 else if( arg.startsWith( "-kbExec=" ) ) { 216 kbExec = arg.substring( 8 ); 217 } 218 else if( arg.startsWith( "-execObj=" ) ) { 219 execObj = arg.substring( 9 ); 220 } 221 else if( arg.startsWith( "-execPrm=" ) ) { 222 execPrm = arg.substring( 9 ); 223 } 224 else if( arg.startsWith( "-DBConfig=" ) ) { 225 dbConfig = arg.substring( 10 ); 226 } 227 else if( arg.startsWith( "-execDbid=" ) ) { 228 execDbid = arg.substring( 10 ); 229 } 230 else if( arg.startsWith( "-hfrom=" ) ) { 231 hfrom = arg.substring( 7 ); 232 } 233 else if( arg.startsWith( "-debug=" ) ) { // 5.8.3.2 (2015/01/30) 234 if( arg.substring( 8 ) == "true" ){ debug = true; } 235 } 236 } 237 238 if( kbRead == null || kbRead.length() == 0 239 || readObj == null || readObj.length() == 0 240 || kbExec == null || kbExec.length() == 0 241 || execObj == null || execObj.length() == 0 242 || dbConfig == null || dbConfig.length() == 0 ) { 243 LogWriter.log( "以下ã?パラメーターã¯å¿??ã§ã™ã?" ); 244 LogWriter.log( "-kbRead=èªå–æ–¹æ³?-readObj=èªå–対象" ); 245 LogWriter.log( "-kbExec=実行方æ³?-execObj=実行対象" ); 246 LogWriter.log( "-DBConfig=DBConfig.xml" ); 247 } 248 249 // HybsSystem.setInitialData( new HashMap<String,String>() ); 250 251 // DBIDæŽ¥ç¶šæƒ…å ±ã®å–å¾—å?ã®è¨å®? 252 ConnectionFactory.init( null,dbConfig ); 253 254 // ä¼é?è¨å®šã‚ªãƒ–ジェクãƒ? 255 TransferConfig config = new TransferConfig( 256 kbRead, readObj, readPrm 257 , kbExec, execDbid, execObj, execPrm 258 , null, hfrom, null, -1 ); 259 Set<TransferConfig> configSet = new HashSet<TransferConfig>(); 260 configSet.add( config ); 261 262 // ä¼é?処ç?‚’実行ã—ã¾ã™ã? 263 TransferProcess proc = new TransferProcess( configSet ); 264 if( debug ){ // 5.8.3.2 (2015/01/30) 265 proc.setDebug(); 266 } 267 268 269 System.out.println( "EXEC START Config=[" + config.toString() + "]" ); 270 proc.process(); 271 System.out.println( "EXEC END Config=[" + config.toString() + "]" ); 272 } 273 catch( Throwable ex ) { 274 ex.printStackTrace(); 275 // 5.8.3.2 (2015/01/30) 276 if( debug ){ 277 System.out.println( ex.toString() ); 278 } 279 // 異常終äº??å ´å? 280 System.exit( 1 ); 281 } 282 283 // æ£å¸¸çµ‚äº??å ´å? 284 System.exit( 0 ); 285 } 286 }