in stack/core/src/main/java/org/apache/usergrid/persistence/Query.java [200:315]
public static Query fromQueryParams( Map<String, List<String>> params )
throws QueryParseException {
Query q = null;
CounterResolution resolution = null;
List<Identifier> identifiers = null;
List<CounterFilterPredicate> counterFilters = null;
String ql = QueryUtils.queryStrFrom( params );
String type = ListUtils.first( params.get( "type" ) );
Boolean reversed = ListUtils.firstBoolean( params.get( "reversed" ) );
String connection = ListUtils.first( params.get( "connectionType" ) );
UUID start = ListUtils.firstUuid( params.get( "start" ) );
String cursor = ListUtils.first( params.get( "cursor" ) );
Integer limit = ListUtils.firstInteger( params.get( "limit" ) );
List<String> permissions = params.get( "permission" );
Long startTime = ListUtils.firstLong( params.get( "start_time" ) );
Long finishTime = ListUtils.firstLong( params.get( "end_time" ) );
List<String> l = params.get( "resolution" );
if ( !ListUtils.isEmpty( l ) ) {
resolution = CounterResolution.fromString( l.get( 0 ) );
}
l = params.get( "counter" );
if ( !ListUtils.isEmpty( l ) ) {
counterFilters = CounterFilterPredicate.fromList( l );
}
Boolean pad = ListUtils.firstBoolean( params.get( "pad" ) );
for ( Entry<String, List<String>> param : params.entrySet() ) {
Identifier identifier = Identifier.from( param.getKey() );
if ( ( param.getValue() == null ) || ( param.getValue().size() == 0 ) || identifier.isUUID() ) {
if ( identifier != null ) {
if ( identifiers == null ) {
identifiers = new ArrayList<Identifier>();
}
identifiers.add( identifier );
}
}
}
if ( ql != null ) {
ql = ql.replace("+", "%2b"); // ql string supports literal + symbol, encode so it will decode correctly later
q = Query.fromQL( decode( ql ) );
}
if ( type != null ) {
q = newQueryIfNull( q );
q.setEntityType( type );
}
if ( connection != null ) {
q = newQueryIfNull( q );
q.setConnectionType( connection );
}
if ( permissions != null ) {
q = newQueryIfNull( q );
q.setPermissions( permissions );
}
if ( start != null ) {
q = newQueryIfNull( q );
q.setStartResult( start );
}
if ( cursor != null ) {
q = newQueryIfNull( q );
q.setCursor( cursor );
}
if ( limit != null ) {
q = newQueryIfNull( q );
q.setLimit( limit );
}
if ( startTime != null ) {
q = newQueryIfNull( q );
q.setStartTime( startTime );
}
if ( finishTime != null ) {
q = newQueryIfNull( q );
q.setFinishTime( finishTime );
}
if ( resolution != null ) {
q = newQueryIfNull( q );
q.setResolution( resolution );
}
if ( counterFilters != null ) {
q = newQueryIfNull( q );
q.setCounterFilters( counterFilters );
}
if ( pad != null ) {
q = newQueryIfNull( q );
q.setPad( pad );
}
if ( identifiers != null ) {
q = newQueryIfNull( q );
q.setIdentifiers( identifiers );
}
if ( reversed != null ) {
q = newQueryIfNull( q );
q.setReversed( reversed );
}
return q;
}