Search in sources :

Example 6 with SqlMapQuery

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

the class Parser method loopNode.

/**
	 * XML Document에서 Node 단위로 반복하여 Query를 추출하여 SqlMapFile에 담는다.
	 *
	 * @param document XML Document
	 * @param sqlMapFile
	 * @throws Exception
	 */
private void loopNode(Document document, SqlMapFile sqlMapFile) throws Exception {
    String currentComment = "";
    SqlMapQueryParser queryParser = new SqlMapQueryParser();
    // rootElement 하위의 모든 Node를 읽어온다
    // Node 타입이 COMMENT, ELEMENT인 경우에 따라 정보 수집
    Iterator<?> nodeIterator = document.getRootElement().nodeIterator();
    while (nodeIterator.hasNext()) {
        Node node = (Node) nodeIterator.next();
        switch(node.getNodeType()) {
            case Node.COMMENT_NODE:
                currentComment = node.getText();
                break;
            case Node.ELEMENT_NODE:
                // parsing 해야 할 element인지 확인
                if (SqlMapParserUtil.isParsingTarget(node.getName())) {
                    //Element 타입의 node에서 Query 정보를 읽어 SqlMapQuery를 생성한다.
                    SqlMapQuery query = queryParser.parse((Element) node);
                    // ELEMENT_NODE 직전에 읽어들인 Comment를 본 쿼리의 comment로 간주하여 설정한다.
                    query.setComment(currentComment.replaceAll("\t", ""));
                    sqlMapFile.getSqlMapQueryList().add(query);
                }
                currentComment = "";
                break;
            case Node.TEXT_NODE:
                break;
            default:
                currentComment = "";
                break;
        }
    }
}
Also used : Node(org.dom4j.Node) SqlMapQuery(com.nhn.dbtool.query.parser.sqlmap.model.SqlMapQuery)

Aggregations

SqlMapQuery (com.nhn.dbtool.query.parser.sqlmap.model.SqlMapQuery)6 SqlMapCondition (com.nhn.dbtool.query.parser.sqlmap.model.SqlMapCondition)3 Node (org.dom4j.Node)3 Document (org.dom4j.Document)1 DocumentException (org.dom4j.DocumentException)1