package com.eactive.eai.rms.onl.common.service;//package com.eactive.eai.rms.onl.common.service;
//
//import java.net.InetSocketAddress;
//import java.net.Socket;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
//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.util.ItsmSmsSender;
//import com.eactive.eai.rms.common.context.MonitoringContext;
//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.dashboard.service.Dashboard2RepositoryService;
//import com.eactive.eai.rms.onl.dashboard.service.DashboardService;
//import com.eactive.eai.rms.onl.tracking.vo.MemStaticsVo;
//import com.eactive.eai.rms.onl.vo.HostStatusVo;
//
//public class ItsmDailyCheckListJob implements Job {
//	private static final Logger logger = Logger.getLogger(ItsmDailyCheckListJob.class);
//	private static final String FIELD_SEP 	= ",";
//	private static final String LINE_SEP 	= ";";
//	
//	private static final int TIME_OUT = 1000;
//	private transient MonitoringContext monitoringContext;
//	
//	DashboardTargetService dashboardTargetService;
//	Dashboard2RepositoryService dashboard2Repository;
//	DashboardService dashboardService;
//	
//	@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    = (MonitoringContext)appContext.getBean("monitoringContext");
//		this.dashboardTargetService = (DashboardTargetService) appContext.getBean("DashboardTargetService");
//		this.dashboardService		= (DashboardService) appContext.getBean("dashboardService");
//		this.dashboard2Repository	= (Dashboard2RepositoryService) appContext.getBean("dashboard2RepositoryService");
//		
//				
//		checkTransValue();
//		checkBatchDisk();
//		wasStatus();
//	}
//	
//	//20201013 systemid ����   
//	
//	private String getSystemId(String key) {
//		switch (key) {
//			case DataSourceTypeManager.NSG:
//				return "ieaapon";
//			case DataSourceTypeManager.DSG:
//				return "ieaapod";
//			case DataSourceTypeManager.GSG:
//				return "ieaapog";
//			case DataSourceTypeManager.ZSG:
//				return "ieaapoz";
//			case DataSourceTypeManager.ASG:
//				// ASIS���� ���ǵǾ� ���� ���� ���¹�ŷ ���˽ý��۸��� ���� Ȯ�� �ʿ���
//				return "ieaapoa";
//			default:
//				return null;
//		}
//	}
//	
//	private String getMatchingSystem(String[] memSystem, String sysId) {
//		String ret = "";
//		for (int i=0; i<memSystem.length; i++) {
//			String[] memErr = new String(memSystem[i]).split(",");
//			String memSysId = getSystemId(new String(memErr[0]));
//			if (StringUtils.equals(sysId, memSysId)) {
//				ret = new String(memSystem[i]);
//				break;
//			}
//		}
//		return ret;
//	}
//	
//	private boolean checkSocket(String ip, int port) {
//		Socket socket = null;
//		try {
//			socket = new Socket();
//			socket.setSoTimeout(TIME_OUT);
//			socket.connect(new InetSocketAddress(ip, port));
//		} catch (Exception e) {
//			logger.error(e.toString());
//			return false;
//		} finally {
//			try {
//				if (socket != null) {
//					socket.close();
//				}
//			} catch (Exception e) {}
//		}
//		return true;
//	}
//	
//	/**
//	 * ASIS���� ���˽ý��۸��� ����, ���, ����, DMZ���� ���ǵǾ� �ִ� ����
//	 * ���������� ���⶧���� TOBE���� NSG, DSG, KSG, ZSG, ASG �� ���� �۾��ϰ� ���� Ȯ�� �� �����ϵ��� ��
//	 */
//	public void checkTransValue() {
//		StringBuffer sbuffer = new StringBuffer();
//		try {
//			for(DataSourceType dataSourceType : DataSourceTypeManager.getOnlineDataSourceTypes()){
//				DataSourceContextHolder.setDataSourceType(dataSourceType);
//				String typeName = dataSourceType.getName();
//				String sysId = getSystemId(typeName);
//				if (sysId == null)	continue;
//				MemStaticsVo vo = dashboard2Repository.getMemTradeVoByService(typeName);
//				sbuffer.append(typeName).append(FIELD_SEP)
//					.append(sysId).append(FIELD_SEP)
//					.append(vo.getTimeoutTotal()).append(FIELD_SEP)
//					.append(vo.getErrorTotal()).append(FIELD_SEP)
//					.append(vo.getSysErrorTotal()).append(FIELD_SEP)
//					.append(LINE_SEP);
//			}
//			logger.info("sb trans = "+ sbuffer.toString());
//			logger.info("sb memts = "+ System.getProperty("CheckListTransCount")+"\n");
//			
//			if (System.getProperty("CheckListTransCount") == null) {
//				System.setProperty("CheckListTransCount", "NSG,ieaapon,0,0,0,;DSG,ieaapod,0,0,0,;GSG,ieaapog,0,0,0,;ZSG,ieaapoz,0,0,0;ASG,ieaapoa,0,0,0");
//			}
//			
//			String[] memSystem = null; //������ҽ� ���� 2020.08.27
//			if(System.getProperty("CheckListTransCount") != null){
//				 memSystem = System.getProperty("CheckListTransCount").split(";");
//			}
//			String[] curSystem = new String(sbuffer.toString()).split(";");
//			for (int i=0; i<curSystem.length; i++) {
//				String[] curErr = new String(curSystem[i]).split(",");
//				String sysNm = new String(curErr[0]);
//				String sysId = new String(curErr[1]);
//				String[] memErr = null;
//				if(memSystem != null){
//					memErr = getMatchingSystem(memSystem, sysId).split(",");
//				}
//						
//				for (int j=2; j<5; j++) {
//					int memCnt = Integer.parseInt(memErr[j]);
//					int curCnt = Integer.parseInt(curErr[j]);
//					String value = "";
//					if (memCnt > curCnt) {
//						value = Integer.toString(curCnt);
//					} else {
//						value = Integer.toString(curCnt - memCnt);
//					}
//					// Ÿ�Ӿƿ�, ��������, ��ſ��� ���� MSG����
//					String sendNum = "00"+ Integer.toString(j-1);
//					boolean status = sendCheckList(sendNum, value, sysId, sysNm);
//					logger.warn("checkTransValue - ["+ status  +"] " + sendNum +"|"+ value +"|"+ sysId +"|"+ sysNm);
//				}
//			}
//			System.setProperty("CheckListTransCount", sbuffer.toString());
//		} catch (Exception e) {
//			logger.error(e.toString());
//		}
//	}
//	
//	/**
//	 * 
//	 */
//	public void checkBatchDisk() {
//		StringBuffer sbuffer = new StringBuffer();
//		try {
//			DataSourceType datasource = DataSourceTypeManager.getDataSourceType("ISG");
//			DataSourceContextHolder.setDataSourceType(datasource);
//			if (datasource == null) {
//				throw new Exception("�ϰ� DB ������ �����ϴ�.");
//			}
//			List<Map<String, String>> list = dashboardTargetService.getEaiBatchServerIpList(datasource.getName());
//			logger.info("checkBatchDisk() => SEVER List > "+ list); 
//			if (list == null || list.size() == 0) {
//				throw new Exception("�ϰ� ���� ����� �����ϴ�.");
//			}
//			
//			for (Map<String, String> map : list) {
//				List<Map> paramList = new ArrayList<Map>();
//				paramList.add(map);
//				HostStatusVo hostVo = dashboardService.findHostStatus(paramList);
//				
//				int disk = hostVo.getDisk() ;
//				if( disk > 99 ) {
//					disk = 99 ;
//				}
//				sbuffer.append(disk);
//			}
//			boolean status = sendCheckList("008", sbuffer.toString(), "ieaapoi", "�ϰ� ��ũ ��뷮");
//			logger.info("checkBatchDisk - ["+ status +"] batch disk = "+ sbuffer.toString());
//		} catch (Exception e) {
//			logger.error(e.toString());
//		}
//	}
//	
//	/**
//	 * 
//	 */
//	public void wasStatus() {
//		try {
//			DataSourceType datasource = DataSourceTypeManager.getDataSourceType("ISG");
//			if (datasource == null) {
//				throw new Exception("�ϰ� DB ������ �����ϴ�.");
//			}
//			DataSourceContextHolder.setDataSourceType(datasource);
//			List<Map<String, String>> list = dashboardTargetService.getEaiBatchServerIpList(datasource.getName());
//			logger.info("wasStstus() => SEVER List > "+ list); 
//			if (list == null || list.size() == 0) {
//				throw new Exception("�ϰ� ���� ����� �����ϴ�.");
//			}
//			// �ϰ�FW WAS üũ
//			String ip = list.get(0).get("EAISVRIP");
//			String port = list.get(0).get("EAISVRLSNPORT");
//			if (checkSocket(ip, Integer.parseInt(port))) {
//				// ����
//				sendCheckList("006", "1", "ieaapoi", "�ϰ� WAS ����");
//				logger.info("F/W wasStatus - [ true ] ");
//			} else {
//				// ������
//				sendCheckList("006", "0", "ieaapoi", "�ϰ� WAS ����");
//				logger.info("F/W wasStatus - [ false ] ");
//			}
//			//���� ���������� �ּ�ó��.
//			// Axway WAS üũ
////			String axwayIp = System.getProperty("AxwayIP");
////			String axwayPort = System.getProperty("AxwayPORT");
////			if (StringUtils.isEmpty(axwayIp) || StringUtils.isEmpty(axwayPort)) {
////				throw new Exception("Axway WAS ������ �����ϴ�.");
////			}
////			if (checkSocket(axwayIp, Integer.parseInt(axwayPort))) {
////				// ����
////				sendCheckList("007", "1", "axway", "Axway WAS ����");
////			} else {
////				// ������
////				sendCheckList("007", "0", "axway", "Axway WAS ����");
////			}
//			
//		} catch (Exception e) {
//			logger.error(e.toString());
//		}
//	}
//	
//	public boolean sendCheckList(String sendNum, String value, String sysId, String sysNm) {
//		String[] info = null;
//		String chk_ip = monitoringContext.getStringProperty(MonitoringContext.ITSMCHECKLIST_IP,"");
//		String chk_port = monitoringContext.getStringProperty(MonitoringContext.ITSMCHECKLIST_PORT,"");
//		
//		String[] resultValue = {chk_ip, chk_port};
//		info = resultValue;
//		if(logger.isInfoEnabled()) logger.info("chk ip:"+info[0] + "  port:"+info[1]);
//		if(logger.isInfoEnabled()) logger.info("ip:"+info[0] + "  port:"+info[1]);
//		
//		System.setProperty("ItsmCheckListIP", 	info[0]); 
//		System.setProperty("ItsmCheckListPORT", info[1]);
//		
//		boolean isSuccess = true;
//		
//		try{
//			isSuccess = ItsmSmsSender.sendCheckList(sendNum, value, sysId, sysNm);
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			logger.error("sendCheckList error : ",e);
//			isSuccess = false;
//		}
//		return isSuccess;
//		
//	}
//}
