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 }