package com.idega.data.query;
import java.util.Set;
import com.idega.data.query.output.Output;
import com.idega.data.query.output.Outputable;
import com.idega.data.query.output.ToStringer;
import com.idega.util.CoreConstants;
/**
* @author <a href="joe@truemesh.com">Joe Walnes</a>
*/
public abstract class Criteria implements Outputable, Cloneable{
@Override
public abstract void write(Output out);
@Override
public String toString() {
return ToStringer.toString(this);
}
protected String quote(char s) {
if (s == '\\') {
return "'\\'";
} else {
return "'"+s+"'";
}
}
protected String quote(String s) {
return quote(s, false);
}
protected String quote(String s, boolean addPercents) {
if (s == null) {
return "null";
}
StringBuffer str = new StringBuffer();
str.append('\'');
if (addPercents) {
str.append(CoreConstants.PERCENT);
}
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '\\'
|| s.charAt(i) == '\"'
|| s.charAt(i) == '\'') {
str.append('\\');
}
str.append(s.charAt(i));
}
if (addPercents) {
str.append(CoreConstants.PERCENT);
}
str.append('\'');
return str.toString();
}
public abstract Set<Table> getTables();
@Override
public Object clone(){
Criteria obj = null;
try {
obj = (Criteria)super.clone();
}
catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return obj;
}
}