package com.revolsys.record.query.functions;
import com.revolsys.datatype.DataTypes;
import com.revolsys.geometry.model.Geometry;
import com.revolsys.record.Record;
import com.revolsys.record.query.AbstractBinaryQueryValue;
import com.revolsys.record.query.Condition;
import com.revolsys.record.query.Query;
import com.revolsys.record.query.QueryValue;
import com.revolsys.record.schema.RecordStore;
public class GeometryEqual2d extends AbstractBinaryQueryValue implements Condition {
public GeometryEqual2d(final QueryValue geometry1Value, final QueryValue geometry2Value) {
super(geometry1Value, geometry2Value);
}
@Override
public void appendDefaultSql(final Query query, final RecordStore recordStore,
final StringBuilder buffer) {
buffer.append("ST_EQUALS(");
appendLeft(buffer, query, recordStore);
buffer.append(", ");
appendRight(buffer, query, recordStore);
buffer.append(")");
}
@Override
public GeometryEqual2d clone() {
final GeometryEqual2d clone = (GeometryEqual2d)super.clone();
return clone;
}
@Override
public boolean equals(final Object obj) {
if (obj instanceof GeometryEqual2d) {
final GeometryEqual2d condition = (GeometryEqual2d)obj;
return super.equals(condition);
}
return false;
}
public QueryValue getGeometry1Value() {
return getLeft();
}
public QueryValue getGeometry2Value() {
return getRight();
}
@Override
public boolean test(final Record record) {
final Geometry geometry1 = getLeft().getValue(record);
final Geometry geometry2 = getRight().getValue(record);
if (geometry1 == null || geometry2 == null) {
return false;
} else {
return geometry1.equals(2, geometry2);
}
}
@Override
public String toString() {
final Object left = getLeft();
final Object right = getRight();
return "ST_EQUALS(" + DataTypes.toString(left) + "," + DataTypes.toString(right) + ")";
}
}