Search in sources :

Example 1 with SqlMapParameter

use of com.nhn.dbtool.query.parser.sqlmap.model.SqlMapParameter in project cubrid-manager by CUBRID.

the class SqlMapParameterParser method createDynamicParameter.

/**
	 * Element node의 property attribute를 통해서 파라미터를 추출하여 SqlMapQuery의 ParameterList에 추가 한다.
	 *
	 * @param node Element node
	 * @param query 추출한 파라미터를  담을 SqlMapQuery 객체
	 */
private void createDynamicParameter(Node node, SqlMapQuery query) {
    String parameterName = SqlMapParserUtil.getAttribute(node, "property");
    if (StringUtils.isNotEmpty(parameterName)) {
        SqlMapParameter newParameter = new SqlMapParameter();
        newParameter.setName(parameterName);
        newParameter.setDynamic(true);
        query.addParameter(newParameter);
    }
}
Also used : SqlMapParameter(com.nhn.dbtool.query.parser.sqlmap.model.SqlMapParameter)

Example 2 with SqlMapParameter

use of com.nhn.dbtool.query.parser.sqlmap.model.SqlMapParameter in project cubrid-manager by CUBRID.

the class SqlMapParameterParser method createStaticParameter.

/**
	 * Element내의 text 내용에서 파라미터를 추출하여 SqlMapQuery의 ParameterList에 추가 한다.
	 *
	 * @param nodeText Element내의 text 내용
	 * @param query 추출한 파라미터를  담을 SqlMapQuery 객체
	 */
private void createStaticParameter(String nodeText, SqlMapQuery query) {
    List<String> parameterList = SqlMapParserUtil.parseParameter(nodeText);
    for (String parameterName : parameterList) {
        SqlMapParameter newParameter = new SqlMapParameter();
        newParameter.setName(parameterName);
        newParameter.setDynamic(false);
        query.addParameter(newParameter);
    }
}
Also used : SqlMapParameter(com.nhn.dbtool.query.parser.sqlmap.model.SqlMapParameter)

Example 3 with SqlMapParameter

use of com.nhn.dbtool.query.parser.sqlmap.model.SqlMapParameter in project cubrid-manager by CUBRID.

the class SqlMapQueryParser method extractMyBatisTestConditions.

/**
	 * MyBatis test 속성 내의 조건식을 쿼리 조합시 사용하도록 parameter list에 입력
	 *
	 * @param query
	 * @param conditionList
	 */
private void extractMyBatisTestConditions(SqlMapQuery query, List<SqlMapCondition> conditionList) {
    if (conditionList == null) {
        return;
    }
    for (SqlMapCondition condition : conditionList) {
        if (condition == null || condition.getMyBatisTestConditions() == null) {
            continue;
        }
        for (MyBatisTestCondition mCondition : condition.getMyBatisTestConditions()) {
            String property = mCondition.getProperty();
            SqlMapParameter sqlmapParameter = new SqlMapParameter();
            sqlmapParameter.setName(property);
            sqlmapParameter.setDynamic(true);
            query.addParameter(sqlmapParameter);
        }
        if ("foreach".equals(condition.getType())) {
            SqlMapParameter sqlmapParameter = new SqlMapParameter();
            sqlmapParameter.setName(condition.getCollection());
            sqlmapParameter.setDynamic(true);
            query.addParameter(sqlmapParameter);
        }
        if (condition.getChildConditionList() != null) {
            extractMyBatisTestConditions(query, condition.getChildConditionList());
        }
    }
}
Also used : SqlMapParameter(com.nhn.dbtool.query.parser.sqlmap.model.SqlMapParameter) MyBatisTestCondition(com.nhn.dbtool.query.parser.sqlmap.model.MyBatisTestCondition) SqlMapCondition(com.nhn.dbtool.query.parser.sqlmap.model.SqlMapCondition)

Example 4 with SqlMapParameter

use of com.nhn.dbtool.query.parser.sqlmap.model.SqlMapParameter in project cubrid-manager by CUBRID.

the class Parser method mergeInclude.

/**
	 * Include Id에 해당 하는 Query의 파싱된 정보를 원본 Query 및 Condition 에 추가
	 *
	 * @param query 원본 쿼리
	 * @param condition 원본 Include Condition
	 * @param includeQuery Include condition에 해당하는  Query
	 */
private void mergeInclude(SqlMapQuery query, SqlMapCondition condition, SqlMapQuery includeQuery) {
    // Query 정보 추가
    condition.setStatement(includeQuery.getQuery());
    condition.setModifiedStatement(includeQuery.getModifiedQuery());
    // includeQuery의 condition 목록을 원본 Condition의 childCondition으로 추가
    // condition를 그대로 추가하지 않고 Object의 hascode를 포함한 key값을 다시 생성하여야 한다.
    List<SqlMapCondition> includeConditionList = new ArrayList<SqlMapCondition>();
    for (SqlMapCondition includeCondition : includeQuery.getConditionList()) {
        SqlMapCondition copiedCondition = includeCondition;
        copiedCondition.setKey(null);
        // 기존 쿼리에서 key값을 통한 해당 condition의 statement가 위치 자리의 key값을 새롭게 생성된 key값으로 변경한다.
        condition.setModifiedStatement(condition.getModifiedStatement().replaceAll(includeCondition.getKey(), copiedCondition.getKey()));
        includeConditionList.add(copiedCondition);
    }
    condition.setChildConditionList(includeQuery.getConditionList());
    // Parameter 추가
    for (SqlMapParameter includeParameter : includeQuery.getParameterList()) {
        query.addParameter(includeParameter);
    }
}
Also used : SqlMapParameter(com.nhn.dbtool.query.parser.sqlmap.model.SqlMapParameter) ArrayList(java.util.ArrayList) SqlMapCondition(com.nhn.dbtool.query.parser.sqlmap.model.SqlMapCondition)

Aggregations

SqlMapParameter (com.nhn.dbtool.query.parser.sqlmap.model.SqlMapParameter)4 SqlMapCondition (com.nhn.dbtool.query.parser.sqlmap.model.SqlMapCondition)2 MyBatisTestCondition (com.nhn.dbtool.query.parser.sqlmap.model.MyBatisTestCondition)1 ArrayList (java.util.ArrayList)1