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.io.File; 019 import java.util.ArrayList; 020 import java.util.List; 021 022 import org.opengion.fukurou.db.Transaction; 023 import org.opengion.fukurou.util.ApplicationInfo; 024 import org.opengion.fukurou.util.FileUtil; 025 026 /** 027 * ä¼é?è¦æ±‚ã«å¯¾ã—ã¦ã€ãƒ•ァイルã¾ãŸã?ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’スã‚ャンã—ã?ãれã«å«ã¾ã‚Œã‚‹ 028 * ファイルã®çµ¶å¯¾ãƒ‘スã®ãƒªã‚¹ãƒˆã‚’å–å¾—ã—ã¾ã™ã? 029 * 030 * ä¼é?定義マスタã®èªå–対象ã¯ã€ã‚¹ã‚ャン対象ã®ãƒ•ァイルã¾ãŸã?ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’指定ã—ã¾ã™ã? 031 * 処ç?®Ÿè¡Œå¾Œã?ã€æ£å¸¸çµ‚äº?—ãŸå?åˆã?ã€ã‚¹ã‚ャンã—ãŸãƒ•ァイルを削除ã—ã¾ã™ã? 032 * ä½?—ã€èªå–パラメーターã«"NODEL"を指定ã—ãŸå?åˆã?ファイルã®å‰Šé™¤ã¯è¡Œã‚れã¾ã›ã‚“ã€? 033 * ã¾ãŸã?エラーãŒç™ºç”Ÿã—ãŸå?åˆã?èªå–パラメーターã®è¨å®šã«é–¢ã‚らãšãƒ•ァイルã®å‰Šé™¤ã¯ 034 * 行ã‚れã¾ã›ã‚“ã€? 035 * 036 * èªå–対象ã«ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’指定ã—ãŸå?åˆã?ã€å?èµ·çš?«ã‚µãƒ–フォルãƒ?‚‚スã‚ャンã•れã¾ã™ã? 037 * 038 * @og.group ä¼é?シスãƒ?ƒ 039 * 040 * @version 5.0 041 * @author Hiroki.Nakamura 042 * @since JDK1.6 043 */ 044 public class TransferRead_FILELIST implements TransferRead { 045 046 // æ›´æ–°(削除)対象ã®ãƒ•ァイルå?é…å?) 047 private String[] fileNames = null; 048 049 /** 050 * ファイルã¾ãŸã?ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’スã‚ャンã—ファイルã®çµ¶å¯¾ãƒ‘スã®ãƒªã‚¹ãƒˆã‚’å–å¾—ã—ã¾ã™ã? 051 * 052 * @og.rev 5.4.3.2 (2011/12/06) コピã?ä¸ã®ãƒ•ァイル判定追åŠ? 053 * @og.rev 5.5.2.4 (2012/05/16) é…å?ã‚’è¿”ã™å ´åˆã?ã€å?部表ç¾ã‚’暴露ã—ãªã?‚ˆã?«ã€clone ã‚’è¿”ã—ã¾ã™ã? 054 * 055 * @param config ä¼é?è¨å®šã‚ªãƒ–ジェクãƒ? 056 * @param tran トランザクションオブジェクãƒ? 057 * 058 * @return ファイルä¸?¦§(é…å?) 059 */ 060 @Override 061 public String[] read( final TransferConfig config, final Transaction tran ) { 062 File file = new File( config.getReadObj() ); 063 if( !file.exists() ) { 064 String errMsg = "スã‚ャン対象ã®ãƒ•ァイル/ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã€?FILE=" + file.getAbsolutePath() + "]"; 065 throw new RuntimeException( errMsg ); 066 } 067 068 List<String> list = new ArrayList<String>(); 069 FileUtil.getFileList( file, false, list , false); // 5.4.3.2 コピã?判定追åŠ? 070 071 // fileNames = list.toArray( new String[0] ); 072 fileNames = list.toArray( new String[list.size()] ); 073 074 // return fileNames; 075 return fileNames.clone(); 076 } 077 078 /** 079 * æ›´æ–°(削除)対象ã®ãƒ•ァイルå?é…å?)ã‚’è¿”ã—ã¾ã™ã? 080 * 081 * @og.rev 5.5.2.4 (2012/05/16) é…å?ã‚’è¿”ã™å ´åˆã?ã€å?部表ç¾ã‚’暴露ã—ãªã?‚ˆã?«ã€clone ã‚’è¿”ã—ã¾ã™ã? 082 * 083 * @return ファイルå?é…å?) 084 */ 085 public String[] getKeys() { 086 // return fileNames; 087 String[] rtn = null ; 088 if( fileNames != null ) { rtn = fileNames.clone(); } 089 return rtn ; 090 } 091 092 /** 093 * æ›´æ–°(削除)対象ã®ãƒ•ァイルå?é…å?)ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 094 * 095 * @og.rev 5.5.2.4 (2012/05/16) å‚ç?ã®æ ¼ç´ã«ã¯ã€System.arraycopy を使ã?¾ã™ã? 096 * 097 * @param keys ファイルå?é…å?) 098 */ 099 public void setKeys( final String[] keys ) { 100 // fileNames = keys; 101 if( keys != null ) { 102 int size = keys.length ; 103 fileNames = new String[size]; 104 System.arraycopy( keys,0,fileNames,0,size ); 105 } 106 else { 107 fileNames = null; 108 } 109 } 110 111 /** 112 * èªå–ã—ãŸä¼é?ãƒ??ã‚¿ã®ãƒ˜ãƒƒãƒ??ãƒ??ã‚¿ã®çжæ³ã‚’'2'(抜å?済ã¿)ã«æ›´æ–°ã—ã¾ã™ã? 113 * 更新対象ã®é€šç•ªNOã«ã¤ã?¦ã¯ã€{@link #setKeys(String[])}ã§å¤–部ã‹ã‚‰ã‚»ãƒ?ƒˆã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã? 114 * 115 * @param config ä¼é?è¨å®šã‚ªãƒ–ジェクãƒ? 116 * @param tran トランザクションオブジェクãƒ? 117 * @see #setKeys(String[]) 118 */ 119 @Override 120 public void complete( final TransferConfig config, final Transaction tran ) { 121 if( fileNames == null || fileNames.length == 0 ) { return; } 122 // èªå–パラメーターã«"NODEL"ãŒæŒ‡å®šã•れã¦ã?‚‹å ´åˆã?ã€ã‚¹ã‚ャンã—ãŸãƒ•ァイルを削除ã—ãªã?? 123 if( "NODEL".equalsIgnoreCase( config.getReadPrm() ) ) { return; } 124 125 for( String fileName : fileNames ) { 126 File file = new File( fileName ); 127 if( !file.exists() ) { 128 String errMsg = "ファイルãŒå˜åœ¨ã—ã¾ã›ã‚“ã€?FILE=" + file.getAbsolutePath() + "]"; 129 throw new RuntimeException( errMsg ); 130 } 131 132 boolean rtn = file.delete(); 133 if( !rtn ) { 134 String errMsg = "ファイルã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€?FILE=" + file.getAbsolutePath() + "]"; 135 throw new RuntimeException( errMsg ); 136 } 137 } 138 } 139 140 /** 141 * (ã“ã“ã§ã¯ä½•ã‚‚ã—ã¾ã›ã‚“) 142 * 143 * @param config ä¼é?è¨å®šã‚ªãƒ–ジェクãƒ? 144 * @param appInfo DBæŽ¥ç¶šæƒ…å ± 145 */ 146 @Override 147 public void error( final TransferConfig config, final ApplicationInfo appInfo ) { 148 } 149 }