public List<Filter> getFilters() { Object object = get(FILTERS); if (object == null) { return new LinkedList<>(); } if (isListFilters(object)) { return (List<Filter>) object; } else { //convert with objectMapper List<Filter> filters = new ArrayList<>(); try { if (objectMapper == null) { objectMapper = new ObjectMapper(); objectReader = objectMapper.readerFor(Filter.class); } for (Object filterObject : ((List) object)) { filters.add(objectReader.readValue(objectMapper.writeValueAsString(filterObject))); } setFilters(filters); return filters; } catch (IOException e) { throw new UncheckedIOException(e); } } }
public UserConfiguration(Map<String, Object> map) { super(map); put(FILTERS, new ArrayList<>()); }
/** * 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); }
@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()); }
public User(String id, String name, String email, String password, String organization, Account account, String status, String lastModified, long size, long quota, List<Project> projects, List<Tool> tools, Map<String, Object> configs, Map<String, Object> attributes) { this.id = id; this.name = name; this.email = email; this.password = password; this.organization = organization; // FIXME: Account should always be passed and not null this.account = account != null ? account : new Account(); this.status = new UserStatus(status); this.lastModified = lastModified; this.size = size; this.quota = quota; this.projects = projects; this.tools = tools; if (configs == null) { this.configs = new UserConfiguration(); } else { this.configs = new UserConfiguration(configs); } this.attributes = attributes; }
@Override public QueryResult setConfig(String userId, String name, Map<String, Object> config) throws CatalogDBException { long startTime = startQuery(); // Set the config Bson bsonQuery = Filters.eq(QueryParams.ID.key(), userId); Bson filterDocument = getMongoDBDocument(config, "Config"); Bson update = Updates.set(QueryParams.CONFIGS.key() + "." + name, filterDocument); QueryResult<UpdateResult> queryResult = userCollection.update(bsonQuery, update, null); if (queryResult.first().getModifiedCount() == 0) { throw new CatalogDBException("Could not create " + name + " configuration "); } QueryResult<User> userQueryResult = get(userId, new QueryOptions(), ""); if (userQueryResult.getNumResults() == 0) { throw new CatalogDBException("Internal error: Could not retrieve user " + userId + " information"); } return endQuery("Set config", startTime, Arrays.asList(userQueryResult.first().getConfigs().get(name))); }
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 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()); }
public UserConfiguration setFilters(List<Filter> filters) { put(FILTERS, filters); return this; }
@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 modifyUserTest() throws CatalogDBException { ObjectMap genomeMapsConfig = new ObjectMap("lastPosition", "4:1222222:1333333"); genomeMapsConfig.put("otherConf", Arrays.asList(1, 2, 3, 4, 5)); catalogUserDBAdaptor.setConfig(user1.getId(), "genomemaps", genomeMapsConfig); User user = catalogUserDBAdaptor.get(user1.getId(), null, null).first(); assertNotNull(user.getConfigs().get("genomemaps")); Map<String, Object> genomemaps = (Map<String, Object>) user.getConfigs().get("genomemaps"); assertNotNull(genomemaps.get("otherConf")); assertNotNull(genomemaps.get("lastPosition")); }