1 23 24 package org.continuent.sequoia.controller.backend.rewriting; 25 26 32 public class SimpleRewritingRule extends AbstractRewritingRule 33 { 34 35 private int queryPatternLength; 36 37 46 public SimpleRewritingRule(String queryPattern, String rewrite, 47 boolean caseSensitive, boolean stopOnMatch) 48 { 49 super(queryPattern, caseSensitive ? rewrite : rewrite.toLowerCase(), 50 caseSensitive, stopOnMatch); 51 queryPatternLength = queryPattern.length(); 52 } 53 54 57 public String rewrite(String sqlQuery) 58 { 59 int start; 61 if (isCaseSensitive) 62 start = sqlQuery.indexOf(queryPattern); 63 else 64 start = sqlQuery.toLowerCase().indexOf(queryPattern.toLowerCase()); 65 if (start == -1) 66 { hasMatched = false; 68 return sqlQuery; 69 } 70 hasMatched = true; 72 if (start == 0) 73 { 74 if (queryPatternLength < sqlQuery.length()) 75 return rewrite + sqlQuery.substring(queryPatternLength); 77 else 78 return rewrite; 80 } 81 else 82 { 83 if (start + queryPatternLength < sqlQuery.length()) 84 return sqlQuery.substring(0, start) + rewrite 85 + sqlQuery.substring(start + queryPatternLength); 86 else 87 return sqlQuery.substring(0, start) + rewrite; 89 } 90 } 91 92 } | Popular Tags |