//package com.eactive.eai.batch.common;
//
//import java.io.DataOutputStream;
//import java.net.Socket;
//import java.text.SimpleDateFormat;
//import java.util.Calendar;
//
//import com.eactive.eai.batch.code.CodeMessageManager;
//import com.eactive.eai.batch.code.CodeMessageVO;
//import com.eactive.eai.batch.doc.BatchDoc;
//import com.eactive.eai.batch.rule.dirInfo.BatchJobInfoVO;
//import com.eactive.eai.batch.rule.dirInfo.DirInfoManager;
//import com.eactive.eai.common.property.PropManager;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//public class ItmsSmsUtil {
//
//    public static Logger logger = LoggerFactory.getLogger(ElinkLogger.LOGGER_DEFAULT);
//    
//    public static final String SYSNOTIFYINFO          = "SysNotifyInfo";
//    public static final String HOST             = "itsm.host";
//    public static final String PORT             = "itsm.port";
//    public static final String MSG_GB           = "msg.gb";
//    public static final String MSG_DEL          = "msg.del";
//    public static final String REQ_BY_GROUP     = "req.group";
//    public static final String REQ_BY_TELNO     = "req.telno";
//    public static final String REQ_APPL_CD      = "req.appl.cd";
//
//    public static final String EAI_APPL_PREFIX  = "eai.prefix";
//    public static final String DEFAULT_APPL_CD  = "appl.cd";
//    public static final String CHECK_PERIOD     = "check.period";
//    public static final String CHECK_DELAY      = "check.delay";
//    
//    public static final String EAI_SEND_YN      = "eai.send.flag"; //업무팀에 보내고 나서 EAI 팀에도 보낼것인가?
//    
//
//    private ItmsSmsUtil(){
//    }
//
//    public static void sendSMS( String reqGb, String reqCont, String msg ){
//
//    	StringBuffer sb = new StringBuffer();
//    	try {
//    		String del = PropManager.getInstance().getProperty(SYSNOTIFYINFO, MSG_DEL);
//            //PEM메시지구분	인터페이스대상 식별 코드	PEM_INFO 8
//            sb.append(PropManager.getInstance().getProperty(SYSNOTIFYINFO, MSG_GB));
//            sb.append(del);
//            
//            sb.append(reqGb); // 
//            sb.append(del);
//
//            if ( PropManager.getInstance().getProperty(SYSNOTIFYINFO, REQ_BY_GROUP).equals(reqGb)){
//                String eaiApplCd = reqCont;
//                if ( eaiApplCd == null || eaiApplCd.trim().equals("")){
//                	eaiApplCd = PropManager.getInstance().getProperty(SYSNOTIFYINFO, DEFAULT_APPL_CD );
//                }else{
//                	eaiApplCd = PropManager.getInstance().getProperty(SYSNOTIFYINFO, EAI_APPL_PREFIX) + eaiApplCd;
//                }
//                sb.append(eaiApplCd);
//            }else{
//            	sb.append(reqCont);
//            }
//            sb.append(del);
//            
//            //발생시간	이벤트발생시간 YYYYMMDDhhmmss	2011030310153000
//            SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
//            String curDate = formatter.format(Calendar.getInstance().getTime());
//            sb.append(curDate);
//            sb.append(del);
//
//        	String reqGroup = PropManager.getInstance().getProperty(SYSNOTIFYINFO, REQ_APPL_CD );
//        	sb.append(reqGroup);
//            sb.append(del);
//
//            sb.append(msg);
//
//            sendToSocket( new String(sb));
//
//		} catch (Exception e) {
//			logger.error("[ItmsSmsUtil][sendSMS]\n" + e.getMessage(),e);
//		}
//    	return;
//    }
//
//    public static void sendToSocket( String msg ){
//
//    	Socket socket = null;
//    	try {
//            logger.debug( "SMS MESSAGE :" + msg );
//
//            if ( (socket = connect()) == null ) {
//        		return;
//        	}
//        	
//        	DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
//            dout.write(msg.getBytes());
//
//
//		} catch (Exception e) {
//			logger.error("[ItmsSmsUtil][sendSMS]\n" + e.getMessage(),e);
//			return;
//		} finally {
//			if ( socket != null ){
//				try {
//					socket.close();
//				} catch (Exception e) {}
//			}
//			socket = null;
//		}
//    	return;
//    }
//    
//    private static Socket connect() throws Exception{
//
//    	String ipAdress = PropManager.getInstance().getProperty(SYSNOTIFYINFO, HOST);
//    	if (ipAdress == null) 
//    		throw new Exception("'SMS서버 IP정보' 프라퍼티가 없습니다. (PropGroupName:"+ SYSNOTIFYINFO +", PropName:"+ HOST +")");
//
//    	String port = PropManager.getInstance().getProperty(SYSNOTIFYINFO, PORT);
//    	if (port == null) 
//    		throw new Exception("'SMS서버 PORT정보' 프라퍼티가 없습니다. (PropGroupName:"+ SYSNOTIFYINFO +", PropName:"+ PORT +")");
//    	int nPortNum = -1;
//		try {
//			nPortNum = Integer.parseInt(port);
//
//		} catch (Exception ex) {
//			String errMsg = "소켓 포트 정보가 잘못되었습니다. (PortNo:{" + port + "})";
//			throw new Exception(errMsg);
//		}
//
//		return socketInit(ipAdress, nPortNum);
//    }
//    
//    private static Socket socketInit(String remoteIP, int remotePort) throws Exception
//    {
//        try {
//            return new Socket(remoteIP, remotePort);
//        } catch (Exception ex) {
//            throw new Exception( "Socket 연결 에러 (IP:"+ remoteIP + ", Port:" + remotePort + ")," + ex.getMessage());
//        }
//    }
//    
//    public static void sendSMS(BatchDoc batchDoc){
//    	
//    	String errMsg = batchDoc.getBatchMsg().getBody().getErrorMsg();
//		CodeMessageVO vo = null;
//		CodeMessageVO nvo = null;
//		
//    	for ( int inx=0; inx < errMsg.length()-12;inx++){
//    		if ( ( vo = CodeMessageManager.getInstance().getMessageVO(errMsg.substring(inx, inx+12))) != null ){
//    			try {
//    				nvo = vo;
//				} catch (Exception e) {}
//    		}
//    	}
//    	
//    	String message = "[송신실패]";
//    	if ( "R".equals(batchDoc.getBatchMsg().getHeader().getProcessType().substring(1,2))){
//    		message = "[수신실패]";
//    	}
//    	message = message + "파일명:" + batchDoc.getBatchMsg().getHeader().getBizCode() 
//        + ",업무명:" + batchDoc.getBatchMsg().getHeader().getProcessName()
//        + ",기관명:" + batchDoc.getBatchMsg().getHeader().getInstitutionName();
//    	if ( nvo != null ) {
//    		message = message + "," + nvo.getMsgEtc();
//    	}
//    	
//    	String procCode = batchDoc.getBatchMsg().getHeader().getProcessCode();
////    	String organCode = batchDoc.getBatchMsg().getHeader().getInstitutionCode();
//    	String bizCode  = batchDoc.getBatchMsg().getHeader().getBizCode();
//    	BatchJobInfoVO jvo = DirInfoManager.getInstance().getFileInfoByDstcd( procCode, bizCode );
//    	String applCd = "";
//    	if ( jvo != null ){
//    		applCd = jvo.getUapplCd();
//    	}
//    	sendSMS( PropManager.getInstance().getProperty(SYSNOTIFYINFO, REQ_BY_GROUP), applCd, message);
//
//    	// 업무팀이 세팅 되어 있으면 EAI에도 한번 더 보낸다.
//    	if (applCd != null && !applCd.trim().equals("")){
//        	try {
//				if (!PropManager.getInstance().getProperty(SYSNOTIFYINFO, EAI_SEND_YN).trim().equals("")){
//		    		sendSMS( PropManager.getInstance().getProperty(SYSNOTIFYINFO, REQ_BY_GROUP), "", message);
//				}
//			} catch (Exception e) {} // 에러 무시
//    	}
//    	
////    	// 이제 대외 기관에도 보내 보자.
////    	try {
////    		OutsideVO ovo = OutsideManager.getInstance().getOutsideInfo(procCode, organCode);
////    		if ( ovo.getSMSDpstCnsntYn().equals("1") ){
////    			String [] telnos = ovo.getOsidInstiTelno().split(",");
////    			for (int i = 0; i < telnos.length; i++) {
////					String telno = telnos[i];
////					sendSMS( PropManager.getInstance().getProperty(SMSINFO, REQ_BY_TELNO), telno, message);
////				}
////    		}
////		} catch (Exception e) {}
//    	
//    	
//    }
//
//}
