@Override
protected PlatformOutput createExpanded(PlatformEntity entity, DbQuery query, Session session)
throws DataAccessException {
PlatformOutput result = createCondensed(entity, query, session);
DbQuery platformQuery = getDbQuery(query.getParameters().extendWith(Parameters.PLATFORMS, result.getId())
.removeAllOf(Parameters.FILTER_PLATFORM_TYPES).removeAllOf(Parameters.FILTER_FIELDS));
DbQuery datasetQuery =
getDbQuery(platformQuery.getParameters().removeAllOf(Parameters.BBOX).removeAllOf(Parameters.NEAR)
.removeAllOf(Parameters.ODATA_FILTER).removeAllOf(Parameters.FILTER_FIELDS));
List<DatasetOutput<AbstractValue<?>>> datasets = seriesRepository.getAllCondensed(datasetQuery);
Geometry geometry = entity.getGeometry() == null ? getLastSamplingGeometry(datasets, platformQuery, session)
: entity.getGeometry();
if (!matchesSpatialFilter(geometry, query)) {
return null;
}
Set<Map<String, Object>> parameters = entity.getMappedParameters(query.getLocale());
result.setValue(PlatformOutput.GEOMETRY, geometry, query.getParameters(), result::setGeometry);
result.setValue(PlatformOutput.DATASETS, datasets, query.getParameters(), result::setDatasets);
result.setValue(PlatformOutput.PARAMETERS, parameters, query.getParameters(), result::setParameters);
return result;
}