package com.hangum.tadpole.monitoring.core.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.quartz.CronExpression; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.hangum.tadpole.commons.libs.core.define.PublicTadpoleDefine; import com.hangum.tadpole.commons.libs.core.mails.SendEmails; import com.hangum.tadpole.commons.libs.core.mails.dto.EmailDTO; import com.hangum.tadpole.engine.query.dao.system.UserDAO; import com.hangum.tadpole.engine.query.dao.system.UserDBDAO; import com.hangum.tadpole.engine.query.dao.system.monitoring.MonitoringIndexDAO; import com.hangum.tadpole.engine.query.sql.TadpoleSystem_UserQuery; import com.hangum.tadpole.engine.sql.util.QueryUtils; /** * monitoring utils * * @author hangum * */ public class Utils { private static final Logger logger = Logger.getLogger(Utils.class); /** * resultset to json * * @param userDB * @param indexDao * @return * @throws Exception */ public static JsonArray selectToJson(final UserDBDAO userDB, final MonitoringIndexDAO indexDao) throws Exception { List<Object> listParam = new ArrayList<>(); if(StringUtils.isNotEmpty(indexDao.getParam_1_init_value())) listParam.add(indexDao.getParam_1_init_value()); if(StringUtils.isNotEmpty(indexDao.getParam_2_init_value())) listParam.add(indexDao.getParam_2_init_value()); return QueryUtils.selectToJson(userDB, indexDao.getQuery(), listParam); } /** * get shapshot * * @param userDB * @return */ public static String getSnapshot(final UserDBDAO userDB) throws Exception { return sqlToJson(userDB, ""); } /** * get db variable * * @param userDB * @return */ public static String getDBVariable(final UserDBDAO userDB) { return sqlToJson(userDB, userDB.getDBDefine().getSystemVariableQuery()); } /** * SQL to json * * @param strSQL * @return */ public static String sqlToJson(final UserDBDAO userDB, String strSQL) { JsonObject jsonEntry = new JsonObject(); try { JsonArray jsonArray = QueryUtils.selectToJson(userDB, strSQL); jsonEntry.add(strSQL, jsonArray); } catch (Exception e) { logger.error("sql to json error", e); } return jsonEntry.toString(); } /** * SQL to json * * @param strSQL * @return */ public static String sqlToJson(final UserDBDAO userDB, String[] strSQLs) { JsonObject jsonEntry = new JsonObject(); for (String strSQL : strSQLs) { try { JsonArray jsonArray = QueryUtils.selectToJson(userDB, strSQL); jsonEntry.add(strSQL, jsonArray); } catch (Exception e) { logger.error("sql to json error", e); } } return jsonEntry.toString(); } /** * email send * * @param userSeq * @param title * @param strContent * @throws Exception */ public static void sendEmail(int userSeq, String title, String strContent) throws Exception { UserDAO userDao = TadpoleSystem_UserQuery.getUserInfo(userSeq); sendEmail(userDao.getEmail(), title, strContent); } /** * * @param receivers * @param title * @param strContent */ public static void sendEmail(String receivers, String title, String strContent) throws Exception { try { EmailDTO emailDao = new EmailDTO(); emailDao.setSubject(title + " waraing message."); emailDao.setContent(strContent); emailDao.setTo(receivers); SendEmails.getInstance().sendMail(emailDao); } catch(Exception e) { logger.error("Error send email", e); throw e; } } /** * show cron expression */ public static String showExp(String strExp) throws ParseException { StringBuffer sbStr = new StringBuffer(); // try { CronExpression exp = new CronExpression(strExp); java.util.Date showDate = new java.util.Date(); // sbStr.append(showDate.toString() + PublicTadpoleDefine.LINE_SEPARATOR); for (int i=0; i<=5; i++) { showDate = exp.getNextValidTimeAfter(showDate); sbStr.append(convPretty(showDate) + PublicTadpoleDefine.LINE_SEPARATOR); showDate = new java.util.Date(showDate.getTime() + 1000); } return sbStr.toString(); // } catch (ParseException e) { // MessageDialog.openError(null, CommonMessages.get().AddScheduleDialog_20, CommonMessages.get().AddScheduleDialog_12); // textCronExp.setFocus(); // } } private static String convPretty(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //$NON-NLS-1$ return sdf.format(date); } }