/** * Retrieves all the user filters. * * @param userId user id having the filters. * @param sessionId session id of the user fetching the filters. * @return the filters. * @throws CatalogException if the user corresponding to the session id is not the same as the provided user id. */ public QueryResult<User.Filter> getAllFilters(String userId, String sessionId) throws CatalogException { ParamUtils.checkParameter(userId, "userId"); ParamUtils.checkParameter(sessionId, "sessionId"); String userIdAux = getUserId(sessionId); userDBAdaptor.checkId(userId); if (!userId.equals(userIdAux)) { throw new CatalogException("User " + userIdAux + " is not authorised to get filters from user " + userId); } Query query = new Query() .append(UserDBAdaptor.QueryParams.ID.key(), userId); QueryOptions queryOptions = new QueryOptions(QueryOptions.INCLUDE, UserDBAdaptor.QueryParams.CONFIGS.key()); QueryResult<User> userQueryResult = userDBAdaptor.get(query, queryOptions); if (userQueryResult.getNumResults() != 1) { throw new CatalogException("Internal error: User " + userId + " not found."); } List<User.Filter> filters = userQueryResult.first().getConfigs().getFilters(); return new QueryResult<>("Get filters", 0, filters.size(), filters.size(), "", "", filters); }
private User.Filter getFilter(String userId, String name) throws CatalogException { Query query = new Query() .append(UserDBAdaptor.QueryParams.ID.key(), userId); QueryOptions queryOptions = new QueryOptions(QueryOptions.INCLUDE, UserDBAdaptor.QueryParams.CONFIGS.key()); QueryResult<User> userQueryResult = userDBAdaptor.get(query, queryOptions); if (userQueryResult.getNumResults() != 1) { throw new CatalogException("Internal error: User " + userId + " not found."); } for (User.Filter filter : userQueryResult.first().getConfigs().getFilters()) { if (name.equals(filter.getName())) { return filter; } } return null; }
@Test public void deleteFilterTest() throws CatalogDBException, IOException { Query query = new Query("key1", "value1").append("key2", "value2"); QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList("key1", "key2")); User.Filter filter = new User.Filter("filter1", "Description of filter 1", File.Bioformat.ALIGNMENT, query, options); catalogUserDBAdaptor.addFilter(user4.getId(), filter); catalogUserDBAdaptor.deleteFilter(user4.getId(), filter.getName()); QueryResult<User> userQueryResult = catalogUserDBAdaptor.get(user4.getId(), new QueryOptions(), null); User.UserConfiguration configs = userQueryResult.first().getConfigs(); assertTrue(configs.getFilters().size() == 0); }
@Test public void updateFilterTest() throws CatalogDBException, IOException { Query query = new Query("key1", "value1").append("key2", "value2"); QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList("key1", "key2")); User.Filter filter = new User.Filter("filter1", "Description of filter 1", File.Bioformat.ALIGNMENT, query, options); catalogUserDBAdaptor.addFilter(user4.getId(), filter); ObjectMap params = new ObjectMap() .append(UserDBAdaptor.FilterParams.DESCRIPTION.key(), "The description has changed") .append(UserDBAdaptor.FilterParams.BIOFORMAT.key(), File.Bioformat.VARIANT) .append(UserDBAdaptor.FilterParams.QUERY.key(), new Query("key3", "whatever")) .append(UserDBAdaptor.FilterParams.OPTIONS.key(), new QueryOptions("options", "optionsValue")); catalogUserDBAdaptor.updateFilter(user4.getId(), filter.getName(), params); QueryResult<User> userQueryResult = catalogUserDBAdaptor.get(user4.getId(), new QueryOptions(), null); User.Filter filterResult = userQueryResult.first().getConfigs().getFilters().get(0); assertEquals(filter.getName(), filterResult.getName()); assertEquals(params.get(UserDBAdaptor.FilterParams.DESCRIPTION.key()), filterResult.getDescription()); assertEquals(params.get(UserDBAdaptor.FilterParams.BIOFORMAT.key()), filterResult.getBioformat()); assertEquals(((Query) params.get(UserDBAdaptor.FilterParams.QUERY.key())).safeToString(), filterResult.getQuery().safeToString()); assertEquals(((QueryOptions) params.get(UserDBAdaptor.FilterParams.OPTIONS.key())).safeToString(), filterResult.getOptions().safeToString()); }
@Test public void addFilterTest() throws CatalogDBException, IOException { Query query = new Query("key1", "value1").append("key2", "value2"); QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList("key1", "key2")); User.Filter filter = new User.Filter("filter1", "Description of filter 1", File.Bioformat.ALIGNMENT, query, options); catalogUserDBAdaptor.addFilter(user4.getId(), filter); QueryResult<User> userQueryResult = catalogUserDBAdaptor.get(user4.getId(), new QueryOptions(), null); User.Filter filterResult = userQueryResult.first().getConfigs().getFilters().get(0); assertEquals(filter.getName(), filterResult.getName()); assertEquals(filter.getDescription(), filterResult.getDescription()); assertEquals(filter.getBioformat(), filterResult.getBioformat()); assertEquals(filter.getQuery().safeToString(), filterResult.getQuery().safeToString()); assertEquals(filter.getOptions().safeToString(), filterResult.getOptions().safeToString()); }