Line data Source code
1 : // Copyright (C) 2014 The Android Open Source Project 2 : // 3 : // Licensed under the Apache License, Version 2.0 (the "License"); 4 : // you may not use this file except in compliance with the License. 5 : // You may obtain a copy of the License at 6 : // 7 : // http://www.apache.org/licenses/LICENSE-2.0 8 : // 9 : // Unless required by applicable law or agreed to in writing, software 10 : // distributed under the License is distributed on an "AS IS" BASIS, 11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 : // See the License for the specific language governing permissions and 13 : // limitations under the License. 14 : 15 : package com.google.gerrit.index.query; 16 : 17 : import com.google.auto.value.AutoValue; 18 : import com.google.common.collect.ImmutableList; 19 : import com.google.gerrit.common.Nullable; 20 : import java.util.List; 21 : 22 : /** Results of a query over entities. */ 23 : @AutoValue 24 151 : public abstract class QueryResult<T> { 25 : public static <T> QueryResult<T> create( 26 : @Nullable String query, Predicate<T> predicate, int limit, List<T> entities) { 27 : boolean more; 28 151 : if (entities.size() > limit) { 29 17 : more = true; 30 17 : entities = entities.subList(0, limit); 31 : } else { 32 151 : more = false; 33 : } 34 151 : return new AutoValue_QueryResult<>(query, predicate, ImmutableList.copyOf(entities), more); 35 : } 36 : 37 : /** Returns the original query string, or null if the query was created programmatically. */ 38 : @Nullable 39 : public abstract String query(); 40 : 41 : /** Returns the predicate after all rewriting and other modification by the query subsystem. */ 42 : public abstract Predicate<T> predicate(); 43 : 44 : /** Returns the query results. */ 45 : public abstract ImmutableList<T> entities(); 46 : 47 : /** 48 : * Returns whether the query could be retried with a higher start/limit to produce more results. 49 : * Never true if {@link #entities()} is empty. 50 : */ 51 : public abstract boolean more(); 52 : }