package com.querydsl.sql.spatial;
import java.util.List;
import org.geolatte.geom.*;
import org.geolatte.geom.codec.Wkt;
import org.geolatte.geom.crs.CrsId;
import com.google.common.collect.Lists;
import com.querydsl.sql.Connections;
public abstract class AbstractConverterTest {
protected PointSequence createSequence(CrsId crs, Point... points) {
PointSequenceBuilder builder = PointSequenceBuilders.fixedSized(points.length, points[0].getDimensionalFlag(), crs);
for (Point point : points) {
builder.add(point);
}
return builder.toPointSequence();
}
protected List<Geometry> getGeometries() {
CrsId crs = CrsId.valueOf(1);
List<Geometry> data = Lists.newArrayList();
// points
// data.add(Points.createEmpty());
data.add(Points.create2D(1, 2));
data.add(Points.create2D(1, 2, crs));
data.add(Points.create3D(1, 2, 3));
data.add(Points.create3D(1, 2, 3, crs));
data.add(Points.create2DM(1, 2, 3));
data.add(Points.create2DM(1, 2, 3, crs));
// linestring
data.add(LineString.createEmpty());
for (int i = 0; i < 6; i++) {
data.add(new LineString(createSequence(crs, (Point) data.get(i), (Point) data.get(i))));
}
// polygon
// TODO
// multipoint
data.add(MultiPoint.createEmpty());
for (int i = 0; i < 6; i++) {
data.add(new MultiPoint(new Point[]{(Point) data.get(i)}));
}
// multilinestring
int size = data.size();
data.add(MultiLineString.createEmpty());
for (int i = 0; i < size; i++) {
if (data.get(i) instanceof LineString) {
data.add(new MultiLineString(new LineString[]{(LineString) data.get(i)}));
}
}
// multipolygon
data.add(MultiPolygon.createEmpty());
for (int i = 0; i < size; i++) {
if (data.get(i) instanceof Polygon) {
data.add(new MultiPolygon(new Polygon[]{(Polygon) data.get(i)}));
}
}
// collection
size = data.size();
for (int i = 0; i < size; i++) {
data.add(new GeometryCollection(new Geometry[]{data.get(i)}));
}
for (String wkt : Connections.getSpatialData().values()) {
data.add(Wkt.fromWkt(wkt));
}
return data;
}
}