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.text.DateFormat; 019 // import java.text.SimpleDateFormat; 020 // import java.util.Calendar; 021 // import java.util.Date; 022 // import java.util.Locale; 023 024 import org.opengion.fukurou.db.DBUtil; 025 import org.opengion.fukurou.db.Transaction; 026 import org.opengion.fukurou.util.StringUtil; 027 import org.opengion.fukurou.util.HybsDateUtil; 028 029 /** 030 * ä¼é?è¦æ±‚ã«å¯¾ã—ã¦æ—§ä¼é?DB(CB01)ã«ç™»éŒ²ã‚’行ã„ã¾ã™ã? 031 * 032 * æ—§ä¼é?DB登録時ã?ãƒ??タコードã?é€ã‚Šå…ˆã?ãƒ?‚スト種別ã¯ã€ä¼é?定義マスタã®å®Ÿè¡Œå¯¾è±¡ã§æŒ?®šã—ã¾ã™ã? 033 * 具体的ã«ã¯ä»¥ä¸‹ã?å½¢å¼ã§å®šç¾©ã—ã¾ã™ã? 034 * (ãƒ??タコーãƒ? (é€ã‚Šå…? (ãƒ?‚スト種別) [(レコード長)] ä¾?:"3 D9 B119 [400]" 035 * 4番目ã®ãƒ‘ラメーターã§ã‚るレコード長ã¯ä»»æ„ã§ã™ã?ãƒ¬ã‚³ãƒ¼ãƒ‰é•·ãŒæŒ‡å®šã•れãªã??åˆã? 036 * ãƒ?ƒ•ォルトå?ã¨ã—㦠400 ãŒå®šç¾©ã•れã¾ã™ã? 037 * 038 * CB01ã®å??ç›®ã®ã‚»ãƒ?ƒˆåŸºæº–ã?以下ã?通りã§ã™ã? 039 * 040 * ヘッãƒ??ãƒ??ã‚¿ 明細ãƒ??ã‚¿ 041 * --------------------------------------------------- 042 * HCDJ(状æ³? 1 5 043 * HCDD(カードコーãƒ? [実行対象] [実行対象] 044 * HTO(é€ã‚Šå…? [実行対象] [実行対象] 045 * HSYU(ãƒ?‚スト種別) [実行対象] [実行対象] 046 * HLDAY(登録日) シスãƒ?ƒ æ—¥ä»? シスãƒ?ƒ æ—¥ä»? 047 * HLTIME(登録時間) シスãƒ?ƒ æ—¥ä»? シスãƒ?ƒ æ—¥ä»? 048 * HDPDAY(削除日) シスãƒ?ƒ æ—¥ä»?14æ—¥ シスãƒ?ƒ æ—¥ä»?14æ—¥ 049 * HFROM(é€ã‚Šå…? [シスãƒ?ƒ リソース] [シスãƒ?ƒ リソース] ※TRANSFER_HOST_CODEã®å€¤ 050 * HTCNO(通番NO) CB010001.NEXTVAL CB010001.NEXTVAL 051 * HTC(通番) CB010002.NEXTVAL CB010002.NEXTVAL 052 * HTEXT(ãƒ??ã‚¿) é€ã‚Šå…?登録件数 ãƒ??ã‚¿ 053 * DYUNYOU(é‹ç”¨æ—¥) CJ03>DYUNYOU CJ03>DYUNYOU 054 * RECL(レコード長) [実行対象] [実行対象] â€»åˆæœŸå€¤400 055 * 056 * ã“ã?_CB01を利用ã™ã‚‹å ´å?B01ãƒ??ãƒ–ãƒ«ä»¥å¤–ã«æ¬¡ã®ãƒ??ブルåŠã?シーケンスãŒå¿?¦ã§ã? 057 * ãƒ??ブル?šCB02 058 * シーケンス?šCB010001,CB010002 059 * 060 * @og.rev 5.4.4.1 ã‚³ãƒ¡ãƒ³ãƒˆä¿®æ£ 061 * @og.rev 5.5.7.3 CB01登録時ã?HPASS,HNAME変更 062 * @og.group ä¼é?シスãƒ?ƒ 063 * 064 * @version 5.0 065 * @author Hiroki.Nakamura 066 * @since JDK1.6 067 */ 068 public class TransferExec_CB01 implements TransferExec { 069 070 // æ—§ä¼é?DB(CB01)登録 071 // 5.5.7.3 (2012/10/12) HPASS,HNAMEãŒnullã§ã¯é§?›®ãªã®ã§ã‚¹ãƒšã?ス 072 private static final String CB01_INSERT = 073 "INSERT INTO CB01 (" 074 + "HCDJ,HCDD,HTO,HSYU,HLDAY,HLTIME,HDPDAY,HTEXT1,HTEXT2" 075 + ",HPASS,HFROM,HNAME,HTCNO,HTC,HTEXT,DYUNYOU,RECL" 076 + ") VALUES (" 077 + "?,?,?,?,?,?,?,null,null" 078 // + ",null,?,null,?,?,?,?,?" 079 + ",' ',?,' ',?,?,?,?,?" 080 + ")"; 081 082 // 通番NOå–å¾? 083 private static final String HTCNO_GET = "SELECT CB010001.NEXTVAL FROM DUAL"; 084 085 // 通番å–å¾? 086 private static final String HTC_GET = "SELECT CB010002.NEXTVAL FROM DUAL"; 087 088 // é‹ç”¨æ—¥å–å¾? 089 private static final String DYUNYOU_GET = "SELECT DYUNYOU FROM CJ03"; 090 091 // 削除日付基準日数 092 private static final int HDAY = 14; 093 094 // レコード長ã®åˆæœŸå€¤ 095 private static final String DEFAULT_RECL = "400"; 096 097 /** 098 * CB01ã«ç™»éŒ²ã—ã¾ã™ã? 099 * 100 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用ã™ã‚‹ã‚ˆã†ã«ä¿®æ£ã—ã¾ã™ã? 101 * 102 * @param vals ä¼é?ãƒ??ã‚¿(é…å?) 103 * @param config ä¼é?è¨å®šã‚ªãƒ–ジェクãƒ? 104 * @param tran トランザクションオブジェクãƒ? 105 */ 106 @Override 107 public void execute( final String[] vals, final TransferConfig config, final Transaction tran ) { 108 if( vals == null || vals.length == 0 ) { return; } 109 110 String execObj = config.getExecObj(); 111 String[] obj = StringUtil.csv2Array( execObj, ' ' ); 112 if( obj.length < 3 ) { 113 String errMsg = "実行対象ã¯ã€?ãƒ??タコーãƒ? (é€ã‚Šå…? (ãƒ?‚スト種別) ã®å½¢å¼ã§æŒ?®šã—ã¦ä¸‹ã•ã??" 114 + "EXECOBJ=[" + execObj + "]"; 115 throw new RuntimeException( errMsg ); 116 } 117 String hcdd = obj[0]; 118 String hto = obj[1]; 119 String hsyu = obj[2]; 120 if( hcdd == null || hcdd.length() == 0 121 || hto == null || hto.length() == 0 122 || hsyu == null || hsyu.length() == 0 ) { 123 String errMsg = "実行対象ã¯ã€?ãƒ??タコーãƒ? (é€ã‚Šå…? (ãƒ?‚スト種別) ã¯å¿??ã§ã™ã?" 124 + "EXECOBJ=[" + execObj + "]"; 125 throw new RuntimeException( errMsg ); 126 } 127 String recl = ( obj.length > 3 ) ? obj[3] : DEFAULT_RECL; 128 129 String execDbid = config.getExecDbid(); 130 131 String htcno = getHtcno( tran, execDbid ); 132 // String hlday = getDate( "yyyyMMdd" ); 133 // String hltime = getDate( "HHmm" ); 134 // String hdpday = getDate( hlday, HDAY ); 135 String hlday = HybsDateUtil.getDate( "yyyyMMdd" ); // 5.5.7.2 (2012/10/09) HybsDateUtil を利用 136 String hltime = HybsDateUtil.getDate( "HHmm" ); // 5.5.7.2 (2012/10/09) HybsDateUtil を利用 137 String hdpday = HybsDateUtil.getDatePlus( hlday, HDAY ); // 5.5.7.2 (2012/10/09) HybsDateUtil を利用 138 139 // ヘッãƒ??行追åŠ? 140 String[] headerArgs = new String[] { 141 "1", // HCDJ 142 hcdd , // HCDD 143 hto, // HTO 144 hsyu, // HSYU 145 hlday.substring( 2 ), // HLDAY 146 hltime, // HLTIME 147 hdpday.substring( 2 ), // HDPDAY 148 config.getHfrom(), // HFROM 149 htcno, // HTCNO 150 getHtc( tran, execDbid ), // HTC 151 getHeaderText( hto, vals.length ), // HTEXT 152 getDyunyou( tran, execDbid ), // DYUNYOU 153 recl // RECL 154 }; 155 DBUtil.dbExecute( CB01_INSERT, headerArgs, tran, execDbid ); 156 157 // 明細行追åŠ? 158 for( String text : vals ) { 159 String[] dataArgs = new String[] { 160 "5", // HCDJ 161 hcdd , // HCDD 162 hto, // HTO 163 hsyu, // HSYU 164 hlday.substring( 2 ), // HLDAY 165 hltime, // HLTIME 166 hdpday.substring( 2 ), // HDPDAY 167 config.getHfrom(), // HFROM 168 htcno, // HTCNO 169 getHtc( tran, execDbid ), // HTC 170 text, // HTEXT 171 getDyunyou( tran, execDbid ), // DYUNYOU 172 recl // RECL 173 }; 174 DBUtil.dbExecute( CB01_INSERT, dataArgs, tran, execDbid ); 175 } 176 } 177 178 /** 179 * ヘッãƒ??ãƒ??ã‚¿ã®ãƒ?‚ストを返ã—ã¾ã™ã? 180 * (CSP00007ã¨åŒã˜ä»•様ã§å®Ÿè£? 181 * 182 * @param hto é€ã‚Šå…? 183 * @param cnt 登録件数 184 * 185 * @return ヘッãƒ??ãƒ??ã‚¿ã®ãƒ?‚スãƒ? 186 */ 187 private static String getHeaderText( final String hto, final int cnt ) { 188 return StringUtil.stringFill( hto, 8, "UTF-8" ) 189 // + " 登録件数 = " + String.valueOf( cnt ); 190 + " 登録件数 = " + cnt; 191 } 192 193 /** 194 * 通番NOを採番ã—ã¾ã™ã? 195 * (CSP00007ã¨åŒã˜ä»•様ã§å®Ÿè£? 196 * 197 * @param tran トランザクションオブジェクãƒ? 198 * @param execDbid 実行接続å?DBID 199 * 200 * @return 通番NO 201 */ 202 private static String getHtcno( final Transaction tran, final String execDbid ) { 203 String[][] rtn = DBUtil.dbExecute( HTCNO_GET, new String[0], tran, execDbid ); 204 return rtn[0][0]; 205 } 206 207 /** 208 * 通番を採番ã—ã¾ã™ã? 209 * (CSP00007ã¨åŒã˜ä»•様ã§å®Ÿè£? 210 * 211 * @param tran トランザクションオブジェクãƒ? 212 * @param execDbid 実行接続å?DBID 213 * 214 * @return 通番 215 */ 216 private static String getHtc( final Transaction tran, final String execDbid ) { 217 String[][] rtn = DBUtil.dbExecute( HTC_GET, new String[0], tran, execDbid ); 218 return rtn[0][0]; 219 } 220 221 /** 222 * é‹ç”¨æ—¥ã‚’å–å¾—ã—ã¾ã™ã?(CJ03>é‹ç”¨æ—¥) 223 * (CSP00007ã¨åŒã˜ä»•様ã§å®Ÿè£? 224 * 225 * @param tran トランザクションオブジェクãƒ? 226 * @param execDbid 実行接続å?DBID 227 * 228 * @return é‹ç”¨æ—¥ 229 */ 230 private static String getDyunyou( final Transaction tran, final String execDbid ) { 231 String[][] rtn = DBUtil.dbExecute( DYUNYOU_GET, new String[0], tran, execDbid ); 232 return rtn[0][0]; 233 } 234 235 /** 236 * ç¾åœ¨æ—¥ä»˜ã?時刻をフォーマットをæŒ?®šã—ã¦ã€æ‰€å¾—ã—ã¾ã™ã? 237 * フォーマットã?æŒ?®šæ–¹æ³•ã?ã€java.text.SimpleDateFormat ã®æŒ?®šæ–¹æ³•ã¨åŒä¸?§ã™ã? 238 * 239 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用ã™ã‚‹ãŸã‚å»?¢ 240 * 241 * @param form フォーãƒ?–‡å—å? ( ä¾?"yyyy/MM/dd HH:mm:ss.SSS" ) 242 * 243 * @return ç¾åœ¨æ—¥ä»˜ã?時刻 244 */ 245 // private static String getDate( final String form ) { 246 // DateFormat formatter = new SimpleDateFormat( form,Locale.JAPAN ); 247 // return formatter.format(new Date()); 248 // } 249 250 /** 251 * æŒ?®šã?å¼•æ•°ã®æ—¥ä»˜ã‘æ–?—å?(YYYYMMDDHHMMSS)よりã€ã‚«ãƒ¬ãƒ³ãƒ?‚ªãƒ–ジェクトを作æ?ã—ã¾ã™ã? 252 * 引数ã¯ã€YYYYMMDD ã®?˜æ–‡å—ã‹ã€YYYYMMDDHHMMSS ã®?‘4文å—ã?ã©ã¡ã‚‰ã‹ã§ã™ã? 253 * 254 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用ã™ã‚‹ãŸã‚å»?¢ 255 * 256 * @param value æ—¥ä»˜ã‘æ–?—å?(YYYYMMDD ã¾ãŸã? YYYYMMDDHHMMSS) 257 * 258 * @return カレンãƒ?‚ªãƒ–ジェクãƒ? 259 */ 260 // private static Calendar getCalendar( final String value ) { 261 // if ( value == null || ( value.length() != 8 && value.length() != 14 ) ) { 262 // String errMsg = "引数ã¯ã€YYYYMMDD ã¾ãŸã? YYYYMMDDHHMMSS å½¢å¼ã?æ—¥ä»˜ã‘æ–?—å?ã®ã¿ã§ã™ã?" 263 // + " value=[" + value + "]" ; 264 // throw new RuntimeException( errMsg ); 265 // } 266 // 267 // Calendar cal = Calendar.getInstance(); 268 // cal.clear(); 269 // 270 // int hour=0,minute=0,second=0; 271 // 272 // int year = Integer.parseInt( value.substring( 0,4 ) ); 273 // int month = Integer.parseInt( value.substring( 4,6 ) ) - 1; 274 // int date = Integer.parseInt( value.substring( 6,8 ) ); 275 // 276 // if( value.length() == 14 ) { 277 // hour = Integer.parseInt( value.substring( 8,10 ) ); 278 // minute = Integer.parseInt( value.substring( 10,12 ) ); 279 // second = Integer.parseInt( value.substring( 12,14 ) ); 280 // } 281 // 282 // cal.set( year,month,date,hour,minute,second ); 283 // 284 // return cal; 285 // } 286 287 /** 288 * æŒ?®šã?å¼•æ•°ã®æ—¥ä»˜ã‘æ–?—å?(YYYYMMDD)よりã€å·®åˆ??日付を計算ã—ã¦è¿”ã—ã¾ã™ã? 289 * 引数ã¯ã€YYYYMMDD 㨠差åˆ??日数ã€? 290 * 291 * @og.rev 5.5.7.2 (2012/10/09) HybsDateUtil を利用ã™ã‚‹ãŸã‚å»?¢ 292 * ※ diffã®ã‚³ãƒ¡ãƒ³ãƒ?éŽåŽ»ã®æ—¥ä»˜[+]ã€å°?¥ã®æ—¥ä»˜ã?[-])ã¨å†?ƒ¨ãƒã‚¸ãƒ?‚¯ãŒç•°ãªã‚‹ã‚ˆã?«æ€ã„ã¾ã™ã? 293 * ç§»ã—ãŸå…ˆã? HybsDateUtil.getDatePlus ã§ã‚‚åŒã˜å?ç?§ã™ã?ãƒã‚°ã‹ã©ã?‹ãƒ?‚¹ãƒˆã§ãã¦ã?¾ã›ã‚“ã€? 294 * 295 * @param baseDate æ—¥ä»˜ã‘æ–?—å?(YYYYMMDD) 296 * @param diff å·®åˆ??日数(éŽåŽ»ã®æ—¥ä»˜[+]ã€å°?¥ã®æ—¥ä»˜ã?[-]) 297 * 298 * @return çµæžœã®æ—¥ä»?YYYYMMDD) 299 */ 300 // private static String getDate( final String baseDate,final int diff ) { 301 // if ( baseDate == null || ( baseDate.length() != 8 ) ) { 302 // String errMsg = "引数 baseDate ã¯ã€YYYYMMDD å½¢å¼ã?æ—¥ä»˜ã‘æ–?—å?ã®ã¿ã§ã™ã?" 303 // + " baseDate=[" + baseDate + "]" ; 304 // throw new RuntimeException( errMsg ); 305 // } 306 // 307 // Calendar cal = getCalendar( baseDate ); 308 // cal.add( Calendar.DATE,diff ); 309 // String rtn = null; 310 // 311 // int calYear = cal.get( Calendar.YEAR ); 312 // int calMonth = cal.get( Calendar.MONTH ) + 1; 313 // int calDay = cal.get( Calendar.DATE ); 314 // rtn = String.valueOf( calYear ); 315 // if( calMonth < 10 ) { 316 // rtn = rtn + "0" + calMonth; 317 // } 318 // else { 319 // rtn = rtn + calMonth; 320 // } 321 // if( calDay < 10 ) { 322 // rtn = rtn + "0" + calDay; 323 // } 324 // else { 325 // rtn = rtn + calDay; 326 // } 327 // return rtn; 328 // } 329 330 }