Skip to content

Commit

Permalink
#3043: Add geosearch query for reports
Browse files Browse the repository at this point in the history
  • Loading branch information
ysf-simsoft committed Jun 25, 2020
1 parent 0583d06 commit 3a5080b
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/main/java/mil/dds/anet/beans/search/ReportSearchQuery.java
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,10 @@ public static enum EngagementStatus {
@GraphQLQuery
@GraphQLInputField
private Boolean sensitiveInfo;
@GraphQLQuery
@GraphQLInputField
private String withinPolygon;

// internal search parameter:
private boolean systemSearch;

Expand Down Expand Up @@ -361,6 +365,14 @@ public void setSensitiveInfo(Boolean sensitiveInfo) {
this.sensitiveInfo = sensitiveInfo;
}

public String getWithinPolygon() {
return withinPolygon;
}

public void setWithinPolygon(String withinPolygon) {
this.withinPolygon = withinPolygon;
}

@JsonIgnore
public boolean isSystemSearch() {
return systemSearch;
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/mil/dds/anet/search/AbstractReportSearcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -272,11 +272,17 @@ protected void buildQuery(Set<String> subFields, ReportSearchQuery query) {
}
}

if (query.getWithinPolygon() != null) {
addWithinPolygon(query);
}

addOrderByClauses(qb, query);
}

protected abstract void addTextQuery(ReportSearchQuery query);

protected abstract void addWithinPolygon(ReportSearchQuery query);

protected abstract void addBatchClause(ReportSearchQuery query);

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,14 @@ protected void addTextQuery(ReportSearchQuery query) {
qb.addSqlArg("fullTextQuery", qb.getFullTextQuery(text));
}

@Override
protected void addWithinPolygon(ReportSearchQuery query) {
qb.addWhereClause(String.format(
"\"locationUuid\" IN (SELECT \"uuid\" FROM locations WHERE "
+ "\"gis_point\".STWithin(geometry::STGeomFromText('%1$s', 3857)) = 1)",
query.getWithinPolygon()));
}

@Override
protected void addBatchClause(ReportSearchQuery query) {
addBatchClause(outerQb, query);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import mil.dds.anet.beans.Report;
import mil.dds.anet.beans.lists.AnetBeanList;
import mil.dds.anet.beans.search.ISearchQuery.SortOrder;
import mil.dds.anet.beans.search.LocationSearchQuery;
import mil.dds.anet.beans.search.ReportSearchQuery;
import mil.dds.anet.database.mappers.ReportMapper;
import mil.dds.anet.search.AbstractReportSearcher;
Expand Down Expand Up @@ -43,6 +44,14 @@ protected void addTextQuery(ReportSearchQuery query) {
addFullTextSearch("reports", query.getText(), query.isSortByPresent());
}

@Override
protected void addWithinPolygon(ReportSearchQuery query) {
qb.addWhereClause(String.format(
"\"locationUuid\" IN (SELECT \"uuid\" FROM locations WHERE ST_Within(\"gis_point\", "
+ "ST_GeomFromText('%1$s', 3857)))",
query.getWithinPolygon()));
}

@Override
protected void addBatchClause(ReportSearchQuery query) {
addBatchClause(qb, query);
Expand Down

0 comments on commit 3a5080b

Please sign in to comment.