RecipeContextManagerDaoImpl.java

package com.mycim.server.ctx.exec.dao.impl;

import com.mycim.framework.jdbc.JdbcTemplate;
import com.mycim.framework.jdbc.mapper.RowMapper;
import com.mycim.framework.utils.MiscUtils;
import com.mycim.framework.utils.lang.time.DateUtils;
import com.mycim.server.ctx.exec.dao.RecipeContextManagerDao;
import com.mycim.valueobject.consts.DataBaseNames;
import com.mycim.valueobject.prp.ContextValue;
import com.mycim.valueobject.prp.RecipeContextValue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * RecipeContextManagerDaoImpl
 *
 * @author pinyan.song
 * @version 6.0.0
 * @date 2019-9-4
 **/
@Repository
public class RecipeContextManagerDaoImpl implements RecipeContextManagerDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public List<ContextValue> getContextValues(RecipeContextValue contextValue) {
        StringBuffer sb = new StringBuffer("");

        if ((contextValue.getContextKey1() != null) && !contextValue.getContextKey1().trim().equals("")) {
            sb.append(" AND context_key1 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getContextKey1()));
        }

        if ((contextValue.getContextKey2() != null) && !contextValue.getContextKey2().trim().equals("")) {
            sb.append(" AND context_key2 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getContextKey2()));
        }

        if ((contextValue.getContextKey3() != null) && !contextValue.getContextKey3().trim().equals("")) {
            sb.append(" AND context_key3 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getContextKey3()));
        }

        if ((contextValue.getContextKey4() != null) && !contextValue.getContextKey4().trim().equals("")) {
            sb.append(" AND context_key4 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getContextKey4()));
        }

        if ((contextValue.getContextKey5() != null) && !contextValue.getContextKey5().trim().equals("")) {
            sb.append(" AND context_key5 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getContextKey5()));
        }

        if ((contextValue.getContextKey6() != null) && !contextValue.getContextKey6().trim().equals("")) {
            sb.append(" AND context_key6 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getContextKey6()));
        }

        if ((contextValue.getContextKey7() != null) && !contextValue.getContextKey7().trim().equals("")) {
            sb.append(" AND context_key7 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getContextKey7()));
        }

        if ((contextValue.getContextKey8() != null) && !contextValue.getContextKey8().trim().equals("")) {
            sb.append(" AND context_key8 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getContextKey8()));
        }

        if ((contextValue.getContextKey9() != null) && !contextValue.getContextKey9().trim().equals("")) {
            sb.append(" AND context_key9 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getContextKey9()));
        }

        if ((contextValue.getContextKey10() != null) && !contextValue.getContextKey10().trim().equals("")) {
            sb.append(" AND context_key10 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getContextKey10()));
        }

        if ((contextValue.getResultValue1() != null) && !contextValue.getResultValue1().trim().equals("")) {
            sb.append(" AND result_value1 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getResultValue1()));
        }

        if ((contextValue.getResultValue5() != null) && !contextValue.getResultValue5().trim().equals("")) {
            sb.append(" AND result_value5 = ");
            sb.append(MiscUtils.parseSQL(contextValue.getResultValue5()));
        }

        String sql =
                " SELECT context_rrn,sequence_number,status,effective_date_from,effective_date_to," + "ecn_rrn," + " " +
                        "context_key1, context_key2, context_key3, context_key4, context_key5, " + " context_key6, " +
                        "context_key7, context_key8, context_key9, " + " context_key10,context_key11,context_key12," +
                        "context_key13,context_key14,context_key15," + " result_value1,result_value2,result_value3," +
                        " result_value4,result_value5,result_value6, result_value7," +
                        " result_value8,result_value9,result_value10,result_value11," +
                        " result_value12,result_value13,result_value14,result_value15 " + " FROM " +
                        DataBaseNames.CONTEXT_VALUE + "    WHERE context_rrn = " + contextValue.getContextRrn();

        sql = sql + sb.toString();

        return jdbcTemplate.query(sql, new RowMapper<ContextValue>() {
            @Override
            public ContextValue mapRow(ResultSet rs, int rowNum) throws SQLException {
                ContextValue contextValue = new ContextValue();
                contextValue.setContextRrn(rs.getLong("context_rrn"));
                contextValue.setStatus(rs.getString("status"));
                contextValue.setSequenceNumber(rs.getInt("sequence_number"));

                if (rs.getDate("effective_date_from") != null) {
                    contextValue.setEffectiveDateFrom(DateUtils.formatDate(rs.getTimestamp("effective_date_from")));
                }

                contextValue.setEcnRrn(rs.getLong("ecn_rrn"));

                if (rs.getDate("effective_date_to") != null) {
                    contextValue.setEffectiveDateTo(DateUtils.formatDate(rs.getTimestamp("effective_date_to")));
                }

                contextValue.setContextKey1(rs.getString("context_key1"));
                contextValue.setContextKey2(rs.getString("context_key2"));
                contextValue.setContextKey3(rs.getString("context_key3"));
                contextValue.setContextKey4(rs.getString("context_key4"));
                contextValue.setContextKey5(rs.getString("context_key5"));
                contextValue.setContextKey6(rs.getString("context_key6"));
                contextValue.setContextKey7(rs.getString("context_key7"));
                contextValue.setContextKey8(rs.getString("context_key8"));
                contextValue.setContextKey9(rs.getString("context_key9"));
                contextValue.setContextKey10(rs.getString("context_key10"));
                contextValue.setContextKey11(rs.getString("context_key11"));
                contextValue.setContextKey12(rs.getString("context_key12"));
                contextValue.setContextKey13(rs.getString("context_key13"));
                contextValue.setContextKey14(rs.getString("context_key14"));
                contextValue.setContextKey15(rs.getString("context_key15"));
                contextValue.setResultValue1(rs.getString("result_value1"));
                contextValue.setResultValue2(rs.getString("result_value2"));
                contextValue.setResultValue3(rs.getString("result_value3"));
                contextValue.setResultValue4(rs.getString("result_value4"));
                contextValue.setResultValue5(rs.getString("result_value5"));
                contextValue.setResultValue6(rs.getString("result_value6"));
                contextValue.setResultValue7(rs.getString("result_value7"));
                contextValue.setResultValue8(rs.getString("result_value8"));
                contextValue.setResultValue9(rs.getString("result_value9"));
                contextValue.setResultValue10(rs.getString("result_value10"));
                contextValue.setResultValue11(rs.getString("result_value11"));
                contextValue.setResultValue12(rs.getString("result_value12"));
                contextValue.setResultValue13(rs.getString("result_value13"));
                contextValue.setResultValue14(rs.getString("result_value14"));
                contextValue.setResultValue15(rs.getString("result_value15"));

                contextValue.setSequence(rowNum + 1);
                return contextValue;
            }
        });
    }

    @Override
    public List getContextValuesForRecipeAndOperationSeq(long contextRrn, String extendWhereClause) {
        String sql = " SELECT sequence_number,status,effective_date_from,effective_date_to,ecn_rrn," + " " +
                "context_key1, context_key2, context_key3, context_key4, context_key5, " + " context_key6, " +
                "context_key7, context_key8, context_key9, " + " context_key10, context_key11, context_key12, " +
                "context_key13," + " context_key14,context_key15, result_value1,result_value2,result_value3," + " " +
                "result_value4,result_value5,result_value6, result_value7," + " result_value8,result_value9," +
                "result_value10 " + " FROM " + DataBaseNames.CONTEXT_VALUE + "    WHERE context_rrn = " + contextRrn;

        if (extendWhereClause != null) {
            sql = sql + extendWhereClause;
        }
        sql = "select * from (select * from (" + sql + " order by sequence_number desc ) result ) where rownum=1 ";

        return jdbcTemplate.query(sql, new RowMapper<ContextValue>() {
            @Override
            public ContextValue mapRow(ResultSet rs, int rowNum) throws SQLException {
                ContextValue contextValue = new ContextValue();
                contextValue.setContextRrn(contextRrn);
                contextValue.setStatus(rs.getString("status"));
                contextValue.setSequenceNumber(new Integer(rs.getInt("sequence_number")));

                if (rs.getDate("effective_date_from") != null) {
                    contextValue.setEffectiveDateFrom(DateUtils.formatDate(rs.getTimestamp("effective_date_from")));
                }

                contextValue.setEcnRrn(new Long(rs.getLong("ecn_rrn")));

                if (rs.getDate("effective_date_to") != null) {
                    contextValue.setEffectiveDateTo(DateUtils.formatDate(rs.getTimestamp("effective_date_to")));
                }

                contextValue.setContextKey1(rs.getString("context_key1"));
                contextValue.setContextKey2(rs.getString("context_key2"));
                contextValue.setContextKey3(rs.getString("context_key3"));
                contextValue.setContextKey4(rs.getString("context_key4"));
                contextValue.setContextKey5(rs.getString("context_key5"));
                contextValue.setContextKey6(rs.getString("context_key6"));
                contextValue.setContextKey7(rs.getString("context_key7"));
                contextValue.setContextKey8(rs.getString("context_key8"));
                contextValue.setContextKey9(rs.getString("context_key9"));
                contextValue.setContextKey10(rs.getString("context_key10"));
                contextValue.setContextKey11(rs.getString("context_key11"));
                contextValue.setContextKey12(rs.getString("context_key12"));
                contextValue.setContextKey13(rs.getString("context_key13"));
                contextValue.setContextKey14(rs.getString("context_key14"));
                contextValue.setContextKey15(rs.getString("context_key15"));
                contextValue.setResultValue1(rs.getString("result_value1"));
                contextValue.setResultValue2(rs.getString("result_value2"));
                contextValue.setResultValue3(rs.getString("result_value3"));
                contextValue.setResultValue4(rs.getString("result_value4"));
                contextValue.setResultValue5(rs.getString("result_value5"));
                contextValue.setResultValue6(rs.getString("result_value6"));
                contextValue.setResultValue7(rs.getString("result_value7"));
                contextValue.setResultValue8(rs.getString("result_value8"));
                contextValue.setResultValue9(rs.getString("result_value9"));
                contextValue.setResultValue10(rs.getString("result_value10"));
                contextValue.setSequence(rowNum + 1);
                return contextValue;
            }
        });
    }

}