List of usage examples for io.vertx.core.json JsonArray getJsonObject
public JsonObject getJsonObject(int pos)
From source file:org.entcore.conversation.service.impl.Neo4jConversationService.java
License:Open Source License
public void addDisplayNames(final JsonObject message, final JsonObject parentMessage, final Handler<JsonObject> handler) { if (!displayNamesCondition(message)) { handler.handle(message);//from w w w . ja va2s. co m return; } String query = "MATCH (v:Visible) " + "WHERE v.id IN {ids} " + "RETURN COLLECT(distinct (v.id + '$' + coalesce(v.displayName, ' ') + '$' + " + "coalesce(v.name, ' ') + '$' + coalesce(v.groupDisplayName, ' '))) as displayNames "; Set<String> ids = new HashSet<>(); ids.addAll(message.getJsonArray("to", new fr.wseduc.webutils.collections.JsonArray()).getList()); ids.addAll(message.getJsonArray("cc", new fr.wseduc.webutils.collections.JsonArray()).getList()); if (message.containsKey("from")) { ids.add(message.getString("from")); } if (parentMessage != null) { ids.addAll(parentMessage.getJsonArray("to", new fr.wseduc.webutils.collections.JsonArray()).getList()); ids.addAll(parentMessage.getJsonArray("cc", new fr.wseduc.webutils.collections.JsonArray()).getList()); if (parentMessage.containsKey("from")) ids.add(parentMessage.getString("from")); } neo.execute(query, new JsonObject().put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids))), new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> m) { JsonArray r = m.body().getJsonArray("result"); if ("ok".equals(m.body().getString("status")) && r != null && r.size() == 1) { JsonObject j = r.getJsonObject(0); JsonArray d = j.getJsonArray("displayNames"); if (d != null && d.size() > 0) { message.put("displayNames", d); } } handler.handle(message); } }); }
From source file:org.entcore.conversation.service.impl.Neo4jConversationService.java
License:Open Source License
public void findInactives(final JsonObject message, long size, final Handler<JsonObject> handler) { Set<Object> dest = new HashSet<>(); dest.addAll(message.getJsonArray("to", new fr.wseduc.webutils.collections.JsonArray()).getList()); dest.addAll(message.getJsonArray("cc", new fr.wseduc.webutils.collections.JsonArray()).getList()); JsonObject params = new JsonObject().put("dest", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<Object>(dest))); String returnClause = ""; if (size > 0) { returnClause = "RETURN " + "[t IN targets WHERE t.quotaLeft IS NULL OR t.quotaLeft < {attachmentsSize} | t.users.displayName] as undelivered, " + "[t IN targets WHERE t.quotaLeft IS NOT NULL AND t.quotaLeft >= {attachmentsSize} | t.users.id] as userTargets "; params.put("attachmentsSize", size); } else {/*from ww w . jav a2 s. c o m*/ returnClause = "RETURN " + "[t IN targets WHERE t.users.activationCode IS NOT NULL | t.users.displayName] as inactives, " + "EXTRACT(t IN targets | t.users.id) as userTargets "; } String query = "MATCH (v:Visible)<-[:IN*0..1]-(u:User) " + "WHERE v.id IN {dest} " + "OPTIONAL MATCH (u)-[:USERBOOK]->(ub:UserBook) " + "WITH COLLECT(DISTINCT {users: u, quotaLeft: (ub.quota - ub.storage)}) as targets " + returnClause; neo.execute(query, params, new Handler<Message<JsonObject>>() { public void handle(Message<JsonObject> event) { JsonArray r = event.body().getJsonArray("result"); JsonObject formattedResult = new JsonObject() .put("inactives", new fr.wseduc.webutils.collections.JsonArray()) .put("actives", new fr.wseduc.webutils.collections.JsonArray()) .put("allUsers", new fr.wseduc.webutils.collections.JsonArray()); if ("ok".equals(event.body().getString("status")) && r != null && r.size() == 1) { JsonObject j = r.getJsonObject(0); formattedResult.put("inactives", j.getJsonArray("inactives", new fr.wseduc.webutils.collections.JsonArray())); formattedResult.put("undelivered", j.getJsonArray("undelivered", new fr.wseduc.webutils.collections.JsonArray())); formattedResult.put("allUsers", j.getJsonArray("userTargets", new fr.wseduc.webutils.collections.JsonArray())); } handler.handle(formattedResult); } }); }
From source file:org.entcore.directory.controllers.UserBookController.java
License:Open Source License
@Get("/structure/:structId") @SecuredAction(value = "userbook.structure.classes.personnel", type = ActionType.AUTHENTICATED) public void showStructure(final HttpServerRequest request) { String structureId = request.params().get("structId"); String customReturn = "MATCH (s:Structure { id : {structId}})<-[:DEPENDS]-(pg:ProfileGroup)" + "-[:HAS_PROFILE]->(p:Profile {name : 'Personnel'}), visibles-[:IN]->pg " + "OPTIONAL MATCH visibles-[:USERBOOK]->(u:UserBook) " + "RETURN DISTINCT p.name as type, visibles.id as id, " + "visibles.displayName as displayName, u.mood as mood, " + "u.picture as photo " + "ORDER BY type DESC, displayName "; final JsonObject params = new JsonObject().put("structId", structureId); UserUtils.findVisibleUsers(eb, request, true, customReturn, params, new Handler<JsonArray>() { @Override// www. j av a2s . com public void handle(final JsonArray personnel) { String customReturn = "MATCH profileGroup-[:DEPENDS]->(c:Class)-[:BELONGS]->(s:Structure { id : {structId}}) " + "RETURN collect(distinct {id: c.id, name: c.name, level: c.level}) as classes, " + "collect(distinct {id: profileGroup.id, name: profileGroup.name, groupDisplayName: profileGroup.groupDisplayName }) as profileGroups"; UserUtils.findVisibleProfilsGroups(eb, request, customReturn, params, new Handler<JsonArray>() { @Override public void handle(final JsonArray classesAndProfileGroups) { String customReturn = "MATCH manualGroup-[:DEPENDS]->(c)-[:BELONGS*0..1]->(s:Structure { id : {structId}}) " + "WHERE ALL(label IN labels(c) WHERE label IN [\"Structure\", \"Class\"]) " + "RETURN DISTINCT manualGroup.id as id, manualGroup.name as name, manualGroup.groupDisplayName as groupDisplayName " + "ORDER BY name ASC "; UserUtils.findVisibleManualGroups(eb, request, customReturn, params, new Handler<JsonArray>() { @Override public void handle(JsonArray manualGroups) { JsonObject result = new JsonObject().put("users", personnel).put("classes", classesAndProfileGroups.getJsonObject(0).getJsonArray("classes", new fr.wseduc.webutils.collections.JsonArray())) .put("profileGroups", classesAndProfileGroups.getJsonObject(0).getJsonArray( "profileGroups", new fr.wseduc.webutils.collections.JsonArray())) .put("manualGroups", manualGroups); renderJson(request, result); } }); } }); } }); }
From source file:org.entcore.directory.security.AnyAdminOfUser.java
License:Open Source License
@Override public void authorize(final HttpServerRequest request, Binding binding, final UserInfos user, final Handler<Boolean> handler) { //Super-admin "hack" if (user.getFunctions().containsKey(SUPER_ADMIN)) { handler.handle(true);//from ww w. j a va2 s . c om return; } String userId = request.params().get("userId"); if (userId == null || userId.trim().isEmpty()) { handler.handle(false); return; } Set<String> ids = DirectoryResourcesProvider.getIds(user); String query = "MATCH (u:User {id : {userId}})-[:IN]->()-[:DEPENDS]->()-[:BELONGS*0..1]->s2 " + "WHERE s2.id IN {ids} RETURN count(*) > 0 as exists UNION " + "MATCH (u: User {id : {userId}})-[:HAS_RELATIONSHIPS]->(b: Backup) " + "WHERE ANY(structId IN b.structureIds WHERE structId IN {ids}) " + "RETURN count(*) > 0 as exists"; JsonObject params = new JsonObject().put("id", request.params().get("groupId")).put("userId", userId) .put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids))); request.pause(); Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("result"); if ("ok".equals(r.body().getString("status")) && res.size() == 2 && (((JsonObject) res.getJsonObject(0)).getBoolean("exists", false) || ((JsonObject) res.getJsonObject(1)).getBoolean("exists", false))) { handler.handle(true); } else if ("ok".equals(r.body().getString("status")) && res.size() == 1 && ((JsonObject) res.getJsonObject(0)).getBoolean("exists", false)) { handler.handle(true); } else { handler.handle(false); } } }); }
From source file:org.entcore.directory.security.DirectoryResourcesProvider.java
License:Open Source License
private static void validateQuery(final HttpServerRequest request, final Handler<Boolean> handler, String query, JsonObject params) {/*from w w w . j a v a2 s . co m*/ request.pause(); Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("result"); handler.handle("ok".equals(r.body().getString("status")) && res.size() == 1 && (res.getJsonObject(0)).getBoolean("exists", false)); } }); }
From source file:org.entcore.directory.security.DirectoryResourcesProvider.java
License:Open Source License
private void adminOrTeacher(final HttpServerRequest request, final UserInfos user, final Handler<Boolean> handler) { Set<String> ids = getIds(user); if (ids == null) return;//from w w w . j a v a 2s.c om String query = "MATCH (u:User {id : {userId}})-[:IN]->()-[:DEPENDS]->()-[:BELONGS*0..1]->s2 " + "WHERE s2.id IN {ids} " + "RETURN count(*) > 0 as exists"; JsonObject params = new JsonObject().put("id", request.params().get("groupId")) .put("userId", request.params().get("userId")) .put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids))); request.pause(); neo.execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("result"); if ("ok".equals(r.body().getString("status")) && res.size() == 1 && (res.getJsonObject(0)).getBoolean("exists", false)) { handler.handle(true); } else { isTeacherOf(request, user, handler); } } }); }
From source file:org.entcore.directory.security.DirectoryResourcesProvider.java
License:Open Source License
private void isClassTeacher(final HttpServerRequest request, final UserInfos user, final Handler<Boolean> handler) { final String classId = request.params().get("classId"); if (classId == null || classId.trim().isEmpty()) { handler.handle(false);//from www. j ava2s .co m return; } Set<String> ids = getIds(user); String query = "MATCH (c:Class {id : {classId}})-[:BELONGS]->s2 " + "WHERE s2.id IN {ids} " + "RETURN count(*) > 0 as exists"; JsonObject params = new JsonObject().put("classId", classId).put("userId", request.params().get("userId")) .put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids))); request.pause(); neo.execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("result"); if ("ok".equals(r.body().getString("status")) && res.size() == 1 && (res.getJsonObject(0)).getBoolean("exists", false)) { handler.handle(true); } else if ("Teacher".equals(user.getType()) || "Personnel".equals(user.getType())) { String query = "MATCH (c:`Class` { id : {classId}})<-[:DEPENDS]-(pg:ProfileGroup)" + "<-[:IN]-(t:`User` { id : {teacherId}}) " + "RETURN count(*) > 0 as exists "; JsonObject params = new JsonObject().put("classId", classId).put("teacherId", user.getUserId()); validateQuery(request, handler, query, params); } else { handler.handle(false); } } }); }
From source file:org.entcore.directory.security.DirectoryResourcesProvider.java
License:Open Source License
private void isClassMember(final HttpServerRequest request, final UserInfos user, final Handler<Boolean> handler) { final String classId = request.params().get("classId"); if (classId == null || classId.trim().isEmpty()) { handler.handle(false);/*from w ww . j a va 2 s .c om*/ return; } Set<String> ids = getIds(user); String query = "MATCH (c:Class {id : {classId}})-[:BELONGS]->s2 " + "WHERE s2.id IN {ids} " + "RETURN count(*) > 0 as exists"; JsonObject params = new JsonObject().put("classId", classId).put("userId", request.params().get("userId")) .put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids))); request.pause(); neo.execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("result"); if ("ok".equals(r.body().getString("status")) && res.size() == 1 && (res.getJsonObject(0)).getBoolean("exists", false)) { handler.handle(true); } else { String query = "MATCH (c:`Class` { id : {classId}})<-[:DEPENDS]-(pg:ProfileGroup)" + "<-[:IN]-(t:`User` { id : {teacherId}}) " + "RETURN count(*) > 0 as exists "; JsonObject params = new JsonObject().put("classId", classId).put("teacherId", user.getUserId()); validateQuery(request, handler, query, params); } } }); }
From source file:org.entcore.directory.security.TeacherOfClass.java
License:Open Source License
@Override public void authorize(final HttpServerRequest request, Binding binding, final UserInfos user, final Handler<Boolean> handler) { final String classId = request.params().get("classId"); if (classId == null || classId.trim().isEmpty()) { handler.handle(false);/*from ww w . ja v a 2s. c o m*/ return; } Set<String> ids = DirectoryResourcesProvider.getIds(user); String query = "MATCH (c:Class {id : {classId}})-[:BELONGS]->s2 " + "WHERE s2.id IN {ids} " + "RETURN count(*) > 0 as exists"; JsonObject params = new JsonObject().put("classId", classId).put("userId", request.params().get("userId")) .put("ids", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ids))); request.pause(); neo.execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("result"); if ("ok".equals(r.body().getString("status")) && res.size() == 1 && ((JsonObject) res.getJsonObject(0)).getBoolean("exists", false)) { handler.handle(true); } else if ("Teacher".equals(user.getType()) || "Personnel".equals(user.getType())) { String query = "MATCH (c:`Class` { id : {classId}})<-[:DEPENDS]-(pg:ProfileGroup)" + "<-[:IN]-(t:`User` { id : {teacherId}}) " + "RETURN count(*) > 0 as exists "; JsonObject params = new JsonObject().put("classId", classId).put("teacherId", user.getUserId()); validateQuery(request, handler, query, params); } else { handler.handle(false); } } }); }
From source file:org.entcore.directory.security.TeacherOfClass.java
License:Open Source License
private void validateQuery(final HttpServerRequest request, final Handler<Boolean> handler, String query, JsonObject params) {/* ww w . j a va2 s.c om*/ request.pause(); neo.execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("result"); handler.handle("ok".equals(r.body().getString("status")) && res.size() == 1 && ((JsonObject) res.getJsonObject(0)).getBoolean("exists", false)); } }); }