List of usage examples for io.vertx.core.json JsonArray add
public JsonArray add(Object value)
From source file:org.entcore.common.notification.TimelineHelper.java
License:Open Source License
/** * @deprecated// w w w . j av a 2 s .c o m * Notification system was refactored in version 1.16.1 */ @Deprecated public void notifyTimeline(HttpServerRequest request, UserInfos sender, String type, final String eventType, List<String> recipients, String resource, String subResource, String template, JsonObject params) { JsonArray r = new fr.wseduc.webutils.collections.JsonArray(); for (String userId : recipients) { r.add(new JsonObject().put("userId", userId).put("unread", 1)); } final JsonObject event = new JsonObject().put("action", "add").put("type", type) .put("event-type", eventType).put("recipients", r); if (resource != null) { event.put("resource", resource); } if (sender != null) { event.put("sender", sender.getUserId()); } if (subResource != null && !subResource.trim().isEmpty()) { event.put("sub-resource", subResource); } Long date = params.getLong("timeline-publish-date"); if (date != null) { event.put("date", new JsonObject().put("$date", date)); params.remove("timeline-publish-date"); } render.processTemplate(request, template, params, new Handler<String>() { @Override public void handle(String message) { if (message != null) { event.put("message", message); eb.send(TIMELINE_ADDRESS, event); } else { log.error("Unable to send timeline " + eventType + " notification."); } } }); }
From source file:org.entcore.common.service.impl.SqlCrudService.java
License:Open Source License
@Override public void update(String id, JsonObject data, UserInfos user, Handler<Either<String, JsonObject>> handler) { StringBuilder sb = new StringBuilder(); JsonArray values = new fr.wseduc.webutils.collections.JsonArray(); for (String attr : data.fieldNames()) { sb.append(attr).append(" = ?, "); values.add(data.getValue(attr)); }// w w w . ja va2s. com String query = "UPDATE " + resourceTable + " SET " + sb.toString() + "modified = NOW() " + "WHERE id = ? "; sql.prepared(query, values.add(parseId(id)), validRowsResultHandler(handler)); }
From source file:org.entcore.common.service.impl.SqlCrudService.java
License:Open Source License
@Override public void list(VisibilityFilter filter, UserInfos user, Handler<Either<String, JsonArray>> handler) { String query;//from www. j a va2s . co m JsonArray values = new fr.wseduc.webutils.collections.JsonArray(); if (user != null) { List<String> gu = new ArrayList<>(); gu.add(user.getUserId()); if (user.getGroupsIds() != null) { gu.addAll(user.getGroupsIds()); } final Object[] groupsAndUserIds = gu.toArray(); switch (filter) { case OWNER: query = "SELECT " + expectedListValues() + " FROM " + resourceTable + " WHERE owner = ?"; values.add(user.getUserId()); break; case OWNER_AND_SHARED: query = "SELECT DISTINCT " + expectedListValues() + " FROM " + resourceTable + " LEFT JOIN " + shareTable + " ON id = resource_id " + "WHERE member_id IN " + Sql.listPrepared(groupsAndUserIds) + " OR owner = ?"; values = new fr.wseduc.webutils.collections.JsonArray(gu).add(user.getUserId()); break; case SHARED: query = "SELECT DISTINCT " + expectedListValues() + " FROM " + resourceTable + " INNER JOIN " + shareTable + " ON id = resource_id " + "WHERE member_id IN " + Sql.listPrepared(groupsAndUserIds); values = new fr.wseduc.webutils.collections.JsonArray(gu); break; case PROTECTED: query = "SELECT " + expectedListValues() + " FROM " + resourceTable + " WHERE visibility = ?"; values.add(VisibilityFilter.PROTECTED.name()); break; case PUBLIC: query = "SELECT " + expectedListValues() + " FROM " + resourceTable + " WHERE visibility = ?"; values.add(VisibilityFilter.PUBLIC.name()); break; default: query = "SELECT " + expectedListValues() + ", json_agg(row_to_json(row(member_id,action)::" + schema + "share_tuple)) as shared, " + "array_to_json(array_agg(group_id)) as groups FROM " + resourceTable + " LEFT JOIN " + shareTable + " ON " + resourceTable + ".id = resource_id" + " LEFT JOIN " + schema + "members ON (member_id = " + schema + "members.id AND group_id IS NOT NULL) " + "WHERE member_id IN " + Sql.listPrepared(groupsAndUserIds) + " OR owner = ? OR visibility IN (?,?) " + " GROUP BY " + resourceTable + ".id"; values = new fr.wseduc.webutils.collections.JsonArray(gu).add(user.getUserId()) .add(VisibilityFilter.PROTECTED.name()).add(VisibilityFilter.PUBLIC.name()); break; } } else { query = "SELECT " + expectedListValues() + " FROM " + resourceTable + " WHERE visibility = ?"; values.add(VisibilityFilter.PUBLIC.name()); } query += " ORDER BY modified DESC"; Handler<Message<JsonObject>> h = (VisibilityFilter.ALL.equals(filter)) ? parseShared(handler) : validResultHandler(handler); sql.prepared(query, values, h); }
From source file:org.entcore.common.service.impl.SqlSearchService.java
License:Open Source License
@Override public void search(String userId, List<String> groupIds, List<String> returnFields, List<String> searchWords, Integer page, Integer limit, Handler<Either<String, JsonArray>> handler) { final int offset = page * limit; final String fields = displayNameField + ", " + resourceTable + "." + Joiner.on(", " + resourceTable + ".").join(returnFields); final List<String> gu = new ArrayList<String>(); gu.add(userId);// ww w . j a v a 2 s . c o m if (groupIds != null) { gu.addAll(groupIds); } final Object[] groupsAndUserIds = gu.toArray(); final String rightsWhere = "member_id IN " + Sql.listPrepared(groupsAndUserIds) + " OR owner = ?" + (checkVisibility ? " OR visibility IN (?,?)" : ""); final String query = "SELECT " + fields + " FROM " + resourceTable + " LEFT JOIN " + shareTable + " ON " + resourceTable + ".id = resource_id" + " LEFT JOIN " + userTable + " ON " + resourceTable + ".owner = " + userTable + ".id" + " LEFT JOIN " + schema + "members ON (member_id = " + schema + "members.id AND group_id IS NOT NULL) " + "WHERE (" + rightsWhere + ") AND (" + searchWherePrepared() + ")" + " GROUP BY " + resourceTable + ".id, " + displayNameField + " ORDER BY modified DESC " + " LIMIT ? OFFSET ?"; final JsonArray values = new fr.wseduc.webutils.collections.JsonArray(gu).add(userId); if (checkVisibility) { values.add(VisibilityFilter.PROTECTED.name()).add(VisibilityFilter.PUBLIC.name()); } final String textSearchedValue = textSearchedComposition(searchWords); for (int i = 0; i < this.searchFields.size(); i++) { values.add(textSearchedValue); } values.add(limit).add(offset); sql.prepared(query, values, validResultHandler(handler)); }
From source file:org.entcore.common.share.impl.GenericShareService.java
License:Open Source License
private void shareValidationVisible(String userId, String resourceId, Handler<Either<String, JsonObject>> handler, HashMap<String, Set<String>> membersActions, Set<String> shareBookmarkIds) { // final String preFilter = "AND m.id IN {members} "; final Set<String> members = membersActions.keySet(); final JsonObject params = new JsonObject().put("members", new JsonArray(new ArrayList<>(members))); // final String customReturn = "RETURN DISTINCT visibles.id as id, has(visibles.login) as isUser"; // UserUtils.findVisibles(eb, userId, customReturn, params, true, true, false, null, preFilter, res -> { checkMembers(params, res -> {/* w w w .ja va 2 s.c o m*/ if (res != null) { final JsonArray users = new JsonArray(); final JsonArray groups = new JsonArray(); final JsonArray shared = new JsonArray(); final JsonArray notifyMembers = new JsonArray(); for (Object o : res) { JsonObject j = (JsonObject) o; final String attr = j.getString("id"); if (Boolean.TRUE.equals(j.getBoolean("isUser"))) { users.add(attr); notifyMembers.add(new JsonObject().put("userId", attr)); prepareSharedArray(resourceId, "userId", shared, attr, membersActions.get(attr)); } else { groups.add(attr); notifyMembers.add(new JsonObject().put("groupId", attr)); prepareSharedArray(resourceId, "groupId", shared, attr, membersActions.get(attr)); } } handler.handle(new Either.Right<>(params.put("shared", shared).put("groups", groups) .put("users", users).put("notify-members", notifyMembers))); if (shareBookmarkIds != null && res.size() < members.size()) { members.removeAll(groups.getList()); members.removeAll(users.getList()); resyncShareBookmark(userId, members, shareBookmarkIds); } } else { handler.handle(new Either.Left<>("Invalid members count.")); } }); }
From source file:org.entcore.common.share.impl.GenericShareService.java
License:Open Source License
protected void getNotifyMembers(Handler<Either<String, JsonObject>> handler, JsonArray oldShared, JsonArray members, Function<Object, String> f) { JsonArray notifyMembers; if (oldShared != null && oldShared.size() > 0 && members != null && members.size() > 0) { final Set<String> oldMembersIds = oldShared.stream().map(f).collect(Collectors.toSet()); notifyMembers = new JsonArray(); for (Object o : members) { final JsonObject j = (JsonObject) o; final String memberId = getOrElse(j.getString("groupId"), j.getString("userId")); if (!oldMembersIds.contains(memberId)) { notifyMembers.add(j); }//ww w . j av a2s. co m } } else { notifyMembers = members; } handler.handle(new Either.Right<>(new JsonObject().put("notify-timeline-array", notifyMembers))); }
From source file:org.entcore.common.share.impl.MongoDbShareService.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;/*from www . jav a2 s .co m*/ } if (resourceId == null || resourceId.trim().isEmpty()) { handler.handle(new Either.Left<String, JsonObject>("Invalid resourceId.")); return; } final JsonArray actions = getResoureActions(securedActions); QueryBuilder query = QueryBuilder.start("_id").is(resourceId); JsonObject keys = new JsonObject().put("shared", 1); mongo.findOne(collection, MongoQueryBuilder.build(query), keys, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { if ("ok".equals(event.body().getString("status"))) { JsonArray shared = event.body().getJsonObject("result", new JsonObject()).getJsonArray("shared", new fr.wseduc.webutils.collections.JsonArray()); JsonObject gs = new JsonObject(); JsonObject us = new JsonObject(); for (Object o : shared) { if (!(o instanceof JsonObject)) continue; JsonObject userShared = (JsonObject) o; JsonArray a = new fr.wseduc.webutils.collections.JsonArray(); for (String attrName : userShared.fieldNames()) { if ("userId".equals(attrName) || "groupId".equals(attrName)) { continue; } if (groupedActions != null && groupedActions.containsKey(attrName)) { for (String action : groupedActions.get(attrName)) { a.add(action.replaceAll("\\.", "-")); } } else { a.add(attrName); } } final String g = userShared.getString("groupId"); String u; if (g != null) { gs.put(g, a); } else if ((u = userShared.getString("userId")) != null && !u.equals(userId)) { us.put(u, a); } } getShareInfos(userId, actions, gs, us, 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.")); } } }); } else { handler.handle(new Either.Left<String, JsonObject>( event.body().getString("error", "Error finding shared resource."))); } } }); }
From source file:org.entcore.common.share.impl.MongoDbShareService.java
License:Open Source License
private void share(String resourceId, final String groupShareId, final List<String> actions, boolean isGroup, final Handler<Either<String, JsonObject>> handler) { final String shareIdAttr = isGroup ? "groupId" : "userId"; QueryBuilder query = QueryBuilder.start("_id").is(resourceId); JsonObject keys = new JsonObject().put("shared", 1); final JsonObject q = MongoQueryBuilder.build(query); mongo.findOne(collection, q, keys, new Handler<Message<JsonObject>>() { @Override/*from w ww .j av a 2s. com*/ public void handle(Message<JsonObject> event) { if ("ok".equals(event.body().getString("status")) && event.body().getJsonObject("result") != null) { JsonArray actual = event.body().getJsonObject("result").getJsonArray("shared", new fr.wseduc.webutils.collections.JsonArray()); boolean exist = false; for (int i = 0; i < actual.size(); i++) { JsonObject s = actual.getJsonObject(i); String id = s.getString(shareIdAttr); if (groupShareId.equals(id)) { for (String action : actions) { s.put(action, true); } if (groupedActions != null) { for (Map.Entry<String, List<String>> ga : groupedActions.entrySet()) { if (actions.containsAll(ga.getValue())) { s.put(ga.getKey(), true); } } } exist = true; break; } } final AtomicBoolean notifyTimeline = new AtomicBoolean(false); if (!exist) { JsonObject t = new JsonObject().put(shareIdAttr, groupShareId); actual.add(t); for (String action : actions) { t.put(action, true); } if (groupedActions != null) { for (Map.Entry<String, List<String>> ga : groupedActions.entrySet()) { if (actions.containsAll(ga.getValue())) { t.put(ga.getKey(), true); } } } notifyTimeline.set(true); } MongoUpdateBuilder updateQuery = new MongoUpdateBuilder().set("shared", actual); mongo.update(collection, q, updateQuery.build(), new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> res) { if (notifyTimeline.get()) { JsonObject notify = new JsonObject(); notify.put(shareIdAttr, groupShareId); res.body().put("notify-timeline", notify); } handler.handle(Utils.validResult(res)); } }); } else { handler.handle(new Either.Left<String, JsonObject>("Resource not found.")); } } }); }
From source file:org.entcore.common.share.impl.MongoDbShareService.java
License:Open Source License
private void removeShare(String resourceId, final String shareId, List<String> removeActions, boolean isGroup, final Handler<Either<String, JsonObject>> handler) { final String shareIdAttr = isGroup ? "groupId" : "userId"; final List<String> actions = findRemoveActions(removeActions); QueryBuilder query = QueryBuilder.start("_id").is(resourceId); JsonObject keys = new JsonObject().put("shared", 1); final JsonObject q = MongoQueryBuilder.build(query); mongo.findOne(collection, q, keys, new Handler<Message<JsonObject>>() { @Override/* ww w . j ava2 s . c o m*/ public void handle(Message<JsonObject> event) { if ("ok".equals(event.body().getString("status")) && event.body().getJsonObject("result") != null) { JsonArray actual = event.body().getJsonObject("result").getJsonArray("shared", new fr.wseduc.webutils.collections.JsonArray()); JsonArray shared = new fr.wseduc.webutils.collections.JsonArray(); for (int i = 0; i < actual.size(); i++) { JsonObject s = actual.getJsonObject(i); String id = s.getString(shareIdAttr); if (shareId.equals(id)) { if (actions != null) { for (String action : actions) { s.remove(action); } if (s.size() > 1) { shared.add(s); } } } else { shared.add(s); } } MongoUpdateBuilder updateQuery = new MongoUpdateBuilder().set("shared", shared); mongo.update(collection, q, updateQuery.build(), new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> res) { handler.handle(Utils.validResult(res)); } }); } else { handler.handle(new Either.Left<String, JsonObject>("Resource not found.")); } } }); }
From source file:org.entcore.common.share.impl.MongoDbShareService.java
License:Open Source License
@Override protected void prepareSharedArray(String resourceId, String type, JsonArray shared, String attr, Set<String> actions) { JsonObject el = new JsonObject().put(type, attr); for (String action : actions) { el.put(action, true);/*from w w w.j a v a2s. c om*/ } shared.add(el); }