diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/manager/variant/VariantStorageManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/manager/variant/VariantStorageManager.java index f2b5798719c..91f6d73347c 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/manager/variant/VariantStorageManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/manager/variant/VariantStorageManager.java @@ -68,12 +68,11 @@ import static org.opencb.commons.datastore.core.QueryOptions.empty; import static org.opencb.opencga.catalog.db.api.StudyDBAdaptor.QueryParams.FQN; import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.*; +import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryUtils.addDefaultLimit; +import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryUtils.getDefaultLimit; public class VariantStorageManager extends StorageManager { - public static final int LIMIT_DEFAULT = 1000; - public static final int LIMIT_MAX = 5000; - private final VariantCatalogQueryUtils catalogUtils; public VariantStorageManager(CatalogManager catalogManager, StorageEngineFactory storageEngineFactory) { @@ -562,25 +561,6 @@ Map> checkSamplesPermissions(Query query, QueryOptions quer // Some aux methods - private int addDefaultLimit(QueryOptions queryOptions) { - return addDefaultLimit(queryOptions, LIMIT_MAX, LIMIT_DEFAULT); - } - - private int addDefaultLimit(QueryOptions queryOptions, int limitMax, int limitDefault) { - // Add default limit - int limit = getDefaultLimit(queryOptions.getInt(QueryOptions.LIMIT, -1), limitMax, limitDefault); - queryOptions.put(QueryOptions.LIMIT, limit); - return limit; - } - - private int getDefaultLimit(int limit, int limitMax, int limitDefault) { - if (limit > limitMax) { - logger.info("Unable to return more than {} variants. Change limit from {} to {}", limitMax, limit, limitMax); - } - limit = (limit > 0) ? Math.min(limit, limitMax) : limitDefault; - return limit; - } - private String[] getRegions(Query query) { String[] regions; String regionStr = query.getString(VariantQueryParam.REGION.key()); diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java index d6aeee7269e..a3463de43ef 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java @@ -80,6 +80,7 @@ import static org.opencb.opencga.storage.core.variant.VariantStorageEngine.Options.*; import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.ANNOT_CLINICAL_SIGNIFICANCE; import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam.ID; +import static org.opencb.opencga.storage.core.variant.adaptors.VariantQueryUtils.addDefaultLimit; import static org.opencb.opencga.storage.core.variant.annotation.annotators.AbstractCellBaseVariantAnnotator.toCellBaseSpeciesName; import static org.opencb.opencga.storage.core.variant.search.solr.VariantSearchManager.SEARCH_ENGINE_ID; import static org.opencb.opencga.storage.core.variant.search.solr.VariantSearchUtils.*; @@ -377,6 +378,7 @@ public void deleteAnnotation(String name, ObjectMap params) throws StorageEngine } public QueryResult getAnnotation(String name, Query query, QueryOptions options) throws StorageEngineException { + options = addDefaultLimit(options); return getDBAdaptor().getAnnotation(name, query, options); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUtils.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUtils.java index 46244b36034..47e192aacbc 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUtils.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/adaptors/VariantQueryUtils.java @@ -66,6 +66,9 @@ public final class VariantQueryUtils { public static final String ALL = "all"; public static final String GT = "GT"; + private static final int LIMIT_DEFAULT = 1000; + private static final int LIMIT_MAX = 5000; + public static final QueryParam ANNOT_EXPRESSION_GENES = QueryParam.create("annot_expression_genes", "", QueryParam.Type.TEXT_ARRAY); public static final QueryParam ANNOT_GO_GENES = QueryParam.create("annot_go_genes", "", QueryParam.Type.TEXT_ARRAY); public static final QueryParam ANNOT_GENE_REGIONS = QueryParam.create("annot_gene_regions", "", QueryParam.Type.TEXT_ARRAY); @@ -1234,4 +1237,26 @@ public static String printQuery(Query query) { } } + + public static QueryOptions addDefaultLimit(QueryOptions queryOptions) { + return addDefaultLimit(queryOptions, LIMIT_MAX, LIMIT_DEFAULT); + } + + public static QueryOptions addDefaultLimit(QueryOptions queryOptions, int limitMax, int limitDefault) { + queryOptions = queryOptions == null ? new QueryOptions() : queryOptions; + // Add default limit + int limit = getDefaultLimit(queryOptions.getInt(QueryOptions.LIMIT, -1), limitMax, limitDefault); + queryOptions.put(QueryOptions.LIMIT, limit); + return queryOptions; + } + + public static int getDefaultLimit(int limit, int limitMax, int limitDefault) { + if (limit > limitMax) { + logger.info("Unable to return more than {} variants. Change limit from {} to {}", limitMax, limit, limitMax); + } + limit = (limit > 0) ? Math.min(limit, limitMax) : limitDefault; + return limit; + } + + }