@Override
public int getCount() {
if (query.getFilter().equals(Filter.INCLUDE)) {
final Map<StatisticsId, InternalDataStatistics<SimpleFeature, ?, ?>> statsMap =
reader.getTransaction().getDataStatistics();
StatisticsId id = CountDataStatistics.STATS_TYPE.newBuilder().build().getId();
if (statsMap.containsKey(id)) {
final CountDataStatistics stats = (CountDataStatistics) statsMap.get(id);
if ((stats != null) && stats.isSet()) {
return (int) stats.getCount();
}
}
} else if (query.getFilter().equals(Filter.EXCLUDE)) {
return 0;
}
QueryConstraints constraints;
try {
constraints = getQueryConstraints();
return (int) reader.getCountInternal(
constraints.jtsBounds,
constraints.timeBounds,
getFilter(query),
constraints.limit);
} catch (TransformException | FactoryException e) {
LOGGER.warn("Unable to transform geometry, can't get count", e);
}
return 0;
}