# AlarmCategoryDaoImpl.java

    package com.mycim.server.alarm.dao.impl;

    import com.mycim.framework.jdbc.JdbcTemplate;
    import com.mycim.framework.jdbc.mapper.RowMapper;
    import com.mycim.framework.utils.MiscUtils;
    import com.mycim.server.alarm.dao.AlarmCategoryDao;
    import com.mycim.valueobject.alm.AlarmCategory;
    import com.mycim.valueobject.consts.DataBaseNames;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;

    import java.sql.ResultSet;
    import java.sql.SQLException;

    /**
     * AlarmCategoryDaoImpl
     *
     * @author pinyan.song
     * @version 6.0.0
     * @date 2019-11-8
     **/
    @Repository
    public class AlarmCategoryDaoImpl implements AlarmCategoryDao {
        @Autowired
        JdbcTemplate jdbcTemplate;

        @Override
        public AlarmCategory getAlarmCategory(long alarmCategoryRrn) {
            String sql = "SELECT ENABLE_FLAG,SEVERITY,PRIORITY,AUTO_CLEAR_FLAG, " + " IGNORE_REPEAT_PERIOD," +
                    "REMINDER_WFL_RRN,WAIT_TIME_FOR_REMINDER,TRIGGER_WFL_RRN," + " ACKNOWLEDGE_WFL_RRN,CLEAR_WFL_RRN FROM" +
                    " " + DataBaseNames.ALARM_CATEGORY_KEY + " WHERE ALARM_CATEGORY_RRN = ? ";

            return jdbcTemplate.queryForObjectWithNull(sql, new RowMapper<AlarmCategory>() {
                @Override
                public AlarmCategory mapRow(ResultSet rs, int rowNum) throws SQLException {
                    AlarmCategory alarmCategory = new AlarmCategory();
                    alarmCategory.setInstanceRrn(alarmCategoryRrn);
                    alarmCategory.setEnableFlag(rs.getString("ENABLE_FLAG"));
                    alarmCategory.setSeverity(rs.getString("SEVERITY"));
                    alarmCategory.setPriority(rs.getString("PRIORITY"));
                    alarmCategory
                            .setAutoClearFlag(MiscUtils.parseCheckBoxValueFromDatabase(rs.getString("AUTO_CLEAR_FLAG")));
                    alarmCategory.setIgnoreRepeatPeriod(rs.getLong("IGNORE_REPEAT_PERIOD"));
                    alarmCategory.setRemindWflRrn(rs.getLong("REMINDER_WFL_RRN"));
                    alarmCategory.setWaitTimeForRemind(rs.getLong("WAIT_TIME_FOR_REMINDER"));
                    alarmCategory.setTriggerWflRrn(rs.getLong("TRIGGER_WFL_RRN"));
                    alarmCategory.setAcknowledgeWflRrn(rs.getLong("ACKNOWLEDGE_WFL_RRN"));
                    alarmCategory.setClearWflRrn(rs.getLong("CLEAR_WFL_RRN"));
                    return alarmCategory;
                }
            }, alarmCategoryRrn);
        }

        @Override
        public String getAlarmCategoryByWflRrn(Long workflowRrn) {
            String sql = "select no.instance_id from alarm_category ac, named_object no where ac" + ".alarm_category_rrn" +
                    "=no.instance_rrn and ac.trigger_wfl_rrn=?";

            return jdbcTemplate.queryForObject(sql, new Object[]{workflowRrn}, String.class);
        }

    }