//package com.eactive.eai.inbound.remote;
//
//import com.eactive.eai.batch.common.CalendarUtil;
//import com.eactive.eai.common.property.PropManager;
//import com.eactive.eai.common.util.DatetimeUtil;
//
//import java.io.File;
//import java.util.Date;
//
//public class FTPTransferByScript extends CommonTransfer
//{
//
//	//리모트 FTP 전송 프라퍼티 정보
//	public static final String PROP_GROUP_REMOTE_TRANSFER_FTP  = "RemoteTransferFtpInfo";
//	public static final String PROP_FTP_SEND_SCRIPT_PATH       = "FTP_SEND_SCRIPT_PATH";  //FTP 송신 쉘스크립트 경로 (전체 경로)
//	public static final String PROP_FTP_RECV_SCRIPT_PATH       = "FTP_RECV_SCRIPT_PATH";  //FTP 수신 쉘스크립트 경로 (전체 경로)
//
//	private static String getPropFtpSendScriptPath() throws Exception {
//		String propValue = PropManager.getInstance().getProperty(PROP_GROUP_REMOTE_TRANSFER_FTP, PROP_FTP_SEND_SCRIPT_PATH);
//		if (propValue == null) throw new Exception("'FTP 송신 쉘스크립트 파일' 프라퍼티 정보가 없습니다. (PropGroupName:"+ PROP_GROUP_REMOTE_TRANSFER_FTP +", PropName:"+ PROP_FTP_SEND_SCRIPT_PATH +")");
//		return propValue;
//	}
//
//	private static String getPropFtpRecvScriptPath() throws Exception {
//		String propValue = PropManager.getInstance().getProperty(PROP_GROUP_REMOTE_TRANSFER_FTP, PROP_FTP_RECV_SCRIPT_PATH);
//		if (propValue == null) throw new Exception("'FTP 수신 쉘스크립트 파일' 프라퍼티 정보가 없습니다. (PropGroupName:"+ PROP_GROUP_REMOTE_TRANSFER_FTP +", PropName:"+ PROP_FTP_RECV_SCRIPT_PATH +")");
//		return propValue;
//	}
//
//
//
//	//-------------------------------------------------------------------------------------------
//	// 리모트서버로 실제파일 송신, 송신여부 리턴. (System FTP Shell Command 수행)
//	//-------------------------------------------------------------------------------------------
//	public void sendFile(RemoteServerVO remoteServerVO, String eaiDir, String eaiFile, String remoteDir, String remoteFile) throws Exception {
//
//
//		logger.info("[리모트송수신] [FTP_Script] ■ EAI→Remote 파일 FTP 송신 시작...... (Runtime Script 사용)");
//		logger.info("[리모트송수신] [FTP_Script] ⓟ 리모트 서버 VO : ["+ remoteServerVO +"]");
//		logger.info("[리모트송수신] [FTP_Script] ⓟ EAI    경로    : ["+ eaiDir +"]");
//		logger.info("[리모트송수신] [FTP_Script] ⓟ EAI    파일    : ["+ eaiFile +"]");
//		logger.info("[리모트송수신] [FTP_Script] ⓟ 리모트 경로    : ["+ remoteDir +"]");
//		logger.info("[리모트송수신] [FTP_Script] ⓟ 리모트 파일    : ["+ remoteFile +"]");
//
//		//파라미터 체크
//		if (remoteServerVO == null) throw new Exception("{리모트서버 VO} 파라미터 오류");
//		if (eaiDir.equals("")) throw new Exception("{EAI경로} 파라미터 오류");
//		if (eaiFile.equals("")) throw new Exception("{EAI파일} 파라미터 오류");
//		if (remoteDir.equals("")) throw new Exception("{리모트경로} 파라미터 오류");
//		if (remoteFile.equals("")) throw new Exception("{리모트파일} 파라미터 오류");
//
//		//파일전송 로그정보 설정
//		if (isLogging) {
//			if (logInfo==null) logInfo = new RemoteTransferLogVO();
//			logInfo.setRemoteServerVO   (remoteServerVO);
//			logInfo.setRemoteServerId   (remoteServerVO.getRemoteServerId());
//			logInfo.setSendRecvType     (DIRECTION_SEND);
//			logInfo.setTransferType     (TRANSFER_TYPE_FTP);
//			logInfo.setEaiFilePath      (eaiDir);
//			logInfo.setEaiFileName      (eaiFile);
//			logInfo.setRemoteFilePath   (remoteDir);
//			logInfo.setRemoteFileName   (remoteFile);
//			logInfo.setFransferStartTime(CalendarUtil.getCurrentTimeNoDash());
//			File f = new File(eaiDir, eaiFile);
//			logInfo.setFileSize         (f.length()+"");
//			logInfo.setFileLastModified (DatetimeUtil.getFormattedDate("yyyyMMddHHmmssSSS", new Date(f.lastModified())));
//		}
//
///*
//#!/bin/sh
//
//REMOTE_IP=$1
//REMOTE_PORT=$2
//USER_ID=$3
//PASSWORD=$4
//EAI_DIR=$5
//EAI_FILE=$6
//REMOTE_DIR=$7
//REMOTE_FILE=$8
//
//cd ${EAI_DIR}
//
//ftp -n ${REMOTE_IP} ${REMOTE_PORT} <<END_SCRIPT
//user ${USER_ID} ${PASSWORD}
//cd ${REMOTE_DIR}
//put ${EAI_FILE}
//rename ${EAI_FILE} ${REMOTE_FILE}
//quit
//END_SCRIPT
//
//exit 0
//*/
//		//1. System FTP Shell 명령어 생성
///*		
//		String command = getPropFtpSendScriptPath() +" "+ remoteServerVO.getRemoteServerIP()
//		                            +" "+ remoteServerVO.getRemoteFtpPort()
//		                            +" "+ remoteServerVO.getRemoteUserId()
//		                            +" "+ remoteServerVO.getRemotePassword()
//		                            +" "+ eaiDir
//		                            +" "+ eaiFile
//		                            +" "+ remoteDir
//		                            +" "+ remoteFile;
//		                            */
//
//		String[] command = new String[9];
//		command[0] = getPropFtpSendScriptPath();
//		command[1] = remoteServerVO.getRemoteServerIP();
//        command[2] = remoteServerVO.getRemoteFtpPort();
//        command[3] = remoteServerVO.getRemoteUserId();
//        command[4] = remoteServerVO.getRemotePassword();
//        command[5] = eaiDir;
//        command[6] = eaiFile;
//        command[7] = remoteDir;
//        command[8] = remoteFile;
//		
//		//2. System FTP Shell 명령어를 Runtime 으로 실행
//		this.runSystemScript(command);
//
//		//파일전송 로그정보 설정
//		if (isLogging) logInfo.setFransferEndTime  (CalendarUtil.getCurrentTimeNoDash());
//
//		logger.info("[리모트송수신] [FTP_Script] ■ EAI→Remote 파일 FTP 송신 완료.");
//	}
//
//	//-------------------------------------------------------------------------------------------
//	// 리모트서버로 부터 실제파일 수신, 수신여부 리턴. (System FTP Shell Command 수행)
//	//-------------------------------------------------------------------------------------------
//	public void receiveFile(RemoteServerVO remoteServerVO, String remoteDir, String remoteFile, String eaiDir, String eaiFile) throws Exception {
//
//		logger.info("[리모트송수신] [FTP_Script] ■ Remote→EAI 파일 FTP 수신 시작...... (Runtime Script 사용)");
//		logger.info("[리모트송수신] [FTP_Script] ⓟ 리모트 서버 VO : ["+ remoteServerVO +"]");
//		logger.info("[리모트송수신] [FTP_Script] ⓟ 리모트 경로    : ["+ remoteDir +"]");
//		logger.info("[리모트송수신] [FTP_Script] ⓟ 리모트 파일    : ["+ remoteFile +"]");
//		logger.info("[리모트송수신] [FTP_Script] ⓟ EAI    경로    : ["+ eaiDir +"]");
//		logger.info("[리모트송수신] [FTP_Script] ⓟ EAI    파일    : ["+ eaiFile +"]");
//
//		//파라미터 체크
//		if (remoteServerVO == null) throw new Exception("{리모트서버 VO} 파라미터 오류");
//		if (remoteDir.equals("")) throw new Exception("{리모트경로} 파라미터 오류");
//		if (remoteFile.equals("")) throw new Exception("{리모트파일} 파라미터 오류");
//		if (eaiDir.equals("")) throw new Exception("{EAI경로} 파라미터 오류");
//		if (eaiFile.equals("")) throw new Exception("{EAI파일} 파라미터 오류");
//
//
//		//파일전송 로그정보 설정
//		if (isLogging) {
//			if (logInfo==null) logInfo = new RemoteTransferLogVO();
//			logInfo.setRemoteServerVO   (remoteServerVO);
//			logInfo.setRemoteServerId   (remoteServerVO.getRemoteServerId());
//			logInfo.setSendRecvType     (DIRECTION_RECEIVE);
//			logInfo.setTransferType     (TRANSFER_TYPE_FTP);
//			logInfo.setEaiFilePath      (eaiDir);
//			logInfo.setEaiFileName      (eaiFile);
//			logInfo.setRemoteFilePath   (remoteDir);
//			logInfo.setRemoteFileName   (remoteFile);
//			logInfo.setFransferStartTime(CalendarUtil.getCurrentTimeNoDash());
//		}
//
//
///*
//#!/bin/sh
//
//REMOTE_IP=$1
//REMOTE_PORT=$2
//USER_ID=$3
//PASSWORD=$4
//REMOTE_DIR=$5
//REMOTE_FILE=$6
//EAI_DIR=$7
//EAI_FILE=$8
//
//cd ${EAI_DIR}
//
//ftp -n ${REMOTE_IP} ${REMOTE_PORT} <<END_SCRIPT
//user ${USER_ID} ${PASSWORD}
//cd ${REMOTE_DIR}
//get ${REMOTE_FILE}
//quit
//END_SCRIPT
//
//if [ "${EAI_FILE}" != "" -a "${EAI_FILE}" != "${REMOTE_FILE}" ]
//then
//	mv ${REMOTE_FILE} ${EAI_FILE}
//fi
//
//exit 0
//*/
//		//1. System FTP Shell 명령어 생성
///*	
//		String command = getPropFtpRecvScriptPath() +" "+ remoteServerVO.getRemoteServerIP()
//		                            +" "+ remoteServerVO.getRemoteFtpPort()
//		                            +" "+ remoteServerVO.getRemoteUserId()
//		                            +" "+ remoteServerVO.getRemotePassword()
//		                            +" "+ remoteDir
//		                            +" "+ remoteFile
//		                            +" "+ eaiDir
//		                            +" "+ eaiFile;
//*/
//		String[] command = new String[9];
//		command[0] = getPropFtpRecvScriptPath();
//		command[1] = remoteServerVO.getRemoteServerIP();
//        command[2] = remoteServerVO.getRemoteFtpPort();
//        command[3] = remoteServerVO.getRemoteUserId();
//        command[4] = remoteServerVO.getRemotePassword();
//        command[5] = remoteDir;
//        command[6] = remoteFile;
//        command[7] = eaiDir;
//        command[8] = eaiFile;
//
//		//2. System FTP Shell 명령어를 Runtime 으로 실행
//		this.runSystemScript(command);
//
//		//파일전송 로그정보 설정
//		if (isLogging) {
//			File f = new File(eaiDir, eaiFile);
//			logInfo.setFileSize         (f.length()+"");
//			logInfo.setFileLastModified (DatetimeUtil.getFormattedDate("yyyyMMddHHmmssSSS", new Date(f.lastModified())));
//			logInfo.setFransferEndTime  (CalendarUtil.getCurrentTimeNoDash());
//		}
//
//		logger.info("[리모트송수신] [FTP_Script] ■ Remote→EAI 파일 FTP 수신 완료.");
//	}
//
//
//
//	protected void runSystemScript(String[] command) throws Exception {
//
//		//command Runtime 실행
//		super.runSystemScript(command);  //exit value가 0(정상) 이 아닌경우 throw Exception
//
//		//exit value가 0(정상) 인 경우에도 에러메시지를 체크하여 오류 체크
//        //0 byte 파일을 복사할때 '리턴된 0 인쇄 여부' 메시지 발생함 -> 오류로 간주 안함
//		if (!super.scriptErrorMsg.equals("") && super.scriptErrorMsg.indexOf("리턴된 0 인쇄 여부") < 0) {
//			logInfo.setResultCode(RESULT_CODE_UNEXPECTED_ERROR);
//			throw new Exception("Runtime.Exec 으로 실행한 FTP Command 결과가 정상이 아닙니다.\n caused by..."+ super.scriptErrorMsg);
//		}
//        
//		//exit value가 0(정상) 인 경우에도 output메시지를 체크하여 오류 체크
//        //ftp 리턴코드 값이 500 번대로 시작하면 오류임 (5.547e-320초 동안... .일케 시작하는 문장도 있음->제외)
//        String[] outputMsgLines = super.scriptOutputMsg.split("\n");
//        for (int i=0; i<outputMsgLines.length; i++) {
//            if (outputMsgLines[i].startsWith("5") && !outputMsgLines[i].startsWith("5.")) {
//                logInfo.setResultCode(RESULT_CODE_UNEXPECTED_ERROR);
//                throw new Exception("Runtime.Exec 으로 실행한 FTP Command 결과가 정상이 아닙니다.\n caused by..."+ outputMsgLines[i]);
//            }
//        }
//	}
//
//}
