/** * Copyright (C) 2010 BonitaSoft S.A. * BonitaSoft, 31 rue Gustave Eiffel - 38000 Grenoble * This library is free software; you can redistribute it and/or modify it under the terms * of the GNU Lesser General Public License as published by the Free Software Foundation * version 2.1 of the License. * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth * Floor, Boston, MA 02110-1301, USA. **/ package org.ow2.bonita.services; /** * * @author Matthieu Chaffotte * */ class QueryFormatter { static final String OR = "OR"; static final String AND = "AND"; static final String TO = "TO"; static final String L_PARENTHESIS = "("; static final String R_PARENTHESIS = ")"; static final String L_SQUARE_BRACKET = "["; static final String R_SQUARE_BRACKET = "]"; static final String L_CURLY_BRACKET = "{"; static final String R_CURLY_BRACKET = "}"; static final String FIELD_VALUE_SEPARATOR = ":"; static final String WILDCARD = "*"; protected static String[] specialCharacters = new String[] {"\\", "+", "-", "&&", "||", "!", L_PARENTHESIS, R_PARENTHESIS, L_CURLY_BRACKET, R_CURLY_BRACKET, L_SQUARE_BRACKET, R_SQUARE_BRACKET, "^", "\"", "~", WILDCARD, "?", FIELD_VALUE_SEPARATOR}; protected static String escapeSpecialCharacters(String value) { String temp = value; for (String specialCharacter : specialCharacters) { temp = temp.replace(specialCharacter, "\\" + specialCharacter); } return temp; } protected static String field(String fieldName, String value) { StringBuilder field = new StringBuilder(fieldName); field.append(FIELD_VALUE_SEPARATOR).append(value); return field.toString(); } protected static String startsWith(String value) { String formattedValue = escapeSpecialCharacters(value); StringBuilder starts = new StringBuilder(formattedValue); starts.append(WILDCARD); return starts.toString(); } protected static String equals(String value) { String formattedValue = escapeSpecialCharacters(value); return formattedValue; } protected static String ranges(final String from, final String to, boolean exclusive) { StringBuilder range = new StringBuilder(); String left = L_SQUARE_BRACKET; String right = R_SQUARE_BRACKET; if (exclusive) { left = L_CURLY_BRACKET; right = R_CURLY_BRACKET; } String formattedFrom = escapeSpecialCharacters(from); String formattedTo = escapeSpecialCharacters(to); range.append(left).append(formattedFrom).append(" ") .append(TO).append(" ").append(formattedTo).append(right); return range.toString(); } }