List of usage examples for io.vertx.core.json JsonObject getJsonArray
public JsonArray getJsonArray(String key)
From source file:org.entcore.common.share.impl.GenericShareService.java
License:Open Source License
protected JsonArray getResoureActions(Map<String, SecuredAction> securedActions) { if (resourceActions != null) { return resourceActions; }//from ww w.j a v a 2s .c om JsonObject resourceActions = new JsonObject(); for (SecuredAction action : securedActions.values()) { if (ActionType.RESOURCE.name().equals(action.getType()) && !action.getDisplayName().isEmpty()) { JsonObject a = resourceActions.getJsonObject(action.getDisplayName()); if (a == null) { a = new JsonObject() .put("name", new fr.wseduc.webutils.collections.JsonArray() .add(action.getName().replaceAll("\\.", "-"))) .put("displayName", action.getDisplayName()).put("type", action.getType()); resourceActions.put(action.getDisplayName(), a); } else { a.getJsonArray("name").add(action.getName().replaceAll("\\.", "-")); } } } this.resourceActions = new fr.wseduc.webutils.collections.JsonArray( new ArrayList<>(resourceActions.getMap().values())); return this.resourceActions; }
From source file:org.entcore.common.share.impl.GenericShareService.java
License:Open Source License
protected void shareValidation(String resourceId, String userId, JsonObject share, Handler<Either<String, JsonObject>> handler) { final JsonObject groups = share.getJsonObject("groups"); final JsonObject users = share.getJsonObject("users"); final JsonObject shareBookmark = share.getJsonObject("bookmarks"); final HashMap<String, Set<String>> membersActions = new HashMap<>(); if (groups != null && groups.size() > 0) { for (String attr : groups.fieldNames()) { JsonArray actions = groups.getJsonArray(attr); if (actionsExists(actions.getList())) { membersActions.put(attr, new HashSet<>(actions.getList())); }/*from w ww . j a v a 2 s . c o m*/ } } if (users != null && users.size() > 0) { for (String attr : users.fieldNames()) { JsonArray actions = users.getJsonArray(attr); if (actionsExists(actions.getList())) { membersActions.put(attr, new HashSet<>(actions.getList())); } } } if (shareBookmark != null && shareBookmark.size() > 0) { final JsonObject p = new JsonObject().put("userId", userId); StatementsBuilder statements = new StatementsBuilder(); for (String sbId : shareBookmark.fieldNames()) { final String csbId = cleanId(sbId); final String query = "MATCH (:User {id:{userId}})-[:HAS_SB]->(sb:ShareBookmark) " + "RETURN DISTINCT '" + csbId + "' as id, TAIL(sb." + csbId + ") as members "; statements.add(query, p); } Neo4j.getInstance().executeTransaction(statements.build(), null, true, Neo4jResult.validResultsHandler(sbRes -> { if (sbRes.isRight()) { JsonArray a = sbRes.right().getValue(); for (Object o : a) { JsonObject r = ((JsonArray) o).getJsonObject(0); JsonArray actions = shareBookmark.getJsonArray(r.getString("id")); JsonArray mIds = r.getJsonArray("members"); if (actions != null && mIds != null && mIds.size() > 0 && actionsExists(actions.getList())) { for (Object mId : mIds) { Set<String> actionsShare = membersActions.get(mId.toString()); if (actionsShare == null) { actionsShare = new HashSet<>(new HashSet<>(actions.getList())); membersActions.put(mId.toString(), actionsShare); // } else { // actionsShare.addAll(new HashSet<>(actions.getList())); } } } } shareValidationVisible(userId, resourceId, handler, membersActions, shareBookmark.fieldNames()); } else { handler.handle(new Either.Left<>(sbRes.left().getValue())); } })); } else { shareValidationVisible(userId, resourceId, handler, membersActions, null); } }
From source file:org.entcore.common.share.impl.SqlShareService.java
License:Open Source License
@Override public void shareInfos(final String userId, String resourceId, final String acceptLanguage, final String search, final Handler<Either<String, JsonObject>> handler) { if (userId == null || userId.trim().isEmpty()) { handler.handle(new Either.Left<String, JsonObject>("Invalid userId.")); return;/* w w w . j a v a 2 s. c o m*/ } if (resourceId == null || resourceId.trim().isEmpty()) { handler.handle(new Either.Left<String, JsonObject>("Invalid resourceId.")); return; } final JsonArray actions = getResoureActions(securedActions); String query = "SELECT s.member_id, s.action, m.group_id FROM " + shareTable + " AS s " + "JOIN " + schema + "members AS m ON s.member_id = m.id WHERE resource_id = ?"; sql.prepared(query, new fr.wseduc.webutils.collections.JsonArray().add(Sql.parseId(resourceId)), new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> message) { if ("ok".equals(message.body().getString("status"))) { JsonArray r = message.body().getJsonArray("results"); JsonObject groupCheckedActions = new JsonObject(); JsonObject userCheckedActions = new JsonObject(); for (Object o : r) { if (!(o instanceof JsonArray)) continue; JsonArray row = (JsonArray) o; final String memberId = row.getString(0); if (memberId == null || memberId.equals(userId)) continue; final JsonObject checkedActions = (row.getValue(2) != null) ? groupCheckedActions : userCheckedActions; JsonArray m = checkedActions.getJsonArray(memberId); if (m == null) { m = new fr.wseduc.webutils.collections.JsonArray(); checkedActions.put(memberId, m); } m.add(row.getValue(1)); } getShareInfos(userId, actions, groupCheckedActions, userCheckedActions, acceptLanguage, search, new Handler<JsonObject>() { @Override public void handle(JsonObject event) { if (event != null && event.size() == 3) { handler.handle(new Either.Right<String, JsonObject>(event)); } else { handler.handle(new Either.Left<String, JsonObject>( "Error finding shared resource.")); } } }); } } }); }
From source file:org.entcore.common.sql.SqlResult.java
License:Open Source License
private static JsonArray transform(JsonObject body) { JsonArray f = body.getJsonArray("fields"); JsonArray r = body.getJsonArray("results"); JsonArray result = new fr.wseduc.webutils.collections.JsonArray(); if (f != null && r != null) { JsonArray jsonbAttributes = body.getJsonArray("jsonb_fields"); List ja = (jsonbAttributes != null) ? jsonbAttributes.getList() : new ArrayList<>(); for (Object o : r) { if (!(o instanceof JsonArray)) continue; JsonArray a = (JsonArray) o; JsonObject j = new fr.wseduc.webutils.collections.JsonObject(); for (int i = 0; i < f.size(); i++) { Object item = a.getValue(i); if (item instanceof Boolean) { j.put(f.getString(i), (Boolean) item); } else if (item instanceof Number) { j.put(f.getString(i), (Number) item); } else if (item instanceof JsonArray) { j.put(f.getString(i), (JsonArray) item); } else if (item != null && ja.contains(f.getValue(i))) { String stringRepresentation = item.toString().trim(); if (stringRepresentation.startsWith("[")) { j.put(f.getString(i), new fr.wseduc.webutils.collections.JsonArray(item.toString())); } else { j.put(f.getString(i), new fr.wseduc.webutils.collections.JsonObject(item.toString())); }//from w ww . j a v a2 s . c om } else if (item != null) { j.put(f.getString(i), item.toString()); } else { j.put(f.getString(i), (String) null); } } result.add(j); } } return result; }
From source file:org.entcore.communication.controllers.CommunicationController.java
License:Open Source License
@Post("/visible") @SecuredAction(value = "", type = ActionType.AUTHENTICATED) public void searchVisible(HttpServerRequest request) { RequestUtils.bodyToJson(request, filter -> UserUtils.getUserInfos(eb, request, user -> { if (user != null) { String preFilter = ""; String match = ""; String where = ""; String nbUsers = ""; String groupTypes = ""; JsonObject params = new JsonObject(); JsonArray expectedTypes = null; if (filter != null && filter.size() > 0) { for (String criteria : filter.fieldNames()) { switch (criteria) { case "structures": case "classes": JsonArray itemssc = filter.getJsonArray(criteria); if (itemssc == null || itemssc.isEmpty() || ("structures".equals(criteria) && filter.getJsonArray("classes") != null && !filter.getJsonArray("classes").isEmpty())) continue; if (!params.containsKey("nIds")) { params.put("nIds", itemssc); } else { params.getJsonArray("nIds").addAll(itemssc); }/*from w w w .j a v a 2 s . c o m*/ if (!match.contains("-[:DEPENDS")) { if (!match.contains("MATCH ")) { match = "MATCH "; where = " WHERE "; } else { match += ", "; where += "AND "; } match += "(visibles)-[:IN*0..1]->()-[:DEPENDS]->(n) "; where += "n.id IN {nIds} "; } if ("structures".equals(criteria)) { match = match.replaceFirst("\\[:DEPENDS]", "[:DEPENDS*1..2]"); } break; case "profiles": case "functions": JsonArray itemspf = filter.getJsonArray(criteria); if (itemspf == null || itemspf.isEmpty()) continue; if (!params.containsKey("filters")) { params.put("filters", itemspf); } else { //params.getJsonArray("filters").addAll(itemspf); params.put("filters2", itemspf); } if (!match.contains("MATCH ")) { match = "MATCH "; where = " WHERE "; } else { match += ", "; where += "AND "; } if (!match.contains("(visibles)-[:IN*0..1]->(g)")) { match += "(visibles)-[:IN*0..1]->(g)"; where += "g.filter IN {filters} "; } else { match += "(visibles)-[:IN*0..1]->(g2) "; where += "g2.filter IN {filters2} "; } break; case "search": final String search = filter.getString(criteria); if (isNotEmpty(search)) { preFilter = "AND m.displayNameSearchField CONTAINS {search} "; String sanitizedSearch = StringValidation.sanitize(search); params.put("search", sanitizedSearch); } break; case "types": JsonArray types = filter.getJsonArray(criteria); if (types != null && types.size() > 0 && CommunicationService.EXPECTED_TYPES.containsAll(types.getList())) { expectedTypes = types; } break; case "nbUsersInGroups": if (filter.getBoolean("nbUsersInGroups", false)) { nbUsers = ", visibles.nbUsers as nbUsers"; } break; case "groupType": if (filter.getBoolean("groupType", false)) { groupTypes = ", labels(visibles) as groupType, visibles.filter as groupProfile"; } break; } } } final boolean returnGroupType = !groupTypes.isEmpty(); final String customReturn = match + where + "RETURN DISTINCT visibles.id as id, visibles.name as name, " + "visibles.displayName as displayName, visibles.groupDisplayName as groupDisplayName, " + "HEAD(visibles.profiles) as profile" + nbUsers + groupTypes; communicationService.visibleUsers(user.getUserId(), null, expectedTypes, true, true, false, preFilter, customReturn, params, user.getType(), visibles -> { if (visibles.isRight()) { renderJson(request, UserUtils.translateAndGroupVisible(visibles.right().getValue(), I18n.acceptLanguage(request), returnGroupType)); } else { leftToResponse(request, visibles.left()); } }); } else { badRequest(request, "invalid.user"); } })); }
From source file:org.entcore.communication.controllers.CommunicationController.java
License:Open Source License
@Put("/init/rules") @SecuredAction("communication.init.default.rules") public void initDefaultCommunicationRules(final HttpServerRequest request) { RequestUtils.bodyToJson(request, new Handler<JsonObject>() { @Override/*from w ww . j a va2s . c o m*/ public void handle(JsonObject body) { JsonObject initDefaultRules = config.getJsonObject("initDefaultCommunicationRules"); JsonArray structures = body.getJsonArray("structures"); if (structures != null && structures.size() > 0) { communicationService.initDefaultRules(structures, initDefaultRules, defaultResponseHandler(request)); } else { badRequest(request, "invalid.structures"); } } }); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
private void timelineNotification(HttpServerRequest request, JsonObject sentMessage, UserInfos user) { log.debug(sentMessage.encode());/*from ww w . j a v a 2 s .c om*/ JsonArray r = sentMessage.getJsonArray("sentIds"); String id = sentMessage.getString("id"); String subject = sentMessage.getString("subject", "<span translate key=\"timeline.no.subject\"></span>"); sentMessage.remove("sentIds"); sentMessage.remove("id"); sentMessage.remove("subject"); if (r == null || id == null || user == null) { return; } final JsonObject params = new JsonObject() .put("uri", "/userbook/annuaire#" + user.getUserId() + "#" + user.getType()) .put("username", user.getUsername()).put("subject", subject) .put("messageUri", pathPrefix + "/conversation#/read-mail/" + id); params.put("resourceUri", params.getString("messageUri")); params.put("pushNotif", new JsonObject().put("title", "push.notif.new.message").put("body", user.getUsername() + " : " + sentMessage.getString("body"))); List<String> recipients = new ArrayList<>(); String idTmp; for (Object o : r) { if (!(o instanceof String)) continue; idTmp = (String) o; if (!user.getUserId().equals(idTmp)) recipients.add(idTmp); } notification.notifyTimeline(request, "messagerie.send-message", user, recipients, id, params); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
private void translateGroupsNames(JsonObject message, HttpServerRequest request) { JsonArray d3 = new fr.wseduc.webutils.collections.JsonArray(); for (Object o2 : getOrElse(message.getJsonArray("displayNames"), new fr.wseduc.webutils.collections.JsonArray())) { if (!(o2 instanceof String)) { continue; }//www.j a v a 2s .c o m String[] a = ((String) o2).split("\\$"); if (a.length != 4) { continue; } JsonArray d2 = new fr.wseduc.webutils.collections.JsonArray().add(a[0]); if (a[2] != null && !a[2].trim().isEmpty()) { final String groupDisplayName = (a[3] != null && !a[3].trim().isEmpty()) ? a[3] : null; d2.add(UserUtils.groupDisplayName(a[2], groupDisplayName, I18n.acceptLanguage(request))); } else { d2.add(a[1]); } d3.add(d2); } message.put("displayNames", d3); JsonArray toName = message.getJsonArray("toName"); if (toName != null) { JsonArray d2 = new fr.wseduc.webutils.collections.JsonArray(); message.put("toName", d2); for (Object o : toName) { if (!(o instanceof String)) { continue; } d2.add(UserUtils.groupDisplayName((String) o, null, I18n.acceptLanguage(request))); } } JsonArray ccName = message.getJsonArray("ccName"); if (ccName != null) { JsonArray d2 = new fr.wseduc.webutils.collections.JsonArray(); message.put("ccName", d2); for (Object o : ccName) { if (!(o instanceof String)) { continue; } d2.add(UserUtils.groupDisplayName((String) o, null, I18n.acceptLanguage(request))); } } }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Put("trash") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(MultipleMessageUserFilter.class) public void trash(final HttpServerRequest request) { bodyToJson(request, new Handler<JsonObject>() { @Override//from w w w . j a va 2s. co m public void handle(JsonObject body) { JsonArray ids = body.getJsonArray("id"); if (ids == null || ids.isEmpty()) { badRequest(request); return; } getUserInfos(eb, request, new Handler<UserInfos>() { @Override public void handle(final UserInfos user) { if (user != null) { conversationService.trash(ids.getList(), user, defaultResponseHandler(request)); } else { unauthorized(request); } } }); } }); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Put("restore") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(MultipleMessageUserFilter.class) public void restore(final HttpServerRequest request) { bodyToJson(request, new Handler<JsonObject>() { @Override// w w w. j a v a 2s.c o m public void handle(JsonObject body) { JsonArray ids = body.getJsonArray("id"); if (ids == null || ids.isEmpty()) { badRequest(request); return; } getUserInfos(eb, request, new Handler<UserInfos>() { @Override public void handle(final UserInfos user) { if (user != null) { conversationService.restore(ids.getList(), user, defaultResponseHandler(request)); } else { unauthorized(request); } } }); } }); }