package org.sql2o.quirks.parameterparsing.impl; import org.sql2o.quirks.parameterparsing.SqlParameterParsingStrategy; import org.sql2o.tools.AbstractCache; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Created by lars on 11.04.14. */ public class DefaultSqlParameterParsingStrategy implements SqlParameterParsingStrategy { public CharParser[] getCharParsers(Map<String, List<Integer>> paramMap) { return new CharParser[]{ new QuoteParser(), new DoubleHyphensCommentParser(), new ForwardSlashCommentParser(), new ParameterParser(paramMap), new DefaultParser() }; } @SuppressWarnings("ConstantConditions") public String parseSql(String statement, Map<String, List<Integer>> paramMap) { final int length = statement.length(); final StringBuilder parsedQuery = new StringBuilder(length); final CharParser[] charParsers = getCharParsers(paramMap); for (int idx = 0; idx < length; idx++) { for (CharParser parser : charParsers) { char c = statement.charAt(idx); if (parser.canParse(c, statement, idx)){ idx = parser.parse(c, idx, parsedQuery, statement, length); break; } } } return parsedQuery.toString(); } }