package com.eactive.eai.rms.onl.common.service;//package com.eactive.eai.rms.onl.common.service;
//
//import java.io.BufferedWriter;
//import java.io.File;
//import java.io.FileWriter;
//import java.io.PrintWriter;
//import java.text.SimpleDateFormat;
//import java.util.Calendar;
//import java.util.GregorianCalendar;
//import java.util.List;
//import java.util.Vector;
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.log4j.Logger;
//import org.quartz.Job;
//import org.quartz.JobExecutionContext;
//import org.quartz.JobExecutionException;
//import org.quartz.SchedulerException;
//import org.springframework.context.ApplicationContext;
//
//import com.eactive.eai.rms.common.context.MonitoringContextImpl;
//import com.eactive.eai.rms.common.datasource.DataSourceContextHolder;
//import com.eactive.eai.rms.common.datasource.DataSourceType;
//import com.eactive.eai.rms.common.datasource.DataSourceTypeManager;
//import com.eactive.eai.rms.onl.common.util.FtpUtil;
//import com.eactive.eai.rms.onl.common.util.SFtpUtil;
//
//public class ItsmDailyReportJob implements Job {
//
//	/**
//	 * Logger
//	 */
//	private static final Logger logger = Logger.getLogger(ItsmDailyReportJob.class);
//	
//	/**
//	 * ��� ����
//	 */
//	private static final String UPLOAD_FILE_PREFIX          = "EAI_AppErr_";	// ���ε� ���� ������
//	private static final String UPLOAD_FILE_EXT             = ".txt";			// ���ε� ���� Ȯ����
//	private static final String UPLOAD_FILE_FIELD_DELIMITER = "$";				// �ʵ� ������
//
//	//private static final String ITSM_TARGET_SERVER          = "rms.ITSM_TARGET";
//	private static final String ITSM_FTP_FILE_PREFIX        = "rms.ITSM_FTP_FILE_PREFIX";	// ������Ƽ�� ���� �����ϰ� �߰�
//	private static final String ITSM_FTP_ADDRESS            = "rms.ITSM_ADDRESS";
//	private static final String ITSM_FTP_PORT               = "rms.ITSM_FTP_PORT";
//	private static final String ITSM_FTP_TYPE               = "rms.ITSM_FTP_TYPE";
//	private static final String ITSM_FTP_USER               = "rms.ITSM_USER";
//	private static final String ITSM_FTP_PW                 = "rms.ITSM_PW";
//	private static final String ITSM_FTP_PATH               = "rms.ITSM_FTP_PATH";
//	private static final String ITSM_FTP_LOCAL_PATH         = "rms.ITSM_LOCAL_PATH";
//	private static final String ITSM_BLIST                  = "rms.ITSM_BLIST";
//	private static final String ITSM_ERROR_CODE             = "rms.ITSM_ERROR_CODE";
//	
//	/**
//	 * Bean ����
//	 */
//	private MonitoringContextImpl monitoringContext;
//	
//	private ItsmSchedulerService itsmSchedulerService;
//	
//	public ItsmDailyReportJob() {
//		
//	}
//	
//	@Override
//	public void execute(JobExecutionContext context) throws JobExecutionException {
//		
//		ApplicationContext appContext = null;
//		try {
//			appContext = (ApplicationContext)context.getScheduler().getContext().get("applicationContext");
//		} catch (SchedulerException e) {
//			logger.error("applicationContext get module error",e);
//			return ;
//		}
//		
//		monitoringContext    = (MonitoringContextImpl)appContext.getBean("monitoringContext");
//		itsmSchedulerService = (ItsmSchedulerService)appContext.getBean("itsmSchedulerService");
//		
//		run();
//	}
//	
//	public void run() {
//		
//        // FTP ���� ������ ����͸� ������Ƽ�� ����.
//		String filePre = monitoringContext.getStringProperty(ITSM_FTP_FILE_PREFIX, UPLOAD_FILE_PREFIX);
//		String ftpIp   = monitoringContext.getStringProperty(ITSM_FTP_ADDRESS);
//		int    ftpPort = monitoringContext.getIntProperty(ITSM_FTP_PORT, 22);			// SFTP ���� �߰�
//		String ftpType = monitoringContext.getStringProperty(ITSM_FTP_TYPE, "SFTP");	// SFTP ���� �߰�
//		String ftpUser = monitoringContext.getStringProperty(ITSM_FTP_USER);
//		String ftpPass = monitoringContext.getStringProperty(ITSM_FTP_PW);
//		String ftpPath = monitoringContext.getStringProperty(ITSM_FTP_PATH);
//		String srcPath = monitoringContext.getStringProperty(ITSM_FTP_LOCAL_PATH, "");
//        String bList   = monitoringContext.getStringProperty(ITSM_BLIST, "");
//        String errCode = monitoringContext.getStringProperty(ITSM_ERROR_CODE, "");
//		
//        String allBList = "";
//        String errCodeList = "";
//        
//		// DataSource�� Online ����Ʈ
//		List<DataSourceType> dataSourceTypes = DataSourceTypeManager.getOnlineDataSourceTypes();
//		    	
//		Calendar cal = new GregorianCalendar();
//    	String fileMakingTime = convertSdfTime(cal);
//    	// ������ ���ó�¥������ ����  ex) EAI_AppErr_20200101.txt
//    	String fileName = filePre + fileMakingTime + UPLOAD_FILE_EXT;
//        cal.add(Calendar.DATE, -1);
//        // ���� �α״� ������ �������� ��ȸ
//        String logDate = convertSdfTime(cal);
//		
//        // ����͸� ������Ƽ���� ��� ���� �ڵ� ��ȸ. �����ڴ� [,]
//        if (StringUtils.isBlank(errCode)) {
//        	errCodeList = "'RECEAICEU104','RECEAICKE301','RECEAIIRP040','RECEAIOEP020','RECEAIOEP030','RECEAIOHP020','RECEAIOHP022','RECEAIOHP030','RECEAIOMP002','RECEAIOMP006','RECEAIOSA020','RECEAIOSP020','RECEAIOSP030','RECEAIOTP002','RECEAIOTP006','RECEAICBE001','RECEAICBE010','RECEAICBX001','RECEAICME001','RECEAICMK001','RECEAIFBR002','RECEAIIRA001','RECEAIIRP050','RECEAIIRP060','RECEAIIRP062'";
//        } else {
//        	String list[] = errCode.split(",");
//            for (int i = 0 ; i < list.length; i++) {
//	        	if (i != 0) {
//	        		errCodeList += ", ";
//	    	    }
//	        	errCodeList += "'"+list[i].trim()+"'";
//	        }
//        }
//        
//        //Get th B.List
//        if (StringUtils.isBlank(bList)) {
//        	allBList = "''";
//        } else {
//        	String list[] = bList.split(",");
//            for (int i = 0 ; i < list.length; i++) {
//	        	if (i != 0) {
//	        		allBList += ", ";
//	    	    }
//            	allBList += "'"+list[i].trim()+"'";
//	        }
//        }
//        
//        //Set a filename
//		FileWriter fw = null;
//		BufferedWriter bw = null;
//		PrintWriter outfile = null;
//		boolean isEmptyBit = true;
//		
//		try {
//			
//			File sdir = new File(srcPath);
//	    	if (sdir != null && !sdir.exists()) {
//	           sdir.mkdirs();
//	    	}
//			
//			fw = new FileWriter(srcPath + "/" + fileName);
//			bw = new BufferedWriter(fw);
//			outfile = new PrintWriter(bw);
//
//			// ApplicationContext-datasource�� ���ǵ� �¶��� datasource�� �������� ITSM ���� ����Ʈ ����
//			for (DataSourceType dataSourceType : dataSourceTypes) {
//				
//				String schema = "";
//				String sysCode = "";
//				
//				if (dataSourceType != null) {
//	        		schema = dataSourceType.getSchema();
//	        	}
//				
//				// 1 : ����, 2 : ���, 3 : ������, 4 : DMZ, 5 : ���¹�ŷ
//				if (dataSourceType.getName().equals(DataSourceTypeManager.NSG))
//					sysCode = "1";
//				else if (dataSourceType.getName().equals(DataSourceTypeManager.DSG))
//					sysCode = "2";
//				else if (dataSourceType.getName().equals(DataSourceTypeManager.GSG))
//					sysCode = "3";
//				else if (dataSourceType.getName().equals(DataSourceTypeManager.ZSG))
//					sysCode = "4";
//				else if (dataSourceType.getName().equals(DataSourceTypeManager.ASG))
//					sysCode = "5";
//				
//				DataSourceContextHolder.setDataSourceType(dataSourceType);
//				
//				@SuppressWarnings("rawtypes")
//				Vector logList = itsmSchedulerService.getItsmErrorLogList(schema, logDate, errCodeList, allBList);
//				
//				for (int i = 0; i < logList.size(); i++) {
//					isEmptyBit = false;
//					
//					// AS-IS ������ ������ �����ϰ� ���
//					// ===============================================================
//					// 1�����߻������$2�����߻��ð�$3��õ�����ڵ�ĺ���$4Ÿ�پ����ڵ�ĺ���$5EAI�ý��۱����ڵ�$6�ŷ��ڵ�$7�����ڵ�$8EAI�����ѱ۸� = ����$9�������̽��۽��ڵ�$10GUID$11�α�ó���Ϸù�ȣ$12EAI�����޽�������
//					// ===============================================================
//					String[] row = (String[])logList.get(i);
//
//					for (int j=0; j<row.length; j++) {
//						// 5��° �׸� ���� �ý��� �ڵ尪�� �Է�. 
//    					if (j == 4) {
//    						outfile.print(sysCode);
//    					} else {
//    						// SQL�� REPLACE �Լ��� ó�� ���� �ʾ� ���๮�ڸ� �Լ��� REPLACE ��Ŵ.
//							outfile.print(row[j].replaceAll("\n", " "));
//    					}
//
//    					// ������ �׸��� ������ ����
//    					if (j != row.length-1)
//    						outfile.print(UPLOAD_FILE_FIELD_DELIMITER);
//    				}
//					
//    				outfile.println();
//				}
//				
//				logger.warn("dailyReport - system ["+ sysCode +"] log size ["+ logList.size() +"]");
//			}
//			
//	        //ITSM ���� ��� �ݿ�
//	        //���� ������ ���� ��� ����� 20131230$999999   (8)/(6)���� �����ؼ� �����ϵ��� ����
//	        if ( isEmptyBit ) {
//	        	outfile.println(logDate + "$999999");
//	        }
//	        
//	        
//	        //close file stream
//	        outfile.close();
//	
//	        //2. FTP UPLODAD
//	        String tarFullPath = ftpPath + "/" + fileName;
//	        String srcFullPath = srcPath + "/" + fileName;
//	        // SFTP
//	        if (ftpType.equalsIgnoreCase("SFTP")) {
//	        	SFtpUtil sftp = new SFtpUtil(ftpIp, ftpPort, ftpUser, ftpPass);
//	        	
//	        	sftp.sftpPutFile(tarFullPath, srcFullPath, false);
//	        // FTP	
//	        } else {
//	        	FtpUtil ftp = new FtpUtil(ftpIp, ftpUser, ftpPass);
//
//		        ftp.ftpPutBinaryFile(tarFullPath, srcFullPath);
//	        }
//	        
//	        logger.info("dailyReport - ftp ip ["+ ftpIp +"] ftp port ["+ ftpPort +"] file path ["+ srcPath + "/" + fileName +"]");
//		} catch (Exception e) {
//			logger.error("ItsmDailyReportJob error", e);
//		}
//		finally { //����� �ҽ� ����
//			if(fw != null) try { fw.close(); } catch(Exception ee) { logger.error("fw close error");  }
//			if(bw != null) try { bw.close(); } catch(Exception ee) { logger.error("bw close error");  }
//			if(outfile != null) try { outfile.close(); } catch(Exception ee) { logger.error("outfile close error");  }
//		}
//	}
//	
//	private String convertSdfTime(Calendar cal) {
//		java.util.Date d = cal.getTime();
//		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
//		
//		return sdf.format(d).toString();	
//	}
//}
