package com.hangum.tadpole.engine.query.sql; import java.sql.SQLException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import com.hangum.tadpole.commons.exception.TadpoleRuntimeException; import com.hangum.tadpole.commons.exception.TadpoleSQLManagerException; import com.hangum.tadpole.commons.util.ApplicationArgumentUtils; import com.hangum.tadpole.engine.initialize.TadpoleSystemInitializer; import com.hangum.tadpole.engine.manager.TadpoleSQLManager; import com.hangum.tadpole.engine.query.dao.system.UserDBDAO; import com.hangum.tadpole.engine.query.dao.system.commons.TadpoleSequenceDAO; import com.hangum.tadpole.engine.query.dao.system.monitoring.MonitoringDashboardDAO; import com.hangum.tadpole.engine.query.dao.system.monitoring.MonitoringIndexDAO; import com.hangum.tadpole.engine.query.dao.system.monitoring.MonitoringMainDAO; import com.hangum.tadpole.engine.query.dao.system.monitoring.MonitoringResultDAO; import com.hangum.tadpole.session.manager.SessionManager; import com.ibatis.sqlmap.client.SqlMapClient; /** * monitoring * * @author hangum * */ public class TadpoleSystem_monitoring { private static final Logger logger = Logger.getLogger(TadpoleSystem_monitoring.class); /** * 모니터링 현재 상태를 리턴합니다. * * @param dbSeq * @return * @throws TadpoleSQLManagerException, SQLException */ public static List<MonitoringResultDAO> getMonitoringStatus(int dbSeq) throws TadpoleSQLManagerException, SQLException { SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); return sqlClient.queryForList("getMonitoringStatus", dbSeq); } /** * get monitoring error status * * @param dbseqs * @return * @throws TadpoleSQLManagerException, SQLException */ public static List<MonitoringDashboardDAO> getMonitoringErrorStatus(String dbseqs) throws TadpoleSQLManagerException, SQLException { if("".equals(dbseqs)) return new ArrayList<MonitoringDashboardDAO>(); SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); return sqlClient.queryForList("getMonitoringErrorStatus", dbseqs); } /** * get user monitoring db list * * @return * @throws TadpoleSQLManagerException, SQLException */ public static List<UserDBDAO> getUserMonitoringDBList() throws TadpoleSQLManagerException, SQLException { SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); return sqlClient.queryForList("getUserMonitoringDBList", SessionManager.getUserSeq()); } /** * update parameter * * @param dao * @throws TadpoleSQLManagerException, SQLException */ public static void updateParameter(MonitoringIndexDAO dao) throws TadpoleSQLManagerException, SQLException { SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); sqlClient.update("updateParameter", dao); } /** * monitoring list * * @return * @throws TadpoleSQLManagerException, SQLException */ public static List<MonitoringIndexDAO> getAllMonitoringList() throws TadpoleSQLManagerException, SQLException { SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); return sqlClient.queryForList("getAllMonitoringList"); } /** * Get DB monitoring data. * * @param userDB * @return * @throws TadpoleSQLManagerException, SQLException */ public static List<MonitoringIndexDAO> getUserMonitoringIndex(UserDBDAO userDB) throws TadpoleSQLManagerException, SQLException { SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); return sqlClient.queryForList("getUserDBMonitoringIndex", userDB); } /** * 모니터링 데이터를 저장합니다. * * @param userDB * @throws TadpoleSQLManagerException, SQLException */ public static void saveMonitoring(MonitoringMainDAO mainDao, MonitoringIndexDAO indexDao) throws TadpoleSQLManagerException, SQLException { SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); // 기존에 동일한 type, name으로 항목이 등록 되어 있는지 검사합니다. List<MonitoringMainDAO> listMainList = sqlClient.queryForList("getMonitoringDuplicatCheck", mainDao); if(listMainList.isEmpty()) { mainDao = (MonitoringMainDAO)sqlClient.insert("insertMonitoringMain", mainDao); indexDao.setMonitoring_seq(mainDao.getSeq()); sqlClient.insert("insertMonitoringIndex", indexDao); } else { throw new TadpoleRuntimeException("이미 동일한 항목이 존재합니다. 이름을 수정하여 주십시오. "); } } /** * delete monitoring index * * @param indexDao * @throws TadpoleSQLManagerException, SQLException */ public static void deleteMonitoringIndex(MonitoringIndexDAO indexDao) throws TadpoleSQLManagerException, SQLException { SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); sqlClient.delete("deleteMonitoringMain", indexDao); sqlClient.delete("deleteMonitoringIndex", indexDao); } /** * MonitoringResult save * * @param listMonitoringIndex */ public static void saveMonitoringResult(List<MonitoringResultDAO> listMonitoringIndex) { SqlMapClient sqlClient = null; TadpoleSequenceDAO dao = new TadpoleSequenceDAO(); dao.setName(TadpoleSystem_Sequence.KEY_MONITORING); try { // unique id를 생성합니다. dao = TadpoleSystem_Sequence.getSequence(dao); sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); // sqlClient.startTransaction(); // sqlClient.startBatch(); for (MonitoringResultDAO resultDAO : listMonitoringIndex) { resultDAO.setRelation_id(dao.getNo()); sqlClient.insert("insertMonitoringResult", resultDAO); } // sqlClient.executeBatch(); // sqlClient.commitTransaction(); } catch(Exception e) { logger.error("Monitoring result save exception", e); } finally { try { if(sqlClient != null) sqlClient.endTransaction(); } catch(Exception e) { logger.error("saveMonitoring Result ", e); } } } /** * get monitoring result * * @param monitoringIndexDao * @param strResultType * @param strTerm * @param startTime * @param endTime * * @return * @throws TadpoleSQLManagerException, SQLException */ public static List<MonitoringResultDAO> getMonitoringResultHistory(MonitoringIndexDAO monitoringIndexDao, String strResultType, String strTerm, long startTime, long endTime) throws TadpoleSQLManagerException, SQLException { Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("monitoring_seq", monitoringIndexDao.getMonitoring_seq()); queryMap.put("resultType", strResultType); if(ApplicationArgumentUtils.isDBServer()) { Date date = new Date(startTime); DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); queryMap.put("startTime", formatter.format(date)); Date dateendTime = new Date(endTime); queryMap.put("endTime", formatter.format(dateendTime)); } else { queryMap.put("startTime", startTime); queryMap.put("endTime", endTime); } SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); return sqlClient.queryForList("getMonitoringResultHistory", queryMap); } /** * getMonitoring result status * * @param intMonSeq * @param intMonIndexSeq * @param strUserConfirm * @return * @throws TadpoleSQLManagerException, SQLException */ public static List<MonitoringResultDAO> getMonitoringResultStatus(int intMonSeq, int intMonIndexSeq, String is_user_confirm, String resultType) throws TadpoleSQLManagerException, SQLException { Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("monitoring_seq", intMonSeq); queryMap.put("monitoring_index_seq", intMonIndexSeq); queryMap.put("is_user_confirm", is_user_confirm); queryMap.put("result", resultType); SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); return sqlClient.queryForList("getMonitoringResultStatus", queryMap); } /** * monitoring result * * @param dao * @return */ public static MonitoringResultDAO getMonitoringResult(MonitoringResultDAO dao) throws TadpoleSQLManagerException, SQLException { SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); return (MonitoringResultDAO)sqlClient.queryForObject("getMonitoringResult", dao); } /** * 사용자 확인 처리를 합니다. * * @param monitoring_seq * @param monitoring_index_seq * @param strUserMsg * * @throws TadpoleSQLManagerException, SQLException */ public static void updateUserConfirmMsg(int seq, String strUserMsg) throws TadpoleSQLManagerException, SQLException { Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("seq", seq); queryMap.put("user_description", strUserMsg); SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); sqlClient.update("updateUserConfirmMsg", queryMap); } /** * 모든 인덱스 에러에 대해 사용자 확인 처리 합니다. * * @param monitoring_seq * @param monitoring_index_seq * @param strUserMsg */ public static void updateUserConfirmMsg(int monitoring_seq, int monitoring_index_seq, String strUserMsg) throws TadpoleSQLManagerException, SQLException { Map<String, Object> queryMap = new HashMap<String, Object>(); queryMap.put("monitoring_seq", monitoring_seq); queryMap.put("monitoring_index_seq", monitoring_index_seq); queryMap.put("user_description", strUserMsg); SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); sqlClient.update("updateAllUserConfirmMsg", queryMap); } /** * update monitoring data * * @param mainDao * @param indexDao */ public static void updateMonitoring(MonitoringMainDAO mainDao, MonitoringIndexDAO indexDao) throws TadpoleSQLManagerException, SQLException { SqlMapClient sqlClient = TadpoleSQLManager.getInstance(TadpoleSystemInitializer.getUserDB()); sqlClient.update("updateMonitoringMain", mainDao); sqlClient.update("updateMonitoringIndex", indexDao); } }