package com.revolsys.record.query;
import com.revolsys.datatype.DataType;
import com.revolsys.record.schema.RecordStore;
public class Cast extends AbstractUnaryQueryValue {
private final String dataType;
public Cast(final QueryValue queryValue, final String dataType) {
super(queryValue);
this.dataType = dataType;
}
public Cast(final String name, final String dataType) {
this(new Column(name), dataType);
}
@Override
public void appendDefaultSql(final Query query, final RecordStore recordStore,
final StringBuilder buffer) {
buffer.append("CAST(");
super.appendDefaultSql(query, recordStore, buffer);
buffer.append(" AS ");
buffer.append(this.dataType);
buffer.append(")");
}
@Override
public Cast clone() {
return (Cast)super.clone();
}
@Override
public boolean equals(final Object obj) {
if (obj instanceof Cast) {
final Cast condition = (Cast)obj;
if (DataType.equal(condition.getDataType(), this.getDataType())) {
return super.equals(condition);
}
}
return false;
}
public String getDataType() {
return this.dataType;
}
@Override
public String toString() {
final StringBuilder buffer = new StringBuilder();
buffer.append("CAST(");
buffer.append(super.toString());
buffer.append(" AS ");
buffer.append(this.dataType);
buffer.append(")");
return buffer.toString();
}
}