diff --git a/src/main/java/mil/dds/anet/beans/search/LocationSearchQuery.java b/src/main/java/mil/dds/anet/beans/search/LocationSearchQuery.java index d0691dfa98..9eef839cfa 100644 --- a/src/main/java/mil/dds/anet/beans/search/LocationSearchQuery.java +++ b/src/main/java/mil/dds/anet/beans/search/LocationSearchQuery.java @@ -10,6 +10,10 @@ public class LocationSearchQuery extends AbstractSearchQuery qb, + LocationSearchQuery query); + protected void addOrderByClauses(AbstractSearchQueryBuilder qb, LocationSearchQuery query) { switch (query.getSortBy()) { case CREATED_AT: diff --git a/src/main/java/mil/dds/anet/search/mssql/MssqlLocationSearcher.java b/src/main/java/mil/dds/anet/search/mssql/MssqlLocationSearcher.java index bbd0f2a702..42033ed3e7 100644 --- a/src/main/java/mil/dds/anet/search/mssql/MssqlLocationSearcher.java +++ b/src/main/java/mil/dds/anet/search/mssql/MssqlLocationSearcher.java @@ -36,4 +36,9 @@ protected void addOrderByClauses(AbstractSearchQueryBuilder qb, LocationSe super.addOrderByClauses(qb, query); } + @Override + protected void addWithinPolygon(AbstractSearchQueryBuilder qb, LocationSearchQuery query) { + // TODO + } + } diff --git a/src/main/java/mil/dds/anet/search/pg/PostgresqlLocationSearcher.java b/src/main/java/mil/dds/anet/search/pg/PostgresqlLocationSearcher.java index 99b33f14c2..0897973bbd 100644 --- a/src/main/java/mil/dds/anet/search/pg/PostgresqlLocationSearcher.java +++ b/src/main/java/mil/dds/anet/search/pg/PostgresqlLocationSearcher.java @@ -28,4 +28,12 @@ protected void addOrderByClauses(AbstractSearchQueryBuilder qb, LocationSe super.addOrderByClauses(qb, query); } + @Override + protected void addWithinPolygon(AbstractSearchQueryBuilder qb, LocationSearchQuery query) { + qb.addWhereClause(String.format( + "\"uuid\" IN (SELECT \"uuid\" FROM locations WHERE ST_Within(\"gis_point\", " + + "ST_MakePolygon( ST_GeomFromText('%1$s', 3857))))", + query.getWithinPolygon())); + } + }