package ca.sqlpower.sql;
public class NonNumericToWildcardFilter implements ColumnFilter {
static final int STATE_NUMBERS=0;
static final int STATE_NON_NUMBERS=1;
char wildcard='%';
boolean leadingWildcard=false;
boolean trailingWildcard=false;
public static ColumnFilter getInstance() {
return (ColumnFilter)new NonNumericToWildcardFilter();
}
public void setWildcardCharacter(char wild) {
wildcard=wild;
}
public void setForceLeadingWildcard(boolean enabled) {
leadingWildcard=enabled;
}
public void setForceTrailingWildcard(boolean enabled) {
trailingWildcard=enabled;
}
public String filter(String in) {
char ch;
int state=STATE_NUMBERS;
StringBuffer out=new StringBuffer(in.length());
for(int i=0; i<in.length(); i++) {
ch=in.charAt(i);
if(ch < '0' || ch > '9') {
if(state==STATE_NUMBERS) {
out.append(wildcard);
}
state=STATE_NON_NUMBERS;
} else {
out.append(ch);
state=STATE_NUMBERS;
}
}
if(out.charAt(0) != wildcard) {
out.insert(0, wildcard);
}
if(out.charAt(out.length()-1) != wildcard) {
out.append(wildcard);
}
return out.toString();
}
}