From accfa3b86d7edff6ef67a6a1c1588ed8fae079b6 Mon Sep 17 00:00:00 2001 From: pfurio Date: Tue, 30 Apr 2024 10:20:19 +0200 Subject: [PATCH] catalog: fix FORMAT and bioformat regex queries, #TASK-5932 --- .../db/mongodb/FileMongoDBAdaptor.java | 9 ++----- .../catalog/managers/FileManagerTest.java | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java index a0811254e65..38d24ed6674 100644 --- a/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java +++ b/opencga-catalog/src/main/java/org/opencb/opencga/catalog/db/mongodb/FileMongoDBAdaptor.java @@ -1479,13 +1479,6 @@ private Bson parseQuery(Query query, Document extraQuery, String user) addAutoOrQuery(queryParam.key(), queryParam.key(), myQuery, queryParam.type(), andBsonList); } break; - case FORMAT: - case BIOFORMAT: - // Replace the value for an uppercase string as we know it will always be in that way - String uppercaseValue = myQuery.getString(queryParam.key()).toUpperCase(); - myQuery.put(queryParam.key(), uppercaseValue); - addAutoOrQuery(queryParam.key(), queryParam.key(), myQuery, queryParam.type(), andBsonList); - break; case UUID: case EXTERNAL: case TYPE: @@ -1493,6 +1486,8 @@ private Bson parseQuery(Query query, Document extraQuery, String user) case ID: case PATH: case RELEASE: + case FORMAT: + case BIOFORMAT: case TAGS: case SIZE: case SOFTWARE_NAME: diff --git a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java index a0517b1294a..c01d915498c 100644 --- a/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java +++ b/opencga-catalog/src/test/java/org/opencb/opencga/catalog/managers/FileManagerTest.java @@ -188,6 +188,32 @@ public void testLinkFileWithoutReadPermissions() throws IOException, CatalogExce fileManager.link(studyFqn, new FileLinkParams().setUri(file.getPath()), false, token); } + @Test + public void filterByFormatTest() throws CatalogException { + Query query = new Query(FileDBAdaptor.QueryParams.FORMAT.key(), "PLAIN"); + OpenCGAResult search = catalogManager.getFileManager().search(studyFqn, query, QueryOptions.empty(), token); + assertEquals(2, search.getNumResults()); + + query = new Query(FileDBAdaptor.QueryParams.FORMAT.key(), "plain"); + search = catalogManager.getFileManager().search(studyFqn, query, QueryOptions.empty(), token); + assertEquals(0, search.getNumResults()); + + // Case sensitive search in lower case + query = new Query(FileDBAdaptor.QueryParams.FORMAT.key(), "~/^pla/"); + search = catalogManager.getFileManager().search(studyFqn, query, QueryOptions.empty(), token); + assertEquals(0, search.getNumResults()); + + // Case sensitive in upper case + query = new Query(FileDBAdaptor.QueryParams.FORMAT.key(), "~/^PLA/"); + search = catalogManager.getFileManager().search(studyFqn, query, QueryOptions.empty(), token); + assertEquals(2, search.getNumResults()); + + // Case insensitive search + query = new Query(FileDBAdaptor.QueryParams.FORMAT.key(), "~/^pla/i"); + search = catalogManager.getFileManager().search(studyFqn, query, QueryOptions.empty(), token); + assertEquals(2, search.getNumResults()); + } + @Test public void createDirectoryTest() throws CatalogException { FileCreateParams params = new FileCreateParams()