javasrc
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[FrontPage]]
#highlighter(java,number){{
package mcframe.serverCU.CULA0020;
import mcframe.commonCore.lang.*;
import mcframe.commonCore.container.*;
import mcframe.commonCore.container.MCList.SortType;
import mcframe.commonCore.notice.*;
import mcframe.serverCore.logic.*;
import mcframe.serverCore.notice.MCMessagePool;
import static mcframe.serverCore.requester.MCTransactionM...
import static mcframe.serverCore.requester.MCTransactionM...
import static mcframe.serverCore.requester.MCTransactionM...
import static mcframe.serverCore.requester.MCTransactionM...
import mcframe.commonCore.annotation.EI;
import mcframe.commonCore.annotation.Rev;
import mcframe.commonCore.annotation.Rev.Pj;
import mcframe.commonCore.annotation.Rev.Cl;
import mcframe.commonC.constant.*;
import mcframe.commonCU.CUC0090.CUC_RowMapperWith;
import mcframe.serverC.db.*;
import mcframe.serverCU.CUL0020.ElmArgsR;
import static mcframe.commonC.notice.C_Msg.*;
import static mcframe.serverCU.CUL0010.CUL_MCDataUtil.*;
import static mcframe.serverCU.CUL0030.CUL_DbUtil.*;
import static mcframe.serverCU.CUL0050.CUL_AppSys.*;
//FMCB IMPORT START
import static mcframe.serverCore.requester.MCRequestObjec...
import static mcframe.serverCU.CUL0340.CUL_BatchLogManage...
import static mcframe.serverCU.CULA0020.Sql.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import javax.swing.JComponent;
import mcframe.commonCore.meta.MCMeta;
import mcframe.commonCore.resource.MCFormatConst;
import mcframe.commonCore.resource.MCLocaleConst;
import mcframe.commonCore.report.*;
import mcframe.commonCore.report.container.*;
import mcframe.commonCore.util.MCFileUtil;
import mcframe.commonCore.net.MCFtpClient;
import mcframe.serverCore.sys.MCSys;
import mcframe.commonCU.CUR0010.*;
import mcframe.serverCU.CUL0340.CUL_BatchLogger;
//FMCB IMPORT END
/**
* "CULA_BatchComReg"ロジッククラスです。<p>
*
* 実装仕様書から自動生成されるクラスです。
*/
@EI
public class CULA_BatchComReg extends CULA_BatchComReg_PJ {
//FMCB CUSTOM START
/** クラス定義 */
protected static final Class<CULA_BatchComReg> CLAZZ = C...
/** バックスラッシュ*/
protected static final String SPERSER = "\\";
/** 時分フォーマット */
protected static final String HHMM = "HHmm";
/** 時分秒フォーマット */
protected static final String HHMMSS = "HHmmss";
/** FTP送受信リトライ回数 */
protected static final String STR_FTP_RETRY_CNT = "FT...
/** FTP送受信待ち時間 */
protected static final String STR_FTP_WAIT_TIME = "FT...
/** FTP送信: */
protected static final String STR_FTP_SEND = "FTP送信...
/** FTP受信: */
protected static final String STR_FTP_RECEIVE = "FTP...
/** リモートディレクトリ */
protected static final String STR_REMOTE_DIR = "Remote D...
/** 送信で成功したファイルの件数 */
protected static final String STR_GET_FILES = "Get Files";
/** 回目 */
protected static final String STR_CNT = "回目";
/** 開始 */
protected static final String STR_FTP_START = "開始";
/** 終了 */
protected static final String STR_FTP_END = "終了";
/**
* <b>バッチ開始ログ登録処理</b>
* </br>
* 処理開始メッセージをバッチログに登録する。
* </br>
* @param batchCd バッチコード配列(3つまで可変)
*/
public static void insBatchStartLog(String... batchCd) {
//引数のバッチコードをチェックし、変換する
batchCd = object(CLAZZ).checkBatchCd(batchCd);
//メッセージの重複を避けるフラグ
boolean loggerFlg = object(CLAZZ).isMsgFlg(batchCd);
//バッチ機能名を取得する
String batchName = object(CLAZZ).getBatchName(batchCd);
//バッチロガーインスタンスを生成する
CUL_BatchLogger logger = object(CLAZZ).getLoggerInstanc...
//一回目のロガー作成の場合かつバッチ機能名を取得出来な...
if (isNull(batchName) && loggerFlg) {
//バッチコードマスタのワーニングメッセージを登録する
object(CLAZZ).writeWarMsg(logger, batchCd);
}
//バッチ開始登録処理を行う(メッセージ:CULA100I、バイ...
logger.writeProcessLog(CULA100I, batchName);
}
/**
* <b>業務経過ログ登録処理</b>
* </br>
* 引数のメッセージリストを全てバッチログに登録する。
* </br>
* @param msgList メッセージリスト
* @param batchCd バッチコード配列(3つまで可変)
*/
public static void insBizProcessLog(MCMessageList msgLis...
//引数のバッチコードをチェックし、変換する
batchCd = object(CLAZZ).checkBatchCd(batchCd);
//メッセージの重複を避けるフラグ
boolean loggerFlg = object(CLAZZ).isMsgFlg(batchCd);
//バッチ名称取得
String batchName = object(CLAZZ).getBatchName(batchCd);
//バッチロガーインスタンスを生成する
CUL_BatchLogger logger = object(CLAZZ).getLoggerInstanc...
//バッチ機能名を取得出来なかった場合
if (isNull(batchName) && loggerFlg) {
//バッチコードマスタのワーニングメッセージを登録する
object(CLAZZ).writeWarMsg(logger, batchCd);
}
//業務経過ログ登録処理を行う
logger.writeProcessLog(msgList);
}
/**
* <b>システムエラーログ登録処理</b>
* </br>
* 引数のエラーメッセージリストを全てバッチログに登録す...
* </br>
* @param msg エラーメッセージ
* @param batchCd バッチコード配列(3つまで可変)
*/
public static void insSysErrLog(MCMessage msg, String......
//引数のバッチコードをチェックし、変換する
batchCd = object(CLAZZ).checkBatchCd(batchCd);
//メッセージの重複を避けるフラグ
boolean loggerFlg = object(CLAZZ).isMsgFlg(batchCd);
//バッチ
String batchName = object(CLAZZ).getBatchName(batchCd);
//バッチロガーインスタンスを生成する
CUL_BatchLogger logger = object(CLAZZ).getLoggerInstanc...
//バッチ機能名を取得出来なかった場合
if (isNull(batchName) && loggerFlg) {
//バッチコードマスタのワーニングメッセージを登録する
object(CLAZZ).writeWarMsg(logger, batchCd);
}
//システムエラーログ登録処理を行う
logger.writeEndLog(msg);
}
/**
* <b>バッチ終了ログ登録処理</b>
* </br>
* バッチ終了ログメッセージをバッチログに登録する。
* </br>
* @param processKns 処理件数
* @param successKns 処理成功件数
* @param failureKns 処理失敗件数
* @param batchCd バッチコード配列(3つまで可変)
*/
public static void insBatchEndLog(MCNumber processKns, M...
//引数のバッチコードをチェックし、変換する
batchCd = object(CLAZZ).checkBatchCd(batchCd);
//メッセージの重複を避けるフラグ
boolean loggerFlg = object(CLAZZ).isMsgFlg(batchCd);
//バッチ機能名を取得する
String batchName = object(CLAZZ).getBatchName(batchCd);
//バッチロガーインスタンスを生成する
CUL_BatchLogger logger = object(CLAZZ).getLoggerInstanc...
//バッチ機能名を取得出来なかった場合
if (isNull(batchName) && loggerFlg) {
//バッチコードマスタのワーニングメッセージを登録する
object(CLAZZ).writeWarMsg(logger, batchCd);
}
//引数のバッチCDがバッチCD1のみの場合
if (batchCd.length == 1) {
//エンドログとしてバッチ終了登録処理を行う
//(メッセージ:CULA101I、バインド:バッチ機能名、処理...
logger.writeEndLog(CULA101I, batchName, processKns, su...
}
else {
//上記以外の場合、経過ログとしてバッチ終了登録処理を行う
//(メッセージ:CULA101I、バインド:バッチ機能名、処理...
logger.writeProcessLog(CULA101I, batchName, processKns...
}
}
/**
* <b>バッチ機能名取得</b>
* </br>
* 引数のバッチCDよりバッチコードマスタを検索し、バッ...
* </br>
* @param batchCd バッチコード配列(3つまで可変)
* @return バッチ機能名
*/
protected String getBatchName(String... batchCd) {
//バッチCDを編集する
StringBuffer bf = new StringBuffer(batchCd[0]);
bf.append(SPERSER);
//バッチCD2が存在する場合
if (batchCd.length >= 2) {
bf.append(batchCd[1]);
}
bf.append(SPERSER);
//バッチCD3が存在する場合
if (batchCd.length >= 3) {
bf.append(batchCd[2]);
}
bf.append(SPERSER);
//コンテナRowクラスを生成する
CM_BATCH_CD_R row = CM_BATCH_CD_R.create();
//バッチコードマスタのプライマリキー検索を行う
row.dbSelectKey(bf.toString());
//取得したバッチコードマスタ情報が一件もなかった場合
if (row.isEmpty()) {
//空白を返却する
return "";
}
//バッチコードマスタ情報.バッチ名称を返却する
return row.batch_nm();
}
/**
* <b>バッチロガー生成</b>
* </br>
* 引数のバッチCDの要素数に対応したロガーを取得する
* </br>
*
* @param batchCd バッチコード配列(3つまで可変)
* @return ロガー
*/
protected CUL_BatchLogger getLoggerInstance(String... ba...
CUL_BatchLogger logger = null;
//バッチロガーインスタンスを生成する
if (batchCd.length == 1) {
//引数.バッチCDが1つの場合
logger = getLogger(batchCd[0]);
}
else if (batchCd.length == 2) {
//引数.バッチCDが2つの場合
logger = getLogger(batchCd[0], batchCd[1]);
}
else if (batchCd.length == 3) {
//引数.バッチCDが3つの場合
logger = getLogger(batchCd[0], batchCd[1], batchCd[2]);
}
return logger;
}
/**
* <b>ロガーメッセージ判定</b>
* </br>
* 引数のバッチCDでロガーが作成されているか判定する
* </br>
*
* @param batchCd バッチコード配列(3つまで可変)
* @return ロガー生成1回目の場合:true、2回目以降の場合...
*/
protected boolean isMsgFlg(String... batchCd) {
//メッセージの重複を避けるフラグ
boolean loggerFlg = true;
try {
//バッチロガーインスタンスを生成する
if (batchCd.length == 1) {
//引数.バッチCDが1つの場合
createLogger(batchCd[0]);
}
else if (batchCd.length == 2) {
//引数.バッチCDが2つの場合
createLogger(batchCd[0], batchCd[1]);
}
else if (batchCd.length == 3) {
//引数.バッチCDが3つの場合
createLogger(batchCd[0], batchCd[1], batchCd[2]);
}
}
catch (Exception e) {
//2回目以降のロガークリエイトはfalseを設定
loggerFlg = false;
}
return loggerFlg;
}
/**
* <b>バッチコードマスタ不備メッセージ登録処理</b>
* </br>
* バッチコードマスタ未設定のワーニングメッセージを登録...
* </br>
* @param logger ロガー
* @param batchCd バッチコード配列(3つまで可変)
*/
protected void writeWarMsg(CUL_BatchLogger logger, Strin...
//ワーニングメッセージを登録する(メッセージ:CULA111W...
if (batchCd.length == 1) {
//引数.バッチCDが1つの場合
logger.writeProcessLog(CULA103W, batchCd[0], null, nul...
}
else if (batchCd.length == 2) {
//引数.バッチCDが2つの場合
logger.writeProcessLog(CULA103W, batchCd[0], batchCd[1...
}
else if (batchCd.length == 3) {
//引数.バッチCDが3つの場合
logger.writeProcessLog(CULA103W, batchCd[0], batchCd[1...
}
}
/**
* <b>引数チェック</b>
* </br>
* 引数で渡されたバッチCDの要素数チェックを行う
* </br>
* @param batchCd バッチCD配列
*/
protected String[] checkBatchCd(String... batchCd) {
//引数のバッチCDのlengthが0以下の場合
if (batchCd == null || batchCd.length <= 0) {
//バッチCD1を空白として設定する
String[] wkBatchCd = new String[1];
wkBatchCd[0] = "";
return wkBatchCd;
}
//引数のバッチCDの要素数を設定する
int batLength = batchCd.length;
//引数のバッチCDの要素数が4以上の場合要素数に3を設定...
if (3 < batLength) {
batLength = 3;
}
//要素数の数の配列を初期化する
String[] wkBatchCd = new String[batLength];
//引数のバッチCD要素数ループ処理を行う
for (int i = 0; i < batLength; i++) {
//引数のバッチCDがnullの場合
if (isNull(batchCd[i])) {
//空白を設定する
wkBatchCd[i] = "";
}
else {
//上記以外の場合、引数を設定する
wkBatchCd[i] = batchCd[i];
}
}
return wkBatchCd;
}
/**
* CSVファイルの出力処理
*
* @param fileName CSVファイル名
* @param rsltList 出力データリスト
* @param headRow ヘッダROW
*/
@SuppressWarnings("rawtypes")
public static void outPutCsv(String fileName, MCList rsl...
if (isNull(rsltList) || rsltList.isEmpty()) {
return;
}
File file = new File(fileName);
if (file.exists()) {
file.delete();
}
// CSV出力用のMCCSVFileの新規作成
MCCSVFile csvFile = new MCCSVFile();
// CSV出力用のReportSetの新規作成
MCReportSet repSet = CUR_BizDatFile.create();
// Listener追加
repSet.addWriteListener(new MCFileWriteListener() {
/**
* 出力カラムのメタの配列を変更
*/
@Override
public MCReportMeta[] metaFix(MCReportMeta[] rMetas, i...
ArrayList<MCReportMeta> list = new ArrayList<MCReport...
String[] colArr = r.getColumnPathArray();
MCFormatConst fmconst = MCLocaleConst.format(MCSys.us...
for (int i = 0; i < colArr.length; i++) {
String fmtStyle = "";
if (r.getMeta(colArr[i]).type().equals(MCDataType.DA...
fmtStyle = fmconst.getDateOutputPattern("YMD");
}
else if (r.getMeta(colArr[i]).type().equals(MCDataTy...
fmtStyle = fmconst.getDateOutputPattern("YMDHMS");
}
list.add(new MCReportMeta(r.getMeta(colArr[i]), colA...
}
return (MCReportMeta[]) list.toArray(new MCReportMeta...
}
});
// ReportSetの設定
csvFile.setReportSet(repSet);
// ファイルパスの設定
csvFile.setFilePath(fileName);
// ファイル出力モードの設定
csvFile.append(true);
// キャラクタセットの設定
csvFile.setCharset(MCCSVFile.ENCODE_UTF8);
// 文字列をダブルクォーテーションで囲むかどうかを設定する
csvFile.setDoubleQuotation(doubleQuotationFlg);
// 手動クローズモードの設定
csvFile.setManualClose(true);
// ヘッダ行出力
if (!isNull(headRow) && !headRow.isEmpty()) {
writeHeaderCsv(repSet, csvFile, headRow);
}
// CSVファイルを書き込む
// コンテナにデータを格納(ブロック種別は何でもいい)
repSet.addList("DUMMY", rsltList);
// 書き込み処理
csvFile.write();
csvFile.writeClose();
}
/**
* ファイル移動処理
*
* @param fPath 移動元フォルダ
* @param fName 移動元のファイル名
* @param bakFolder 移送先フォルダ
* @param toName 移動先のファイル名
*/
public static void moveToDstFolder(String fPath, String ...
String toName) {
// 移動元ファイルの存在チェック
if (isNullOr(fPath, fName)) {
throw new MCAppException(CULA120W, fName, fPath);
}
File fr = new File(fPath, fName);
if (!fr.exists()) {
throw new MCAppException(CULA120W, fName, fPath);
}
// 移動先フォルダの作成
tPath = MCReportFile.setSeparator(tPath);
File toDir = new File(tPath);
if (!toDir.exists()) {
MCFileUtil.mkDir(toDir);
}
// ファイル移動
File to = new File(tPath, toName);
if (to.exists()) {
to.delete();
}
if (!fr.renameTo(to)) {
throw new MCAppException(CULA121W, fName, fr.getAbsolu...
to.getAbsolutePath());
}
}
/**
* FTP送信処理
*
* @param ftpInfoR FTP接続情報
* @param batchCd バッチCD
* @return true/false
*/
public static boolean ftpSend(FtpInfoR ftpInfoR, String....
MCMessageList msgList = new MCMessageList();
// 繰り返し回数
int max = 0;
// 待ち時間(秒)
int wait = 0;
// システムパラメータが存在しない場合
if (isNull(getSysParm().a_ftp_retry_cnt())) {
// 存在しない場合
msgList.add(new MCMessage(CULA102W, STR_FTP_RETRY_CNT,
CC_SYS_PARM_KEY.A_FTP_RETRY_CNT));
insBizProcessLog(msgList, batchCd);
msgList.clear();
}
else {
max = Integer.valueOf(getSysParm().a_ftp_retry_cnt());
}
if (isNull(getSysParm().a_ftp_wait_time())) {
// 存在しない場合
msgList.add(new MCMessage(CULA102W, STR_FTP_WAIT_TIME,
CC_SYS_PARM_KEY.A_FTP_WAIT_TIME));
insBizProcessLog(msgList, batchCd);
msgList.clear();
}
else {
wait = Integer.valueOf(getSysParm().a_ftp_wait_time());
}
// 送信ファイルの存在チェック
if (isNull(ftpInfoR.local_dir()) || isNull(ftpInfoR.fna...
// 送信対象ないのログ
msgList.add(new MCMessage(CULA122I, ftpInfoR.local_dir...
insBizProcessLog(msgList, batchCd);
return false;
}
File fr = new File(ftpInfoR.local_dir(), ftpInfoR.fname...
if (!fr.exists()) {
// 送信対象ないのログ
msgList.add(new MCMessage(CULA122I, ftpInfoR.local_dir...
insBizProcessLog(msgList, batchCd);
return false;
}
// FTPクライアント作成
MCFtpClient ftpClnt = crtFtpClnt(ftpInfoR);
// 送信開始ログ出力
msgList.clear();
msgList.add(new MCMessage(CULA123I, ftpInfoR.local_dir(...
ftpInfoR.ftp_host(), ftpInfoR.ftp_user(), ftpInfoR.ft...
.fname()));
insBizProcessLog(msgList, batchCd);
int i = 1;
while (true) {
MCLog.write(CULA125I, STR_FTP_SEND + i + STR_CNT + " "...
boolean ret = ftpClnt.sendFile(ftpInfoR.local_dir(), f...
ftpInfoR.remote_dir(), ftpInfoR.fname());
MCLog.write(CULA125I, STR_FTP_SEND + i + STR_CNT + " "...
// 送信失敗の場合、エラーログ出力
if (!ret) {
msgList.clear();
msgList.add(new MCMessage(CULA126W, ftpInfoR.fname(),...
.getFailMCExceptionByFileName(ftpInfoR.fname()).get...
insBizProcessLog(msgList, batchCd);
}
else {
msgList.clear();
msgList.add(new MCMessage(CULA127I, ftpInfoR.fname()));
insBizProcessLog(msgList, batchCd);
}
if (ret || i++ > max) {
return ret;
}
try {
msgList.clear();
msgList.add(new MCMessage(CULA124W, wait, i - 1, max));
insBizProcessLog(msgList, batchCd);
Thread.sleep(1000 * wait);
}
catch (InterruptedException ex) {
// 何も処理しない
}
}
}
/**
* FTP受信処理
*
* @param ftpInfoR FTP接続情報
* @param fNameList 受信ファイル一覧
* @param batchCd バッチCD
* @return true/false
*/
public static boolean ftpRecv(FtpInfoR ftpInfoR, String....
MCMessageList msgList = new MCMessageList();
// 繰り返し回数
int max = 0;
// 待ち時間(秒)
int wait = 0;
// システムパラメータが存在しない場合
if (isNull(getSysParm().a_ftp_retry_cnt())) {
// 存在しない場合
msgList.add(new MCMessage(CULA102W, STR_FTP_RETRY_CNT,
CC_SYS_PARM_KEY.A_FTP_RETRY_CNT));
insBizProcessLog(msgList, batchCd);
msgList.clear();
}
else {
max = Integer.valueOf(getSysParm().a_ftp_retry_cnt());
}
if (isNull(getSysParm().a_ftp_wait_time())) {
// 存在しない場合
msgList.add(new MCMessage(CULA102W, STR_FTP_WAIT_TIME,
CC_SYS_PARM_KEY.A_FTP_WAIT_TIME));
insBizProcessLog(msgList, batchCd);
msgList.clear();
}
else {
wait = Integer.valueOf(getSysParm().a_ftp_wait_time());
}
// FTPクライアント作成
MCFtpClient ftpClnt = crtFtpClnt(ftpInfoR);
int i = 1;
while (true) {
// 開始ログ出力
msgList.clear();
msgList.add(new MCMessage(CULA128I, ftpInfoR.local_dir...
.remote_dir(), ftpInfoR.ftp_host(), ftpInfoR.ftp_use...
.transfer_typ(), ftpInfoR.ftp_opts()));
insBizProcessLog(msgList, batchCd);
MCLog.write(CULA125I, STR_FTP_RECEIVE + i + STR_CNT + ...
// 受信処理
boolean ret = ftpClnt
.receiveFile(ftpInfoR.remote_dir(), ftpInfoR.local_d...
String msg = STR_REMOTE_DIR + ftpInfoR.remote_dir() + ...
+ "[" + ftpClnt.getSucessFileNames().length + "] :" ...
if (ret && ftpClnt.getTargetFileNames().length == 0) {
msgList.clear();
msgList.add(new MCMessage(CULA129I));
insBizProcessLog(msgList, batchCd);
}
msgList.clear();
for (String fName : ftpClnt.getSucessFileNames()) {
// 受信成功のファイル
msg += " [" + fName + "]\n";
msgList.add(new MCMessage(CULA130I, fName));
}
insBizProcessLog(msgList, batchCd);
MCLog.write(new MCMessage(CULA125I, msg));
MCLog.write(CULA125I, STR_FTP_RECEIVE + i + STR_CNT + ...
msgList.clear();
for (String fName : ftpClnt.getFailFileNames()) {
msgList.add(new MCMessage(CULA131W, ftpInfoR.ftp_host...
.ftp_user(), ftpInfoR.remote_dir(), fName, ftpClnt
.getFailMCExceptionByFileName(fName).getMCMessage()...
}
insBizProcessLog(msgList, batchCd);
int failFileCnt = 0;
if (ftpClnt.getTargetFileNames().length != 0) {
failFileCnt = ftpClnt.getFailFileNames().length;
}
msgList.clear();
msgList.add(new MCMessage(CULA133I, ftpClnt.getTargetF...
ftpClnt.getSucessFileNames().length,
failFileCnt));
insBizProcessLog(msgList, batchCd);
if (ret || i++ > max) {
return ret;
}
try {
msgList.clear();
msgList.add(new MCMessage(CULA132W, wait, i - 1, max));
insBizProcessLog(msgList, batchCd);
Thread.sleep(1000 * wait);
}
catch (InterruptedException ex) {
// 気にしない
}
}
}
/**
* CSVファイルのヘッダーを出力する
*/
protected static void writeHeaderCsv(MCReportSet reportS...
BizDatFileR row = BizDatFileR.create();
String[] colArr = r.getColumnPathArray();
for (int i = 0; i < colArr.length; i++) {
row.addStringColumn(colArr[i], r.getStringNE(colArr[i]...
}
reportSet.addRow(row);
CSVFile.write();
reportSet.clear();
}
/**
* FTPクライアント作成
*
* @param ftpInfoR
* @return MCFtpClient
*/
protected static MCFtpClient crtFtpClnt(FtpInfoR ftpInfo...
MCFtpClient ftpClnt = null;
if (isNullOr(ftpInfoR.ftp_host(), ftpInfoR.ftp_user(), ...
dbTran().select(CULA0020_EZM_SDRV_SUB_SA01, null, ftpI...
}
ftpClnt = new MCFtpClient(ftpInfoR.ftp_host(), ftpInfoR...
if (!isNull(ftpInfoR.ftp_port())) {
ftpClnt.setPortNo(ftpInfoR.ftp_port().intValue());
}
ftpClnt.setFtpMode(
isSame(ftpInfoR.transfer_typ(), CC_ATRANSFER_TYP.STS....
MCFtpClient.STATUS_FILE_MODE : MCFtpClient.RENAME_MOD...
ftpClnt.setIsPassive(!isSame(ftpInfoR.ftp_mode(), CC_AF...
ftpClnt.setFtpOpts(ftpInfoR.ftp_opts());
if (!isNull(ftpInfoR.sts_fsuffix())) {
ftpClnt.setStatusFileSuffix(ftpInfoR.sts_fsuffix());
}
return ftpClnt;
}
/**
* 時分秒文字列チェック
*
* @param colNm 項目名
* @param value 時分秒文字列
* @param format 書式
* @param fileNm ファイル名
* @param lineNo 行番号
* @param msgList メッセージリスト
*/
public static void chkHhmmss(String colNm, String value,...
int lineNo, MCMessageList msgList) {
// 引数の時分秒文字列がNULL または 空文字の場合、何も...
if (isNull(value) || value.equals("")) {
return;
}
// 時分秒文字列の桁数チェック
if (!((format.equals(HHMM) && value.length() == 4)
|| (format.equals(HHMMSS) && value.length() == 6))) {
msgList.add(new MCMessage(CULA107W, fileNm, lineNo, co...
return;
}
// 時分秒文字列のフォーマットチェック
MCTimestamp test;
try {
if (format.equals(HHMMSS)) {
test = MCTimestamp.valueOf(1999, 01, 01,
MCNumber.valueOf(value.substring(0, 2)).intValue(),
MCNumber.valueOf(value.substring(2, 4)).intValue(),
MCNumber.valueOf(value.substring(4, 6)).intValue());
}
else {
test = MCTimestamp.valueOf(1999, 01, 01,
MCNumber.valueOf(value.substring(0, 2)).intValue(),
MCNumber.valueOf(value.substring(2, 4)).intValue());
}
}
catch (MCException ex) {
msgList.add(new MCMessage(CULA107W, fileNm, lineNo, co...
}
}
/**
* 文字列チェック
*
* @param colNm 項目名
* @param value 文字列
* @param format 書式
* @param fileNm ファイル名
* @param lineNo 行番号
* @param meta メタ
* @param msgList メッセージリスト
*/
public static void chkMeta(String colNm, String value, S...
String fileNm, int lineNo, MCMeta meta, MCMessageList ...
// 引数のメタがNULLの場合、何も処理しない
if (meta == null) {
return;
}
// 引数の文字列がNULL または 空文字の場合、何も処理し...
if (isNull(value) || value.isEmpty()) {
return;
}
if (meta.type().equals(MCDataType.STRING)) {
if (meta.length() < value.length()) {
msgList.add(new MCMessage(CULA109W, fileNm, lineNo, c...
.length()));
}
}
else if (meta.type().equals(MCDataType.NUMBER)) {
MCNumber numVal = MCNumber.ZERO;
try {
numVal = MCNumber.valueOf(value);
}
catch (MCException e) {
msgList.add(new MCMessage(CULA108W, fileNm, lineNo, c...
}
StringBuilder maxValue = new StringBuilder();
maxValue.append(rpad("", meta.length() - meta.scale(),...
maxValue.append(rpad(".", meta.scale() + 1, "9"));
if (numVal.gt(MCNumber.valueOf(maxValue.toString()))) {
msgList.add(new MCMessage(CULA110W, fileNm, lineNo, c...
meta.length() - meta.scale(), meta.scale()));
}
}
else if (meta.type().equals(MCDataType.BOOLEAN)) {
if (!isSame(value, MCNumber.ZERO.toString())
&& !isSame(value, MCNumber.ONE.toString())) {
msgList.add(new MCMessage(CULA111W, fileNm, lineNo, c...
.length(), meta.scale()));
}
}
else if (meta.type().equals(MCDataType.DATE)) {
try {
MCDate.valueOf(value, format);
}
catch (MCException e) {
msgList.add(new MCMessage(CULA107W, fileNm, lineNo, c...
}
}
else if (meta.type().equals(MCDataType.TIMESTAMP)) {
try {
MCTimestamp.valueOf(value, format);
}
catch (MCException e) {
msgList.add(new MCMessage(CULA107W, fileNm, lineNo, c...
}
}
}
//FMCB CUSTOM END
}
}}
終了行:
[[FrontPage]]
#highlighter(java,number){{
package mcframe.serverCU.CULA0020;
import mcframe.commonCore.lang.*;
import mcframe.commonCore.container.*;
import mcframe.commonCore.container.MCList.SortType;
import mcframe.commonCore.notice.*;
import mcframe.serverCore.logic.*;
import mcframe.serverCore.notice.MCMessagePool;
import static mcframe.serverCore.requester.MCTransactionM...
import static mcframe.serverCore.requester.MCTransactionM...
import static mcframe.serverCore.requester.MCTransactionM...
import static mcframe.serverCore.requester.MCTransactionM...
import mcframe.commonCore.annotation.EI;
import mcframe.commonCore.annotation.Rev;
import mcframe.commonCore.annotation.Rev.Pj;
import mcframe.commonCore.annotation.Rev.Cl;
import mcframe.commonC.constant.*;
import mcframe.commonCU.CUC0090.CUC_RowMapperWith;
import mcframe.serverC.db.*;
import mcframe.serverCU.CUL0020.ElmArgsR;
import static mcframe.commonC.notice.C_Msg.*;
import static mcframe.serverCU.CUL0010.CUL_MCDataUtil.*;
import static mcframe.serverCU.CUL0030.CUL_DbUtil.*;
import static mcframe.serverCU.CUL0050.CUL_AppSys.*;
//FMCB IMPORT START
import static mcframe.serverCore.requester.MCRequestObjec...
import static mcframe.serverCU.CUL0340.CUL_BatchLogManage...
import static mcframe.serverCU.CULA0020.Sql.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import javax.swing.JComponent;
import mcframe.commonCore.meta.MCMeta;
import mcframe.commonCore.resource.MCFormatConst;
import mcframe.commonCore.resource.MCLocaleConst;
import mcframe.commonCore.report.*;
import mcframe.commonCore.report.container.*;
import mcframe.commonCore.util.MCFileUtil;
import mcframe.commonCore.net.MCFtpClient;
import mcframe.serverCore.sys.MCSys;
import mcframe.commonCU.CUR0010.*;
import mcframe.serverCU.CUL0340.CUL_BatchLogger;
//FMCB IMPORT END
/**
* "CULA_BatchComReg"ロジッククラスです。<p>
*
* 実装仕様書から自動生成されるクラスです。
*/
@EI
public class CULA_BatchComReg extends CULA_BatchComReg_PJ {
//FMCB CUSTOM START
/** クラス定義 */
protected static final Class<CULA_BatchComReg> CLAZZ = C...
/** バックスラッシュ*/
protected static final String SPERSER = "\\";
/** 時分フォーマット */
protected static final String HHMM = "HHmm";
/** 時分秒フォーマット */
protected static final String HHMMSS = "HHmmss";
/** FTP送受信リトライ回数 */
protected static final String STR_FTP_RETRY_CNT = "FT...
/** FTP送受信待ち時間 */
protected static final String STR_FTP_WAIT_TIME = "FT...
/** FTP送信: */
protected static final String STR_FTP_SEND = "FTP送信...
/** FTP受信: */
protected static final String STR_FTP_RECEIVE = "FTP...
/** リモートディレクトリ */
protected static final String STR_REMOTE_DIR = "Remote D...
/** 送信で成功したファイルの件数 */
protected static final String STR_GET_FILES = "Get Files";
/** 回目 */
protected static final String STR_CNT = "回目";
/** 開始 */
protected static final String STR_FTP_START = "開始";
/** 終了 */
protected static final String STR_FTP_END = "終了";
/**
* <b>バッチ開始ログ登録処理</b>
* </br>
* 処理開始メッセージをバッチログに登録する。
* </br>
* @param batchCd バッチコード配列(3つまで可変)
*/
public static void insBatchStartLog(String... batchCd) {
//引数のバッチコードをチェックし、変換する
batchCd = object(CLAZZ).checkBatchCd(batchCd);
//メッセージの重複を避けるフラグ
boolean loggerFlg = object(CLAZZ).isMsgFlg(batchCd);
//バッチ機能名を取得する
String batchName = object(CLAZZ).getBatchName(batchCd);
//バッチロガーインスタンスを生成する
CUL_BatchLogger logger = object(CLAZZ).getLoggerInstanc...
//一回目のロガー作成の場合かつバッチ機能名を取得出来な...
if (isNull(batchName) && loggerFlg) {
//バッチコードマスタのワーニングメッセージを登録する
object(CLAZZ).writeWarMsg(logger, batchCd);
}
//バッチ開始登録処理を行う(メッセージ:CULA100I、バイ...
logger.writeProcessLog(CULA100I, batchName);
}
/**
* <b>業務経過ログ登録処理</b>
* </br>
* 引数のメッセージリストを全てバッチログに登録する。
* </br>
* @param msgList メッセージリスト
* @param batchCd バッチコード配列(3つまで可変)
*/
public static void insBizProcessLog(MCMessageList msgLis...
//引数のバッチコードをチェックし、変換する
batchCd = object(CLAZZ).checkBatchCd(batchCd);
//メッセージの重複を避けるフラグ
boolean loggerFlg = object(CLAZZ).isMsgFlg(batchCd);
//バッチ名称取得
String batchName = object(CLAZZ).getBatchName(batchCd);
//バッチロガーインスタンスを生成する
CUL_BatchLogger logger = object(CLAZZ).getLoggerInstanc...
//バッチ機能名を取得出来なかった場合
if (isNull(batchName) && loggerFlg) {
//バッチコードマスタのワーニングメッセージを登録する
object(CLAZZ).writeWarMsg(logger, batchCd);
}
//業務経過ログ登録処理を行う
logger.writeProcessLog(msgList);
}
/**
* <b>システムエラーログ登録処理</b>
* </br>
* 引数のエラーメッセージリストを全てバッチログに登録す...
* </br>
* @param msg エラーメッセージ
* @param batchCd バッチコード配列(3つまで可変)
*/
public static void insSysErrLog(MCMessage msg, String......
//引数のバッチコードをチェックし、変換する
batchCd = object(CLAZZ).checkBatchCd(batchCd);
//メッセージの重複を避けるフラグ
boolean loggerFlg = object(CLAZZ).isMsgFlg(batchCd);
//バッチ
String batchName = object(CLAZZ).getBatchName(batchCd);
//バッチロガーインスタンスを生成する
CUL_BatchLogger logger = object(CLAZZ).getLoggerInstanc...
//バッチ機能名を取得出来なかった場合
if (isNull(batchName) && loggerFlg) {
//バッチコードマスタのワーニングメッセージを登録する
object(CLAZZ).writeWarMsg(logger, batchCd);
}
//システムエラーログ登録処理を行う
logger.writeEndLog(msg);
}
/**
* <b>バッチ終了ログ登録処理</b>
* </br>
* バッチ終了ログメッセージをバッチログに登録する。
* </br>
* @param processKns 処理件数
* @param successKns 処理成功件数
* @param failureKns 処理失敗件数
* @param batchCd バッチコード配列(3つまで可変)
*/
public static void insBatchEndLog(MCNumber processKns, M...
//引数のバッチコードをチェックし、変換する
batchCd = object(CLAZZ).checkBatchCd(batchCd);
//メッセージの重複を避けるフラグ
boolean loggerFlg = object(CLAZZ).isMsgFlg(batchCd);
//バッチ機能名を取得する
String batchName = object(CLAZZ).getBatchName(batchCd);
//バッチロガーインスタンスを生成する
CUL_BatchLogger logger = object(CLAZZ).getLoggerInstanc...
//バッチ機能名を取得出来なかった場合
if (isNull(batchName) && loggerFlg) {
//バッチコードマスタのワーニングメッセージを登録する
object(CLAZZ).writeWarMsg(logger, batchCd);
}
//引数のバッチCDがバッチCD1のみの場合
if (batchCd.length == 1) {
//エンドログとしてバッチ終了登録処理を行う
//(メッセージ:CULA101I、バインド:バッチ機能名、処理...
logger.writeEndLog(CULA101I, batchName, processKns, su...
}
else {
//上記以外の場合、経過ログとしてバッチ終了登録処理を行う
//(メッセージ:CULA101I、バインド:バッチ機能名、処理...
logger.writeProcessLog(CULA101I, batchName, processKns...
}
}
/**
* <b>バッチ機能名取得</b>
* </br>
* 引数のバッチCDよりバッチコードマスタを検索し、バッ...
* </br>
* @param batchCd バッチコード配列(3つまで可変)
* @return バッチ機能名
*/
protected String getBatchName(String... batchCd) {
//バッチCDを編集する
StringBuffer bf = new StringBuffer(batchCd[0]);
bf.append(SPERSER);
//バッチCD2が存在する場合
if (batchCd.length >= 2) {
bf.append(batchCd[1]);
}
bf.append(SPERSER);
//バッチCD3が存在する場合
if (batchCd.length >= 3) {
bf.append(batchCd[2]);
}
bf.append(SPERSER);
//コンテナRowクラスを生成する
CM_BATCH_CD_R row = CM_BATCH_CD_R.create();
//バッチコードマスタのプライマリキー検索を行う
row.dbSelectKey(bf.toString());
//取得したバッチコードマスタ情報が一件もなかった場合
if (row.isEmpty()) {
//空白を返却する
return "";
}
//バッチコードマスタ情報.バッチ名称を返却する
return row.batch_nm();
}
/**
* <b>バッチロガー生成</b>
* </br>
* 引数のバッチCDの要素数に対応したロガーを取得する
* </br>
*
* @param batchCd バッチコード配列(3つまで可変)
* @return ロガー
*/
protected CUL_BatchLogger getLoggerInstance(String... ba...
CUL_BatchLogger logger = null;
//バッチロガーインスタンスを生成する
if (batchCd.length == 1) {
//引数.バッチCDが1つの場合
logger = getLogger(batchCd[0]);
}
else if (batchCd.length == 2) {
//引数.バッチCDが2つの場合
logger = getLogger(batchCd[0], batchCd[1]);
}
else if (batchCd.length == 3) {
//引数.バッチCDが3つの場合
logger = getLogger(batchCd[0], batchCd[1], batchCd[2]);
}
return logger;
}
/**
* <b>ロガーメッセージ判定</b>
* </br>
* 引数のバッチCDでロガーが作成されているか判定する
* </br>
*
* @param batchCd バッチコード配列(3つまで可変)
* @return ロガー生成1回目の場合:true、2回目以降の場合...
*/
protected boolean isMsgFlg(String... batchCd) {
//メッセージの重複を避けるフラグ
boolean loggerFlg = true;
try {
//バッチロガーインスタンスを生成する
if (batchCd.length == 1) {
//引数.バッチCDが1つの場合
createLogger(batchCd[0]);
}
else if (batchCd.length == 2) {
//引数.バッチCDが2つの場合
createLogger(batchCd[0], batchCd[1]);
}
else if (batchCd.length == 3) {
//引数.バッチCDが3つの場合
createLogger(batchCd[0], batchCd[1], batchCd[2]);
}
}
catch (Exception e) {
//2回目以降のロガークリエイトはfalseを設定
loggerFlg = false;
}
return loggerFlg;
}
/**
* <b>バッチコードマスタ不備メッセージ登録処理</b>
* </br>
* バッチコードマスタ未設定のワーニングメッセージを登録...
* </br>
* @param logger ロガー
* @param batchCd バッチコード配列(3つまで可変)
*/
protected void writeWarMsg(CUL_BatchLogger logger, Strin...
//ワーニングメッセージを登録する(メッセージ:CULA111W...
if (batchCd.length == 1) {
//引数.バッチCDが1つの場合
logger.writeProcessLog(CULA103W, batchCd[0], null, nul...
}
else if (batchCd.length == 2) {
//引数.バッチCDが2つの場合
logger.writeProcessLog(CULA103W, batchCd[0], batchCd[1...
}
else if (batchCd.length == 3) {
//引数.バッチCDが3つの場合
logger.writeProcessLog(CULA103W, batchCd[0], batchCd[1...
}
}
/**
* <b>引数チェック</b>
* </br>
* 引数で渡されたバッチCDの要素数チェックを行う
* </br>
* @param batchCd バッチCD配列
*/
protected String[] checkBatchCd(String... batchCd) {
//引数のバッチCDのlengthが0以下の場合
if (batchCd == null || batchCd.length <= 0) {
//バッチCD1を空白として設定する
String[] wkBatchCd = new String[1];
wkBatchCd[0] = "";
return wkBatchCd;
}
//引数のバッチCDの要素数を設定する
int batLength = batchCd.length;
//引数のバッチCDの要素数が4以上の場合要素数に3を設定...
if (3 < batLength) {
batLength = 3;
}
//要素数の数の配列を初期化する
String[] wkBatchCd = new String[batLength];
//引数のバッチCD要素数ループ処理を行う
for (int i = 0; i < batLength; i++) {
//引数のバッチCDがnullの場合
if (isNull(batchCd[i])) {
//空白を設定する
wkBatchCd[i] = "";
}
else {
//上記以外の場合、引数を設定する
wkBatchCd[i] = batchCd[i];
}
}
return wkBatchCd;
}
/**
* CSVファイルの出力処理
*
* @param fileName CSVファイル名
* @param rsltList 出力データリスト
* @param headRow ヘッダROW
*/
@SuppressWarnings("rawtypes")
public static void outPutCsv(String fileName, MCList rsl...
if (isNull(rsltList) || rsltList.isEmpty()) {
return;
}
File file = new File(fileName);
if (file.exists()) {
file.delete();
}
// CSV出力用のMCCSVFileの新規作成
MCCSVFile csvFile = new MCCSVFile();
// CSV出力用のReportSetの新規作成
MCReportSet repSet = CUR_BizDatFile.create();
// Listener追加
repSet.addWriteListener(new MCFileWriteListener() {
/**
* 出力カラムのメタの配列を変更
*/
@Override
public MCReportMeta[] metaFix(MCReportMeta[] rMetas, i...
ArrayList<MCReportMeta> list = new ArrayList<MCReport...
String[] colArr = r.getColumnPathArray();
MCFormatConst fmconst = MCLocaleConst.format(MCSys.us...
for (int i = 0; i < colArr.length; i++) {
String fmtStyle = "";
if (r.getMeta(colArr[i]).type().equals(MCDataType.DA...
fmtStyle = fmconst.getDateOutputPattern("YMD");
}
else if (r.getMeta(colArr[i]).type().equals(MCDataTy...
fmtStyle = fmconst.getDateOutputPattern("YMDHMS");
}
list.add(new MCReportMeta(r.getMeta(colArr[i]), colA...
}
return (MCReportMeta[]) list.toArray(new MCReportMeta...
}
});
// ReportSetの設定
csvFile.setReportSet(repSet);
// ファイルパスの設定
csvFile.setFilePath(fileName);
// ファイル出力モードの設定
csvFile.append(true);
// キャラクタセットの設定
csvFile.setCharset(MCCSVFile.ENCODE_UTF8);
// 文字列をダブルクォーテーションで囲むかどうかを設定する
csvFile.setDoubleQuotation(doubleQuotationFlg);
// 手動クローズモードの設定
csvFile.setManualClose(true);
// ヘッダ行出力
if (!isNull(headRow) && !headRow.isEmpty()) {
writeHeaderCsv(repSet, csvFile, headRow);
}
// CSVファイルを書き込む
// コンテナにデータを格納(ブロック種別は何でもいい)
repSet.addList("DUMMY", rsltList);
// 書き込み処理
csvFile.write();
csvFile.writeClose();
}
/**
* ファイル移動処理
*
* @param fPath 移動元フォルダ
* @param fName 移動元のファイル名
* @param bakFolder 移送先フォルダ
* @param toName 移動先のファイル名
*/
public static void moveToDstFolder(String fPath, String ...
String toName) {
// 移動元ファイルの存在チェック
if (isNullOr(fPath, fName)) {
throw new MCAppException(CULA120W, fName, fPath);
}
File fr = new File(fPath, fName);
if (!fr.exists()) {
throw new MCAppException(CULA120W, fName, fPath);
}
// 移動先フォルダの作成
tPath = MCReportFile.setSeparator(tPath);
File toDir = new File(tPath);
if (!toDir.exists()) {
MCFileUtil.mkDir(toDir);
}
// ファイル移動
File to = new File(tPath, toName);
if (to.exists()) {
to.delete();
}
if (!fr.renameTo(to)) {
throw new MCAppException(CULA121W, fName, fr.getAbsolu...
to.getAbsolutePath());
}
}
/**
* FTP送信処理
*
* @param ftpInfoR FTP接続情報
* @param batchCd バッチCD
* @return true/false
*/
public static boolean ftpSend(FtpInfoR ftpInfoR, String....
MCMessageList msgList = new MCMessageList();
// 繰り返し回数
int max = 0;
// 待ち時間(秒)
int wait = 0;
// システムパラメータが存在しない場合
if (isNull(getSysParm().a_ftp_retry_cnt())) {
// 存在しない場合
msgList.add(new MCMessage(CULA102W, STR_FTP_RETRY_CNT,
CC_SYS_PARM_KEY.A_FTP_RETRY_CNT));
insBizProcessLog(msgList, batchCd);
msgList.clear();
}
else {
max = Integer.valueOf(getSysParm().a_ftp_retry_cnt());
}
if (isNull(getSysParm().a_ftp_wait_time())) {
// 存在しない場合
msgList.add(new MCMessage(CULA102W, STR_FTP_WAIT_TIME,
CC_SYS_PARM_KEY.A_FTP_WAIT_TIME));
insBizProcessLog(msgList, batchCd);
msgList.clear();
}
else {
wait = Integer.valueOf(getSysParm().a_ftp_wait_time());
}
// 送信ファイルの存在チェック
if (isNull(ftpInfoR.local_dir()) || isNull(ftpInfoR.fna...
// 送信対象ないのログ
msgList.add(new MCMessage(CULA122I, ftpInfoR.local_dir...
insBizProcessLog(msgList, batchCd);
return false;
}
File fr = new File(ftpInfoR.local_dir(), ftpInfoR.fname...
if (!fr.exists()) {
// 送信対象ないのログ
msgList.add(new MCMessage(CULA122I, ftpInfoR.local_dir...
insBizProcessLog(msgList, batchCd);
return false;
}
// FTPクライアント作成
MCFtpClient ftpClnt = crtFtpClnt(ftpInfoR);
// 送信開始ログ出力
msgList.clear();
msgList.add(new MCMessage(CULA123I, ftpInfoR.local_dir(...
ftpInfoR.ftp_host(), ftpInfoR.ftp_user(), ftpInfoR.ft...
.fname()));
insBizProcessLog(msgList, batchCd);
int i = 1;
while (true) {
MCLog.write(CULA125I, STR_FTP_SEND + i + STR_CNT + " "...
boolean ret = ftpClnt.sendFile(ftpInfoR.local_dir(), f...
ftpInfoR.remote_dir(), ftpInfoR.fname());
MCLog.write(CULA125I, STR_FTP_SEND + i + STR_CNT + " "...
// 送信失敗の場合、エラーログ出力
if (!ret) {
msgList.clear();
msgList.add(new MCMessage(CULA126W, ftpInfoR.fname(),...
.getFailMCExceptionByFileName(ftpInfoR.fname()).get...
insBizProcessLog(msgList, batchCd);
}
else {
msgList.clear();
msgList.add(new MCMessage(CULA127I, ftpInfoR.fname()));
insBizProcessLog(msgList, batchCd);
}
if (ret || i++ > max) {
return ret;
}
try {
msgList.clear();
msgList.add(new MCMessage(CULA124W, wait, i - 1, max));
insBizProcessLog(msgList, batchCd);
Thread.sleep(1000 * wait);
}
catch (InterruptedException ex) {
// 何も処理しない
}
}
}
/**
* FTP受信処理
*
* @param ftpInfoR FTP接続情報
* @param fNameList 受信ファイル一覧
* @param batchCd バッチCD
* @return true/false
*/
public static boolean ftpRecv(FtpInfoR ftpInfoR, String....
MCMessageList msgList = new MCMessageList();
// 繰り返し回数
int max = 0;
// 待ち時間(秒)
int wait = 0;
// システムパラメータが存在しない場合
if (isNull(getSysParm().a_ftp_retry_cnt())) {
// 存在しない場合
msgList.add(new MCMessage(CULA102W, STR_FTP_RETRY_CNT,
CC_SYS_PARM_KEY.A_FTP_RETRY_CNT));
insBizProcessLog(msgList, batchCd);
msgList.clear();
}
else {
max = Integer.valueOf(getSysParm().a_ftp_retry_cnt());
}
if (isNull(getSysParm().a_ftp_wait_time())) {
// 存在しない場合
msgList.add(new MCMessage(CULA102W, STR_FTP_WAIT_TIME,
CC_SYS_PARM_KEY.A_FTP_WAIT_TIME));
insBizProcessLog(msgList, batchCd);
msgList.clear();
}
else {
wait = Integer.valueOf(getSysParm().a_ftp_wait_time());
}
// FTPクライアント作成
MCFtpClient ftpClnt = crtFtpClnt(ftpInfoR);
int i = 1;
while (true) {
// 開始ログ出力
msgList.clear();
msgList.add(new MCMessage(CULA128I, ftpInfoR.local_dir...
.remote_dir(), ftpInfoR.ftp_host(), ftpInfoR.ftp_use...
.transfer_typ(), ftpInfoR.ftp_opts()));
insBizProcessLog(msgList, batchCd);
MCLog.write(CULA125I, STR_FTP_RECEIVE + i + STR_CNT + ...
// 受信処理
boolean ret = ftpClnt
.receiveFile(ftpInfoR.remote_dir(), ftpInfoR.local_d...
String msg = STR_REMOTE_DIR + ftpInfoR.remote_dir() + ...
+ "[" + ftpClnt.getSucessFileNames().length + "] :" ...
if (ret && ftpClnt.getTargetFileNames().length == 0) {
msgList.clear();
msgList.add(new MCMessage(CULA129I));
insBizProcessLog(msgList, batchCd);
}
msgList.clear();
for (String fName : ftpClnt.getSucessFileNames()) {
// 受信成功のファイル
msg += " [" + fName + "]\n";
msgList.add(new MCMessage(CULA130I, fName));
}
insBizProcessLog(msgList, batchCd);
MCLog.write(new MCMessage(CULA125I, msg));
MCLog.write(CULA125I, STR_FTP_RECEIVE + i + STR_CNT + ...
msgList.clear();
for (String fName : ftpClnt.getFailFileNames()) {
msgList.add(new MCMessage(CULA131W, ftpInfoR.ftp_host...
.ftp_user(), ftpInfoR.remote_dir(), fName, ftpClnt
.getFailMCExceptionByFileName(fName).getMCMessage()...
}
insBizProcessLog(msgList, batchCd);
int failFileCnt = 0;
if (ftpClnt.getTargetFileNames().length != 0) {
failFileCnt = ftpClnt.getFailFileNames().length;
}
msgList.clear();
msgList.add(new MCMessage(CULA133I, ftpClnt.getTargetF...
ftpClnt.getSucessFileNames().length,
failFileCnt));
insBizProcessLog(msgList, batchCd);
if (ret || i++ > max) {
return ret;
}
try {
msgList.clear();
msgList.add(new MCMessage(CULA132W, wait, i - 1, max));
insBizProcessLog(msgList, batchCd);
Thread.sleep(1000 * wait);
}
catch (InterruptedException ex) {
// 気にしない
}
}
}
/**
* CSVファイルのヘッダーを出力する
*/
protected static void writeHeaderCsv(MCReportSet reportS...
BizDatFileR row = BizDatFileR.create();
String[] colArr = r.getColumnPathArray();
for (int i = 0; i < colArr.length; i++) {
row.addStringColumn(colArr[i], r.getStringNE(colArr[i]...
}
reportSet.addRow(row);
CSVFile.write();
reportSet.clear();
}
/**
* FTPクライアント作成
*
* @param ftpInfoR
* @return MCFtpClient
*/
protected static MCFtpClient crtFtpClnt(FtpInfoR ftpInfo...
MCFtpClient ftpClnt = null;
if (isNullOr(ftpInfoR.ftp_host(), ftpInfoR.ftp_user(), ...
dbTran().select(CULA0020_EZM_SDRV_SUB_SA01, null, ftpI...
}
ftpClnt = new MCFtpClient(ftpInfoR.ftp_host(), ftpInfoR...
if (!isNull(ftpInfoR.ftp_port())) {
ftpClnt.setPortNo(ftpInfoR.ftp_port().intValue());
}
ftpClnt.setFtpMode(
isSame(ftpInfoR.transfer_typ(), CC_ATRANSFER_TYP.STS....
MCFtpClient.STATUS_FILE_MODE : MCFtpClient.RENAME_MOD...
ftpClnt.setIsPassive(!isSame(ftpInfoR.ftp_mode(), CC_AF...
ftpClnt.setFtpOpts(ftpInfoR.ftp_opts());
if (!isNull(ftpInfoR.sts_fsuffix())) {
ftpClnt.setStatusFileSuffix(ftpInfoR.sts_fsuffix());
}
return ftpClnt;
}
/**
* 時分秒文字列チェック
*
* @param colNm 項目名
* @param value 時分秒文字列
* @param format 書式
* @param fileNm ファイル名
* @param lineNo 行番号
* @param msgList メッセージリスト
*/
public static void chkHhmmss(String colNm, String value,...
int lineNo, MCMessageList msgList) {
// 引数の時分秒文字列がNULL または 空文字の場合、何も...
if (isNull(value) || value.equals("")) {
return;
}
// 時分秒文字列の桁数チェック
if (!((format.equals(HHMM) && value.length() == 4)
|| (format.equals(HHMMSS) && value.length() == 6))) {
msgList.add(new MCMessage(CULA107W, fileNm, lineNo, co...
return;
}
// 時分秒文字列のフォーマットチェック
MCTimestamp test;
try {
if (format.equals(HHMMSS)) {
test = MCTimestamp.valueOf(1999, 01, 01,
MCNumber.valueOf(value.substring(0, 2)).intValue(),
MCNumber.valueOf(value.substring(2, 4)).intValue(),
MCNumber.valueOf(value.substring(4, 6)).intValue());
}
else {
test = MCTimestamp.valueOf(1999, 01, 01,
MCNumber.valueOf(value.substring(0, 2)).intValue(),
MCNumber.valueOf(value.substring(2, 4)).intValue());
}
}
catch (MCException ex) {
msgList.add(new MCMessage(CULA107W, fileNm, lineNo, co...
}
}
/**
* 文字列チェック
*
* @param colNm 項目名
* @param value 文字列
* @param format 書式
* @param fileNm ファイル名
* @param lineNo 行番号
* @param meta メタ
* @param msgList メッセージリスト
*/
public static void chkMeta(String colNm, String value, S...
String fileNm, int lineNo, MCMeta meta, MCMessageList ...
// 引数のメタがNULLの場合、何も処理しない
if (meta == null) {
return;
}
// 引数の文字列がNULL または 空文字の場合、何も処理し...
if (isNull(value) || value.isEmpty()) {
return;
}
if (meta.type().equals(MCDataType.STRING)) {
if (meta.length() < value.length()) {
msgList.add(new MCMessage(CULA109W, fileNm, lineNo, c...
.length()));
}
}
else if (meta.type().equals(MCDataType.NUMBER)) {
MCNumber numVal = MCNumber.ZERO;
try {
numVal = MCNumber.valueOf(value);
}
catch (MCException e) {
msgList.add(new MCMessage(CULA108W, fileNm, lineNo, c...
}
StringBuilder maxValue = new StringBuilder();
maxValue.append(rpad("", meta.length() - meta.scale(),...
maxValue.append(rpad(".", meta.scale() + 1, "9"));
if (numVal.gt(MCNumber.valueOf(maxValue.toString()))) {
msgList.add(new MCMessage(CULA110W, fileNm, lineNo, c...
meta.length() - meta.scale(), meta.scale()));
}
}
else if (meta.type().equals(MCDataType.BOOLEAN)) {
if (!isSame(value, MCNumber.ZERO.toString())
&& !isSame(value, MCNumber.ONE.toString())) {
msgList.add(new MCMessage(CULA111W, fileNm, lineNo, c...
.length(), meta.scale()));
}
}
else if (meta.type().equals(MCDataType.DATE)) {
try {
MCDate.valueOf(value, format);
}
catch (MCException e) {
msgList.add(new MCMessage(CULA107W, fileNm, lineNo, c...
}
}
else if (meta.type().equals(MCDataType.TIMESTAMP)) {
try {
MCTimestamp.valueOf(value, format);
}
catch (MCException e) {
msgList.add(new MCMessage(CULA107W, fileNm, lineNo, c...
}
}
}
//FMCB CUSTOM END
}
}}
ページ名: