@Override public Set<Stream> loadByIds(Collection<String> streamIds) { final Set<ObjectId> objectIds = streamIds.stream() .map(ObjectId::new) .collect(Collectors.toSet()); final DBObject query = QueryBuilder.start("_id").in(objectIds).get(); return ImmutableSet.copyOf(loadAll(query)); }
private void restrictParts(List<String> objects, QueryBuilder partNameBuilder, String partKey) { if (!objects.isEmpty()) { partNameBuilder.put(BatchConstants.partCollectionKey + "." + partKey); BasicDBList dbList = new BasicDBList(); for (String object : objects) { dbList.add(object); } partNameBuilder.in(dbList); } }
public static ArrayList<Document> getDocuments(MongoCollection collection, String key, JSONArray input) { ArrayList<Document> documents = new ArrayList(); try { String[] values = convertArray(input); QueryBuilder builder = new QueryBuilder(); builder.put(key).in(values); BasicDBObject query = (BasicDBObject) builder.get(); FindIterable<Document> docResponse = collection.find(query); Iterator documentIterator = docResponse.iterator(); while (documentIterator.hasNext()) { Document document = (Document) documentIterator.next(); documents.add(document); } } catch(Exception e) { log.info("Failed to get any documents from collection:"+collection+" for key:"+key); log.error(e.getMessage()); } return documents; }
@Override public List<Resource> findByResourceServer(Map<String, String[]> attributes, String resourceServerId, int firstResult, int maxResult) { QueryBuilder queryBuilder = new QueryBuilder() .and("resourceServerId").is(resourceServerId); attributes.forEach((name, value) -> { if ("scope".equals(name)) { queryBuilder.and("scopes").in(value); } else { queryBuilder.and(name).regex(Pattern.compile(".*" + value[0] + ".*", Pattern.CASE_INSENSITIVE)); } }); DBObject sort = new BasicDBObject("name", 1); return getMongoStore().loadEntities(ResourceEntity.class, queryBuilder.get(), sort, firstResult, maxResult, invocationContext).stream() .map(scope -> findById(scope.getId(), resourceServerId)).collect(toList()); }
@Override public List<User> getFriendsOfFriendsQuery(final User user) { // Get the _ids of all the user's friends. List<String> friend_ids = getFriendIdsUsingQuery(user); if (friend_ids.size() == 0) // The user is not following anyone, will not have any friends of friends. return new ArrayList<User>(); Set<String> fof_ids = getFriendsOfUsersQuery(user, friend_ids); if (fof_ids.size() == 0) { // None of the friends were following anyone, no friends of friends. return new ArrayList<User>(); } // Get the actual users. QueryBuilder fof_users_query = new QueryBuilder(); fof_users_query = fof_users_query.put(USER_ID_KEY); fof_users_query = fof_users_query.in(fof_ids.toArray()); DBCursor users_cursor = this.users.find(fof_users_query.get()); List<User> result = getUsersFromCursor(users_cursor, USER_ID_KEY); return result; }
private QueryBuilder queryByPreference(final ApplicationFilterParameters filterParams, final List<String> aoIds) { DBObject[] queries = new DBObject[filterParams.getMaxApplicationOptions()]; for (int i = 0; i < queries.length; i++) { queries[i] = QueryBuilder.start(format(FIELD_AO_T, i + 1)).in(aoIds).get(); } return QueryBuilder.start().or(queries); }
/** * Fetch a collection of dbrefs. This is more efficient than fetching one at a time. * * @param collection the collection to fetch * @param fields The fields to retrieve for each of the documents * @return The collection of referenced objcets */ public <R, RK> List<R> fetch(Collection<DBRef<R, RK>> collection, DBObject fields) { Map<JacksonCollectionKey, List<Object>> collectionsToIds = new HashMap<JacksonCollectionKey, List<Object>>(); for (DBRef<R, RK> ref : collection) { if (ref instanceof FetchableDBRef) { JacksonCollectionKey key = ((FetchableDBRef) ref).getCollectionKey(); List<Object> ids = collectionsToIds.get(key); if (ids == null) { ids = new ArrayList<Object>(); collectionsToIds.put(key, ids); } ids.add(getReferenceCollection(key).convertToDbId(ref.getId())); } } List<R> results = new ArrayList<R>(); for (Map.Entry<JacksonCollectionKey, List<Object>> entry : collectionsToIds.entrySet()) { for (R result : this.<R, RK>getReferenceCollection(entry.getKey()).find( new QueryBuilder().put("_id").in(entry.getValue()).get(), fields)) { results.add(result); } } return results; }
@Override public List<Policy> findByResourceServer(Map<String, String[]> attributes, String resourceServerId, int firstResult, int maxResult) { QueryBuilder queryBuilder = new QueryBuilder() .and("resourceServerId").is(resourceServerId); attributes.forEach((name, value) -> { if ("permission".equals(name)) { if (Boolean.valueOf(value[0])) { queryBuilder.and("type").in(new String[] {"resource", "scope"}); } else { queryBuilder.and("type").notIn(new String[] {"resource", "scope"}); } } else if ("id".equals(name)) { queryBuilder.and("_id").in(value); } else { queryBuilder.and(name).regex(Pattern.compile(".*" + value[0] + ".*", Pattern.CASE_INSENSITIVE)); } }); DBObject sort = new BasicDBObject("name", 1); return getMongoStore().loadEntities(PolicyEntity.class, queryBuilder.get(), sort, firstResult, maxResult, invocationContext).stream() .map(policy -> findById(policy.getId(), resourceServerId)).collect(toList()); }
public static List<MongoRoleEntity> getAllScopesOfTemplate(ClientTemplateModel template, MongoStoreInvocationContext invContext) { ClientTemplateEntity scopedEntity = ((ClientTemplateAdapter)template).getMongoEntity(); List<String> scopeIds = scopedEntity.getScopeIds(); if (scopeIds == null || scopeIds.isEmpty()) { return Collections.emptyList(); } DBObject query = new QueryBuilder() .and("_id").in(scopeIds) .get(); return invContext.getMongoStore().loadEntities(MongoRoleEntity.class, query, invContext); } }
@Override public List<Policy> findByScopeIds(List<String> scopeIds, String resourceServerId) { DBObject query = new QueryBuilder() .and("resourceServerId").is(resourceServerId) .and("scopes").in(scopeIds) .get(); return getMongoStore().loadEntities(PolicyEntity.class, query, getInvocationContext()).stream() .map(policyEntity -> findById(policyEntity.getId(), resourceServerId)) .collect(toList()); }
/** * Fetch a collection of dbrefs. This is more efficient than fetching one at a time. * * @param collection the collection to fetch * @param fields The fields to retrieve for each of the documents * @return The collection of referenced objcets */ public <R, RK> List<R> fetch(Collection<DBRef<R, RK>> collection, DBObject fields) { Map<JacksonCollectionKey, List<Object>> collectionsToIds = new HashMap<JacksonCollectionKey, List<Object>>(); for (DBRef<R, RK> ref : collection) { if (ref instanceof FetchableDBRef) { JacksonCollectionKey key = ((FetchableDBRef) ref).getCollectionKey(); List<Object> ids = collectionsToIds.get(key); if (ids == null) { ids = new ArrayList<Object>(); collectionsToIds.put(key, ids); } ids.add(getReferenceCollection(key).convertToDbId(ref.getId())); } } List<R> results = new ArrayList<R>(); for (Map.Entry<JacksonCollectionKey, List<Object>> entry : collectionsToIds.entrySet()) { for (R result : this.<R, RK>getReferenceCollection(entry.getKey()).find( new QueryBuilder().put("_id").in(entry.getValue()).get(), fields)) { results.add(result); } } return results; }
.entrySet()) { for (R result : this.<R, RK> getReferenceCollection(entry.getKey()) .find(new QueryBuilder().put("_id").in(entry.getValue()) .get(), fields)) { results.add(result);
@Override public List<Resource> findByScope(List<String> id, String resourceServerId) { DBObject query = new QueryBuilder() .and("resourceServerId").is(resourceServerId) .and("scopes").in(id) .get(); return getMongoStore().loadEntities(ResourceEntity.class, query, getInvocationContext()).stream() .map(policyEntity -> findById(policyEntity.getId(), resourceServerId)) .collect(toList()); }
public static List<MongoRoleEntity> getAllScopesOfClient(ClientModel client, MongoStoreInvocationContext invContext) { ClientEntity scopedEntity = ((ClientAdapter)client).getMongoEntity(); List<String> scopeIds = scopedEntity.getScopeIds(); if (scopeIds == null || scopeIds.isEmpty()) { return Collections.emptyList(); } DBObject query = new QueryBuilder() .and("_id").in(scopeIds) .get(); return invContext.getMongoStore().loadEntities(MongoRoleEntity.class, query, invContext); } public static List<MongoRoleEntity> getAllScopesOfTemplate(ClientTemplateModel template, MongoStoreInvocationContext invContext) {
private DBObject filterByOrganization(ApplicationFilterParameters filterParameters) { ArrayList<DBObject> queries = new ArrayList<DBObject>(); if (filterParameters.getOrganizationsReadble().size() > 0) { queries.add(QueryBuilder.start(FIELD_ALL_ORGANIZATIONS).in(filterParameters.getOrganizationsReadble()).get()); } if (filterParameters.getOrganizationsReadble().contains(rooOrganizationOid)) { queries.add(QueryBuilder.start(FIELD_ALL_ORGANIZATIONS).exists(false).get()); } if (filterParameters.getOrganizationsOpo().size() > 0) { queries.add(QueryBuilder.start().and( QueryBuilder.start(FIELD_SENDING_SCHOOL_PARENTS).in(filterParameters.getOrganizationsOpo()).get(), QueryBuilder.start(FIELD_OPO_ALLOWED).is(true).get()).get()); } LOG.debug("queries: {}", queries.size()); return QueryBuilder.start().or(queries.toArray(new DBObject[queries.size()])).get(); }
@Override public Set<RoleModel> getComposites() { if (role.getCompositeRoleIds() == null || role.getCompositeRoleIds().isEmpty()) { return Collections.EMPTY_SET; } DBObject query = new QueryBuilder() .and("_id").in(role.getCompositeRoleIds()) .get(); List<MongoRoleEntity> childRoles = getMongoStore().loadEntities(MongoRoleEntity.class, query, invocationContext); Set<RoleModel> set = new HashSet<RoleModel>(); for (MongoRoleEntity childRole : childRoles) { set.add(new RoleAdapter(session, realm, childRole, invocationContext)); } return set; }
protected QueryBuilder buildInQuery(In obj, QueryBuilder query) { append(obj.getRightExpressions()); BasicDBList values = new BasicDBList(); for (int i = 0; i < obj.getRightExpressions().size(); i++) { Object rightExpr = this.onGoingExpression.pop(); rightExpr = checkAndConvertToObjectId(obj.getLeftExpression(), obj.getRightExpressions().get(i), rightExpr); values.add(0, rightExpr); } if (obj.isNegated()) { query.notIn(values); } else { query.in(values); } return query; }
@Override public Application getNextRedo() { QueryBuilder queryBuilder = QueryBuilder.start(FIELD_REDO_POSTPROCESS).in( Lists.newArrayList( PostProcessingState.FULL.toString(), PostProcessingState.NOMAIL.toString())); queryBuilder.put(FIELD_APPLICATION_STATE).in( Lists.newArrayList( Application.State.DRAFT.name(), Application.State.ACTIVE.name(), Application.State.INCOMPLETE.name())); DBObject query = queryBuilder.get(); DBObject sortBy = new BasicDBObject(FIELD_LAST_AUTOMATED_PROCESSING_TIME, 1); DBCursor cursor = getCollection().find(query).sort(sortBy).limit(1); String hint = null; if (ensureIndex) { hint = INDEX_REDO_POSTPROCESS; cursor.hint(INDEX_REDO_POSTPROCESS); } try { if (!cursor.hasNext()) { return null; } return fromDBObject.apply(cursor.next()); } catch (MongoException mongoException) { LOG.error("Got error {} with query: {} using hint: {}", mongoException.getMessage(), query, hint); throw mongoException; } }
@Override public List<ApplicationAdditionalDataDTO> findApplicationAdditionalData(String applicationSystemId, String aoId, ApplicationFilterParameters filterParameters) { DBObject orgFilter = filterByOrganization(filterParameters); DBObject query = QueryBuilder.start().and(queryByPreference(filterParameters, Lists.newArrayList(aoId)).get(), newOIdExistDBObject(), new BasicDBObject(FIELD_APPLICATION_SYSTEM_ID, applicationSystemId), QueryBuilder.start(FIELD_APPLICATION_STATE).in(Lists.newArrayList( Application.State.ACTIVE.toString(), Application.State.INCOMPLETE.toString())).get(), orgFilter).get(); DBObject keys = generateKeysDBObject(DBObjectToAdditionalDataDTO.KEYS); SearchResults<ApplicationAdditionalDataDTO> results = searchListing(query, keys, null, 0, 0, new DBObjectToAdditionalDataDTO(), false); return results.searchResultsList; }
private QueryBuilder getRegionFilter(Region region, QueryBuilder builder) { List<String> chunkIds = getChunkIds(region); builder.and(DocumentToVariantConverter.AT_FIELD + '.' + DocumentToVariantConverter.CHUNK_IDS_FIELD).in(chunkIds); builder.and(DocumentToVariantConverter.END_FIELD).greaterThanEquals(region.getStart()); builder.and(DocumentToVariantConverter.START_FIELD).lessThanEquals(region.getEnd()); return builder; }