//package com.eactive.eai.inbound.remote;
//
//import com.eactive.eai.batch.common.CalendarUtil;
//import com.eactive.eai.batch.common.StringUtil;
//import com.eactive.eai.common.property.PropManager;
//import com.eactive.eai.common.util.DatetimeUtil;
//
//import java.io.File;
//import java.util.Date;
//
//public class NDMTransferByScript extends CommonTransfer
//{
//
//	//리모트 NDM 전송 프라퍼티 정보
//	public static final String PROP_GROUP_REMOTE_TRANSFER_NDM  = "RemoteTransferNdmInfo";
//	public static final String PROP_NDM_SEND_SCRIPT_PATH       = "NDM_SEND_SCRIPT_PATH";  //NDM 송신 쉘스크립트 경로 (전체 경로)
//	public static final String PROP_NDM_RECV_SCRIPT_PATH       = "NDM_RECV_SCRIPT_PATH";  //NDM 수신 쉘스크립트 경로 (전체 경로)
//
//	private static String getPropNdmSendScriptPath() throws Exception {
//		String propValue = PropManager.getInstance().getProperty(PROP_GROUP_REMOTE_TRANSFER_NDM, PROP_NDM_SEND_SCRIPT_PATH);
//		if (propValue == null) throw new Exception("'NDM 송신 쉘스크립트 파일' 프라퍼티 정보가 없습니다. (PropGroupName:"+ PROP_GROUP_REMOTE_TRANSFER_NDM +", PropName:"+ PROP_NDM_SEND_SCRIPT_PATH +")");
//		return propValue;
//	}
//
//	private static String getPropNdmRecvScriptPath() throws Exception {
//		String propValue = PropManager.getInstance().getProperty(PROP_GROUP_REMOTE_TRANSFER_NDM, PROP_NDM_RECV_SCRIPT_PATH);
//		if (propValue == null) throw new Exception("'NDM 수신 쉘스크립트 파일' 프라퍼티 정보가 없습니다. (PropGroupName:"+ PROP_GROUP_REMOTE_TRANSFER_NDM +", PropName:"+ PROP_NDM_RECV_SCRIPT_PATH +")");
//		return propValue;
//	}
//
//
//	//-------------------------------------------------------------------------------------------
//	// 리모트서버로 실제파일 송신, 송신여부 리턴. (System NDM Shell Command 수행)
//	//-------------------------------------------------------------------------------------------
//	public void sendFile(RemoteServerVO remoteServerVO, String eaiDir, String eaiFile, String remoteDir, String remoteFile) throws Exception {
//
//
//		logger.info("[리모트송수신] [NDM_Script] ■ EAI→Remote 파일 NDM 송신 시작...... (Runtime Script 사용)");
//		logger.info("[리모트송수신] [NDM_Script] ⓟ 리모트 서버 VO : ["+ remoteServerVO +"]");
//		logger.info("[리모트송수신] [NDM_Script] ⓟ EAI    경로    : ["+ eaiDir +"]");
//		logger.info("[리모트송수신] [NDM_Script] ⓟ EAI    파일    : ["+ eaiFile +"]");
//		logger.info("[리모트송수신] [NDM_Script] ⓟ 리모트 경로    : ["+ remoteDir +"]");
//		logger.info("[리모트송수신] [NDM_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_NDM);
//			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
//
//ndmcli -x << EOJ
//submit maxdelay=unlimited
//SENDFILE process snode=$1
//step1  copy from (file="$3" pnode)
//            to   (file="$4" disp=(rpl) snode)
//pend;
//EOJ
//*/
//
//		String remoteDelimiter   = StringUtil.getDirDelimiter(remoteDir);
//		String eaiDelimiter      = StringUtil.getDirDelimiter(eaiDir);
//		if (remoteDir.endsWith(remoteDelimiter)) remoteDir = remoteDir.substring(0, remoteDir.length()-1);
//		if (eaiDir   .endsWith(eaiDelimiter   )) eaiDir    = eaiDir   .substring(0, eaiDir   .length()-1);
//		if (remoteFile==null || remoteFile.equals("")) remoteFile = eaiFile;
//
//		//1. System NDM Shell 명령어 생성
///*
//		String command = getPropNdmSendScriptPath() +" "+ logInfo.getNdmPname()
//		                             +" "+ remoteServerVO.getRemoteServerIP() +";"+ remoteServerVO.getRemoteNdmPort()
//		                             +" "+ eaiDir    + eaiDelimiter    + eaiFile
//		                             +" "+ remoteDir + remoteDelimiter + remoteFile;
//*/
//		String[] command = new String[5];
//		command[0] = getPropNdmSendScriptPath();
//		command[1] = logInfo.getNdmPname();
//
//		if ( remoteServerVO.getRemoteNodeName().trim().equals("")){
//	        command[2] = remoteServerVO.getRemoteServerIP() +";"+ remoteServerVO.getRemoteNdmPort();
//		}else{
//	        command[2] = remoteServerVO.getRemoteNodeName().trim();
//		}
//        command[3] = eaiDir    + eaiDelimiter    + eaiFile;
//        command[4] = remoteDir + remoteDelimiter + remoteFile;
//		
//        int pos = remoteFile.indexOf('|'); 
//        if (  pos > -1 ){
//        	command[0] = remoteFile.substring(0,pos);
//        	command[4] = remoteFile.substring( pos + 1, remoteFile.length());
//        	
//        }
//		//2. System NDM Shell 명령어를 Runtime 으로 실행
//		this.runSystemScript(command);
//
//		//파일전송 로그정보 설정
//		if (isLogging) logInfo.setFransferEndTime  (CalendarUtil.getCurrentTimeNoDash());
//
//		logger.info("[리모트송수신] [NDM_Script] ■ EAI→Remote 파일 NDM 송신 완료.");
//	}
//
//	//-------------------------------------------------------------------------------------------
//	// 리모트서버로 부터 실제파일 수신, 수신여부 리턴. (System NDM Shell Command 수행)
//	//-------------------------------------------------------------------------------------------
//	public void receiveFile(RemoteServerVO remoteServerVO, String remoteDir, String remoteFile, String eaiDir, String eaiFile) throws Exception {
//
//		logger.info("[리모트송수신] [NDM_Script] ■ Remote→EAI 파일 NDM 수신 시작...... (Runtime Script 사용)");
//		logger.info("[리모트송수신] [NDM_Script] ⓟ 리모트 서버 VO : ["+ remoteServerVO +"]");
//		logger.info("[리모트송수신] [NDM_Script] ⓟ 리모트 경로    : ["+ remoteDir +"]");
//		logger.info("[리모트송수신] [NDM_Script] ⓟ 리모트 파일    : ["+ remoteFile +"]");
//		logger.info("[리모트송수신] [NDM_Script] ⓟ EAI    경로    : ["+ eaiDir +"]");
//		logger.info("[리모트송수신] [NDM_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_NDM);
//			logInfo.setEaiFilePath      (eaiDir);
//			logInfo.setEaiFileName      (eaiFile);
//			logInfo.setRemoteFilePath   (remoteDir);
//			logInfo.setRemoteFileName   (remoteFile);
//			logInfo.setFransferStartTime(CalendarUtil.getCurrentTimeNoDash());
//		}
//
//
///*
//#!/bin/sh
//
//ndmcli -x << EOJ
//submit maxdelay=unlimited
//SENDFILE process snode=$1
//step1  copy from (file="$3" snode)
//            to   (file="$4" disp=(rpl) pnode)
//pend;
//EOJ
//*/
//
//		String remoteDelimiter   = StringUtil.getDirDelimiter(remoteDir);
//		String eaiDelimiter      = StringUtil.getDirDelimiter(eaiDir);
//		if (remoteDir.endsWith(remoteDelimiter)) remoteDir = remoteDir.substring(0, remoteDir.length()-1);
//		if (eaiDir   .endsWith(eaiDelimiter   )) eaiDir    = eaiDir   .substring(0, eaiDir   .length()-1);
//		if (eaiFile==null || eaiFile.equals("")) eaiFile = remoteFile;
//
//		//1. System NDM Shell 명령어 생성
//		/*
//		String command = getPropNdmRecvScriptPath() +" "+ logInfo.getNdmPname()
//		                             +" "+ remoteServerVO.getRemoteServerIP() +";"+ remoteServerVO.getRemoteNdmPort()
//		                             +" "+ remoteDir + remoteDelimiter + remoteFile
//		                             +" "+ eaiDir    + eaiDelimiter    + eaiFile;
//		*/
//		
//		String command[] = new String[5];
//		command[0] = getPropNdmRecvScriptPath(); 
//		command[1] = logInfo.getNdmPname();
//		command[2] = remoteServerVO.getRemoteServerIP() +";"+ remoteServerVO.getRemoteNdmPort();
//		command[3] = remoteDir + remoteDelimiter + remoteFile;
//		command[4] = eaiDir    + eaiDelimiter    + eaiFile;
//
//		//2. System NDM 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("[리모트송수신] [NDM_Script] ■ Remote→EAI 파일 NDM 수신 완료.");
//	}
//
//
//
//	protected void runSystemScript(String[] command) throws Exception {
//
//		super.runSystemScript(command);
//
//		if (!super.scriptErrorMsg.equals("")) {
//			logInfo.setResultCode(CommonTransfer.RESULT_CODE_UNEXPECTED_ERROR);
//			throw new Exception("Runtime.Exec 으로 실행한 NDM Command 결과가 정상이 아닙니다.\n caused by..."+ super.scriptErrorMsg);
//		}
//
//		int index1, index2, index3;
//		index1  = scriptOutputMsg.indexOf("Process Number = ");
//		index2  = scriptOutputMsg.indexOf("Return code    = ");
//		index3  = scriptOutputMsg.indexOf("Message id     = ");
//		String processNumber = StringUtil.nvlTrim( scriptOutputMsg.substring(index1 + 17, scriptOutputMsg.indexOf("\n", index1)) );
//		String resultCode    = StringUtil.nvlTrim( scriptOutputMsg.substring(index2 + 17, scriptOutputMsg.indexOf("\n", index2)) );
//		String messageId     = StringUtil.nvlTrim( scriptOutputMsg.substring(index3 + 17, scriptOutputMsg.indexOf("\n", index3)) );
//		logger.info("[리모트송수신] [NDM_Script]    ☞ Process Number : "+ processNumber);
//		logger.info("[리모트송수신] [NDM_Script]    ☞ Return code    : "+ resultCode);
//		logger.info("[리모트송수신] [NDM_Script]    ☞ Message id     : "+ messageId);
//
//		//파일전송 로그정보 설정
//		if (isLogging) logInfo.setNdmPnumber       (processNumber);
//		if (isLogging) logInfo.setResultCode       (resultCode);
//
//		if (!resultCode.equals(RESULT_CODE_SUCCESS)) {
//			logInfo.setResultCode(resultCode);
//			throw new Exception("Runtime.Exec 으로 실행한 NDM Command 결과가 정상이 아닙니다. (NDM ResultCode:"+ resultCode +", NDM MessageId:"+ messageId +")");
//		}
//	}
//
//}
