om.edu.squ.squportal.portlet.dps.rule.db.RuleDbImpl.java Source code

Java tutorial

Introduction

Here is the source code for om.edu.squ.squportal.portlet.dps.rule.db.RuleDbImpl.java

Source

/**
 * Project            :   prjDPS
 * Organization         :   Sultan Qaboos University | Muscat | Oman
 * Centre            :   Centre for Information System
 * Department         :   Web & E-Services
 * 
 * Author            :   Bhabesh
 *
 * FrameWork         :   Spring 4.0.8 (Annotation) Portlet
 * 
 * File Name         :   RuleDbImpl.java
 * Package Name         :   om.edu.squ.squportal.portlet.dps.rule.db
 * Date of creation      :   Mar 13, 2017  2:52:04 PM
 * Date of modification :   
 * 
 * Summary            :   
 *
 *
 * Copyright 2017 the original author or authors and Organization.
 *
 * Licensed under the SQU, CIS policy
 * you may not use this file except in compliance with the License.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *
 * 
 */
package om.edu.squ.squportal.portlet.dps.rule.db;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import om.edu.squ.squportal.portlet.dps.rule.bo.StudentCompletionAndJoinTime;
import om.edu.squ.squportal.portlet.dps.rule.bo.YearSemester;
import om.edu.squ.squportal.portlet.dps.utility.Constants;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

/**
 * @author Bhabesh
 *
 */
public class RuleDbImpl implements RuleDbDao {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    private NamedParameterJdbcTemplate nPJdbcTemplDps;
    private Properties queryPropsCommonRule;

    /**
     * Setter method : setnPJdbcTemplDps
     * @param nPJdbcTemplDps the nPJdbcTemplDps to set
     * 
     * Date          : Mar 13, 2017 3:13:34 PM
     */
    public void setnPJdbcTemplDps(NamedParameterJdbcTemplate nPJdbcTemplDps) {
        this.nPJdbcTemplDps = nPJdbcTemplDps;
    }

    /**
     * Setter method : setQueryPropsCommonRule
     * @param queryPropsCommonRule the queryPropsCommonRule to set
     * 
     * Date          : Mar 13, 2017 3:13:34 PM
     */
    public void setQueryPropsCommonRule(Properties queryPropsCommonRule) {
        this.queryPropsCommonRule = queryPropsCommonRule;
    }

    /**
     * 
     * method name  : getJoinAndCloseTime
     * @param studentNo
     * @param stdStatCode
     * @return
     * RuleDbImpl
     * return type  : StudentCompletionAndJoinTime
     * 
     * purpose      : Get Joining and estimated total number of semester to completion of the course
     *
     * Date          :   Mar 13, 2017 4:15:07 PM
     */
    public StudentCompletionAndJoinTime getJoinAndCloseTime(String studentNo, String stdStatCode) {

        String SQL_RULE_STUDENT_JOIN_CLOSE_TIME = queryPropsCommonRule
                .getProperty(Constants.CONST_PROP_SQL_RULE_STUDENT_JOIN_CLOSE_TIME);
        RowMapper<StudentCompletionAndJoinTime> mapper = new RowMapper<StudentCompletionAndJoinTime>() {

            @Override
            public StudentCompletionAndJoinTime mapRow(ResultSet rs, int rowNum) throws SQLException {
                StudentCompletionAndJoinTime studentCompletionAndJoinTime = new StudentCompletionAndJoinTime();
                studentCompletionAndJoinTime.setStudentNo(rs.getString(Constants.CONST_COLMN_STUDENT_NO));
                studentCompletionAndJoinTime.setStdStatCode(rs.getString(Constants.CONST_COLMN_STDSTATCD));
                studentCompletionAndJoinTime
                        .setEstimatedSemesters(rs.getInt(Constants.CONST_COLMN_DGR_GRAD_ESTIMATE_SEM_COUNT));
                studentCompletionAndJoinTime
                        .setFromCCYrCode(rs.getInt(Constants.COST_COL_DPS_FROM_COURSE_YEAR_CODE));
                studentCompletionAndJoinTime.setFromSemCode(rs.getInt(Constants.COST_COL_DPS_FROM_SEMESTER_CODE));
                studentCompletionAndJoinTime.setCurrentYear(rs.getInt(Constants.COST_COL_DPS_CURRENT_YEAR));
                return studentCompletionAndJoinTime;
            }
        };

        Map<String, String> mapParamsRule = new HashMap<String, String>();
        mapParamsRule.put("paramStdNo", studentNo);
        mapParamsRule.put("paramStdStatCode", stdStatCode);
        return nPJdbcTemplDps.queryForObject(SQL_RULE_STUDENT_JOIN_CLOSE_TIME, mapParamsRule, mapper);
    }

    /**
     * 
     * method name  : countPostpone
     * @param studentNo
     * @param stdStatCode
     * @return
     * RuleDbImpl
     * return type  : int
     * 
     * purpose      : Count number of records (semesters) in postpone
     *
     * Date          :   Mar 13, 2017 6:30:31 PM
     */
    public int countPostpone(String studentNo, String stdStatCode) {
        String SQL_RULE_STUDENT_POSTPONE_COUNT = queryPropsCommonRule
                .getProperty(Constants.CONST_PROP_SQL_RULE_STUDENT_POSTPONE_COUNT);
        Map<String, String> mapParamsRule = new HashMap<String, String>();
        mapParamsRule.put("paramStdNo", studentNo);
        mapParamsRule.put("paramStdStatCode", stdStatCode);

        return nPJdbcTemplDps.queryForInt(SQL_RULE_STUDENT_POSTPONE_COUNT, mapParamsRule);
    }

    /**
     * 
     * method name  : getCurrentYearSemester
     * @return
     * RuleDbImpl
     * return type  : YearSemester
     * 
     * purpose      : Get Current year sem
     *
     * Date          :   Mar 14, 2017 12:51:58 PM
     */
    public YearSemester getCurrentYearSemester() {
        String SQL_RULE_CURRENT_YEAR_SEMESTER = queryPropsCommonRule
                .getProperty(Constants.CONST_PROP_SQL_RULE_CURRENT_YEAR_SEMESTER);

        RowMapper<YearSemester> rowMapper = new RowMapper<YearSemester>() {

            @Override
            public YearSemester mapRow(ResultSet rs, int rowNum) throws SQLException {
                YearSemester yearSemester = new YearSemester();
                yearSemester.setYear(rs.getInt(Constants.COST_COL_DPS_CURRENT_YEAR));
                yearSemester.setSemester(rs.getInt(Constants.COST_COL_DPS_SEMESTER_CODE));
                return yearSemester;
            }
        };

        Map<String, String> mapParamsRule = new HashMap<String, String>();

        return nPJdbcTemplDps.queryForObject(SQL_RULE_CURRENT_YEAR_SEMESTER, mapParamsRule, rowMapper);
    }

    /**
     * 
     * method name  : getThesisCode
     * @param studentNo
     * @param stdStatCode
     * @return
     * RuleDbImpl
     * return type  : int
     * 
     * purpose      : Get thesis code (0 for none)
     *
     * Date          :   Mar 15, 2017 9:15:15 AM
     */
    public int getThesisCode(String studentNo, String stdStatCode) {
        String SQL_RULE_THESIS_CODE = queryPropsCommonRule.getProperty(Constants.CONST_PROP_SQL_RULE_THESIS_CODE);
        Map<String, String> mapParamsRule = new HashMap<String, String>();
        mapParamsRule.put("paramStdNo", studentNo);
        mapParamsRule.put("paramStdStatCode", stdStatCode);

        return nPJdbcTemplDps.queryForInt(SQL_RULE_THESIS_CODE, mapParamsRule);
    }

    /**
     * 
     * method name  : getSeminarCount
     * @param studentNo
     * @param thesisCode
     * @return
     * RuleDbImpl
     * return type  : int
     * 
     * purpose      : Get number of records for available particular seminar in thesis
     *
     * Date          :   Mar 15, 2017 9:38:18 AM
     */
    public int getSeminarCount(String studentNo, int thesisCode, String seminarCodeName) {
        String SQL_RULE_SEMINAR_RECORD_COUNT = queryPropsCommonRule
                .getProperty(Constants.CONST_PROP_SQL_RULE_SEMINAR_RECORD_COUNT);
        Map<String, String> mapParamsRule = new HashMap<String, String>();
        mapParamsRule.put("paramStdNo", studentNo);
        mapParamsRule.put("paramSeminarAbrCode", seminarCodeName);
        mapParamsRule.put("paramThesisCode", String.valueOf(thesisCode));

        return nPJdbcTemplDps.queryForInt(SQL_RULE_SEMINAR_RECORD_COUNT, mapParamsRule);
    }

    /**
     * 
     * method name  : getCurrentDateInSpecificWeek
     * @param weekNumber
     * @return
     * RuleDbImpl
     * return type  : int
     * 
     * purpose      : Find whether the date is within specified week
     *
     * Date          :   Mar 15, 2017 4:41:48 PM
     */
    public int getCurrentDateInSpecificWeek(String weekNumber) {
        String SQL_RULE_CURR_DATE_IN_SPECIFIC_WEEK = queryPropsCommonRule
                .getProperty(Constants.CONST_PROP_SQL_RULE_CURR_DATE_IN_SPECIFIC_WEEK);
        Map<String, String> mapParamsRule = new HashMap<String, String>();
        mapParamsRule.put("param_week", weekNumber);

        return nPJdbcTemplDps.queryForInt(SQL_RULE_CURR_DATE_IN_SPECIFIC_WEEK, mapParamsRule);
    }

    /**
     * *********** Specific service related query which affects rules ************************ 
     */

    /**
     * 
     * method name  : extensionRecordAlreadyExist
     * @param studentNo
     * @param stdStatCode
     * @return
     * RuleDbImpl
     * return type  : int
     * 
     * purpose      : Find student records which already accepted, modified/in progress/ or in pending status
     *                if such records available, students might not get an opportunity to apply for extension again
     *
     * Date          :   Mar 15, 2017 6:51:07 PM
     */
    public int extensionRecordAlreadyExist(String studentNo, String stdStatCode) {
        String SQL_RULE_STUDENT_EXTENSION_COUNT = queryPropsCommonRule
                .getProperty(Constants.CONST_PROP_SQL_RULE_STUDENT_EXTENSION_COUNT);

        Map<String, String> mapParamsRule = new HashMap<String, String>();
        mapParamsRule.put("paramStdNo", studentNo);
        mapParamsRule.put("paramStdStatCode", stdStatCode);

        return nPJdbcTemplDps.queryForInt(SQL_RULE_STUDENT_EXTENSION_COUNT, mapParamsRule);
    }

    /**
     * 
     * method name  : isDropWPeriod
     * @param studentNo
     * @param stdStatCode
     * @return
     * RuleDbImpl
     * return type  : boolean
     * 
     * purpose      : whether the period is within drop w period 
     *
     * Date          :   Aug 20, 2017 4:46:22 PM
     */
    public boolean isDropWPeriod(String studentNo, String stdStatCode) {
        boolean result = false;
        String SQL_RULE_STUDENT_DROP_W_PERIOD = queryPropsCommonRule
                .getProperty(Constants.CONST_PROP_SQL_RULE_STUDENT_DROP_W_PERIOD);
        Map<String, String> mapParamsRule = new HashMap<String, String>();
        mapParamsRule.put("paramStdNo", studentNo);
        mapParamsRule.put("paramStdStatCode", stdStatCode);
        if (nPJdbcTemplDps.queryForObject(SQL_RULE_STUDENT_DROP_W_PERIOD, mapParamsRule, String.class)
                .equals(Constants.CONST_YES)) {
            return true;
        } else {
            return false;
        }

    }

}