Rev 1306 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
package pt.estgp.estgweb.services.common;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.log4j.Logger;
/**
* @author Jorge Machado
* @date 20/Nov/2009
* @time 10:32:07
* @email machadofisher@gmail.com
*/
public enum QueryLanguageChars
{
SLASH_ESCAPE
("\"",
false),
PLUS
("+",
false),
MINUS
("-",
false),
ANDe
("&&",
false),
OR
("||",
false),
EXCL
("!",
false),
BRACKET_L
("(",
true),
BRACKET_R
(")",
true),
CHAV_L
("{",
false),
CHAV_R
("}",
false),
RECT_BRACKETS_L
("[",
false),
RECT_BRACKETS_R
("]",
false),
CIRCUNFLEX
("^",
false),
QUOTE
("\"",
false),
TIL
("~",
false),
ASTRISK
("*",
false),
QUESTION_MARK
("?",
false),
TWO_DOTS
(":",
true);
1.5.0/docs/api/java/lang/String.html">String chars
;
boolean usual
;
private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(QueryLanguageChars.
class);
private QueryLanguageChars
(1.5.0/docs/api/java/lang/String.html">String chars,
boolean usual
)
{
this.
usual = usual
;
this.
chars = chars
;
}
public static 1.5.0/docs/api/java/lang/String.html">String escape
(1.5.0/docs/api/java/lang/String.html">String string
)
{
for(QueryLanguageChars chars: values
())
{
string = string.
replace(chars.
chars,
"\\" + chars.
chars);
}
logger.
info("Final Escaped Query: " + string
);
return string
;
}
public static boolean containsSpecialNotUsual
(1.5.0/docs/api/java/lang/String.html">String string
)
{
for(QueryLanguageChars chars: values
())
{
if(!chars.
usual && string.
indexOf(chars.
chars) >= 0
)
return true;
}
return false;
}
public static boolean contains
(1.5.0/docs/api/java/lang/String.html">String string
)
{
for(QueryLanguageChars chars: values
())
{
if(string.
indexOf(chars.
chars) >= 0
)
return true;
}
return false;
}
static QueryParser queryParser =
new QueryParser
("",
new SimpleAnalyzer
());
public static boolean isValid
(1.5.0/docs/api/java/lang/String.html">String query
)
{
if(query ==
null)
return false;
try {
queryParser.
parse(query
);
return true;
} catch (1.5.0/docs/api/java/text/ParseException.html">ParseException e
) {
logger.
info("bad query for SruSearchService:" + query +
" -> " + e.
toString());
logger.
debug(e,e
);
}
return false;
}
}