* @return
*/
@SuppressWarnings("unchecked")
public Query unrollQuery(Query query, FeatureTypeMapping mapping) {
Query unrolledQuery = Query.ALL;
FeatureSource source = mapping.getSource();
if (!Query.ALL.equals(query)) {
Filter complexFilter = query.getFilter();
Filter unrolledFilter = AppSchemaDataAccess.unrollFilter(complexFilter, mapping);
Object includeProps = query.getHints().get(Query.INCLUDE_MANDATORY_PROPS);
List<PropertyName> propNames = getSurrogatePropertyNames(query.getProperties(),
mapping,
includeProps instanceof Boolean && ((Boolean) includeProps).booleanValue());
Query newQuery = new Query();
String name = source.getName().getLocalPart();
newQuery.setTypeName(name);
newQuery.setFilter(unrolledFilter);
newQuery.setProperties(propNames);
newQuery.setCoordinateSystem(query.getCoordinateSystem());
newQuery.setCoordinateSystemReproject(query.getCoordinateSystemReproject());