List of usage examples for io.vertx.core.json JsonObject containsKey
public boolean containsKey(String key)
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Put("draft/:id") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(MessageOwnerFilter.class) public void updateDraft(final HttpServerRequest request) { final String messageId = request.params().get("id"); if (messageId == null || messageId.trim().isEmpty()) { badRequest(request);/*w ww . jav a2 s.co m*/ return; } getUserInfos(eb, request, new Handler<UserInfos>() { @Override public void handle(final UserInfos user) { if (user != null) { bodyToJson(request, new Handler<JsonObject>() { @Override public void handle(JsonObject message) { if (!message.containsKey("from")) { message.put("from", user.getUserId()); } neoConversationService.addDisplayNames(message, null, new Handler<JsonObject>() { public void handle(JsonObject message) { conversationService.updateDraft(messageId, message, user, defaultResponseHandler(request)); } }); } }); } else { unauthorized(request); } } }); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
@Post("send") @SecuredAction(value = "", type = ActionType.RESOURCE) @ResourceFilter(VisiblesFilter.class) public void send(final HttpServerRequest request) { final String messageId = request.params().get("id"); getUserInfos(eb, request, new Handler<UserInfos>() { @Override/*from www. j av a 2s.co m*/ public void handle(final UserInfos user) { if (user != null) { final String parentMessageId = request.params().get("In-Reply-To"); bodyToJson(request, new Handler<JsonObject>() { @Override public void handle(final JsonObject message) { if (!message.containsKey("from")) { message.put("from", user.getUserId()); } final Handler<JsonObject> parentHandler = new Handler<JsonObject>() { public void handle(JsonObject parentMsg) { final String threadId; if (parentMsg != null) { threadId = parentMsg.getString("thread_id"); } else { threadId = null; } neoConversationService.addDisplayNames(message, parentMsg, new Handler<JsonObject>() { public void handle(final JsonObject message) { saveAndSend(messageId, message, user, parentMessageId, threadId, new Handler<Either<String, JsonObject>>() { @Override public void handle( Either<String, JsonObject> event) { if (event.isRight()) { JsonObject result = event.right() .getValue(); JsonObject timelineParams = new JsonObject() .put("subject", result.getString("subject")) .put("body", StringUtils.stripHtmlTag( result.getString( "body"))) .put("id", result.getString("id")) .put("sentIds", message.getJsonArray( "allUsers", new fr.wseduc.webutils.collections.JsonArray())); timelineNotification(request, timelineParams, user); renderJson(request, result.put("inactive", message.getJsonArray("inactives", new fr.wseduc.webutils.collections.JsonArray())) .put("undelivered", message.getJsonArray( "undelivered", new fr.wseduc.webutils.collections.JsonArray())) .put("sent", message.getJsonArray( "allUsers", new fr.wseduc.webutils.collections.JsonArray()) .size())); } else { JsonObject error = new JsonObject().put( "error", event.left().getValue()); renderJson(request, error, 400); } } }); } }); } }; if (parentMessageId != null && !parentMessageId.trim().isEmpty()) { conversationService.get(parentMessageId, user, new Handler<Either<String, JsonObject>>() { public void handle(Either<String, JsonObject> event) { if (event.isLeft()) { badRequest(request); return; } parentHandler.handle(event.right().getValue()); } }); } else { parentHandler.handle(null); } } }); } else { unauthorized(request); } } }); }
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
private void send(final Message<JsonObject> message) { JsonObject m = message.body().getJsonObject("message"); if (m == null) { message.reply(new JsonObject().put("status", "error").put("message", "invalid.message")); }//from ww w . j ava 2 s . c o m final HttpServerRequest request = new JsonHttpServerRequest( message.body().getJsonObject("request", new JsonObject())); final UserInfos user = new UserInfos(); user.setUserId(message.body().getString("userId")); user.setUsername(message.body().getString("username")); if (!m.containsKey("from")) { m.put("from", user.getUserId()); } neoConversationService.addDisplayNames(m, null, new Handler<JsonObject>() { public void handle(final JsonObject m) { saveAndSend(null, m, user, null, null, new Handler<Either<String, JsonObject>>() { @Override public void handle(Either<String, JsonObject> event) { if (event.isRight()) { JsonObject result = event.right().getValue(); JsonObject timelineParams = new JsonObject().put("subject", result.getString("subject")) .put("id", result.getString("id")).put("sentIds", m.getJsonArray("allUsers", new fr.wseduc.webutils.collections.JsonArray())); timelineNotification(request, timelineParams, user); JsonObject s = new JsonObject().put("status", "ok").put("result", new fr.wseduc.webutils.collections.JsonArray().add(new JsonObject())); message.reply(s); } else { JsonObject error = new JsonObject().put("error", event.left().getValue()); message.reply(error); } } }); } }); }
From source file:org.entcore.conversation.service.impl.DefaultConversationService.java
License:Open Source License
private void addDisplayNames(final JsonObject message, final Handler<JsonObject> handler) { 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")); }/*from www .j a v a 2 s. c o m*/ 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.DefaultConversationService.java
License:Open Source License
private boolean displayNamesCondition(JsonObject message) { return message != null && ((message.containsKey("from") && !message.getString("from").trim().isEmpty()) || (message.containsKey("to") && message.getJsonArray("to").size() > 0) || (message.containsKey("cc") && message.getJsonArray("cc").size() > 0)); }
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);/* w w w .j av a 2 s.c o 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.directory.controllers.StructureController.java
License:Open Source License
private void massMailTypeMail(final HttpServerRequest request, final String templatePath, final JsonArray users) { vertx.fileSystem().readFile(templatePath + "massmail.mail.txt", new Handler<AsyncResult<Buffer>>() { @Override//from w ww.j a v a 2 s .com public void handle(AsyncResult<Buffer> result) { if (!result.succeeded()) { badRequest(request); return; } StringReader reader = new StringReader(result.result().toString("UTF-8")); final JsonArray mailHeaders = new JsonArray().add( new JsonObject().put("name", "Content-Type").put("value", "text/html; charset=\"UTF-8\"")); for (Object userObj : users) { final JsonObject user = (JsonObject) userObj; final String userMail = user.getString("email"); if (userMail == null || userMail.trim().isEmpty()) { continue; } final String mailTitle = !user.containsKey("activationCode") || user.getString("activationCode") == null || user.getString("activationCode").trim().isEmpty() ? "directory.massmail.mail.subject.activated" : "directory.massmail.mail.subject.not.activated"; try { reader.reset(); } catch (IOException exc) { log.error("[MassMail] Error on StringReader (" + exc.toString() + ")"); } processTemplate(request, user, "massmail.mail.txt", reader, new Handler<Writer>() { public void handle(Writer writer) { String processedTemplate = ((StringWriter) writer).getBuffer().toString(); if (processedTemplate == null) { badRequest(request); return; } notifHelper.sendEmail(request, userMail, null, null, mailTitle, processedTemplate, null, true, mailHeaders, handlerToAsyncHandler(new Handler<Message<JsonObject>>() { public void handle(Message<JsonObject> event) { if ("error".equals(event.body().getString("status"))) { log.error("[MassMail] Error while sending mail (" + event.body().getString("message", "") + ")"); } } })); } }); } ok(request); } }); }
From source file:org.entcore.directory.controllers.UserBookController.java
License:Open Source License
private void getUserPrefs(final UserInfos user, final HttpServerRequest request, final String application, final Handler<Either<String, JsonObject>> handler) { if (user != null) { UserUtils.getSession(eb, request, new Handler<JsonObject>() { public void handle(JsonObject session) { final JsonObject cache = session.getJsonObject("cache"); if (cache.containsKey("preferences")) { handler.handle(new Either.Right<String, JsonObject>(new JsonObject().put("preference", cache.getJsonObject("preferences").getString(application)))); } else { refreshPreferences(user, request, new Handler<Either<String, JsonObject>>() { public void handle(Either<String, JsonObject> event) { if (event.isLeft()) { log.error(event.left().getValue()); handler.handle( new Either.Left<String, JsonObject>("refresh.preferences.failed")); } else { handler.handle(new Either.Right<String, JsonObject>(new JsonObject() .put("preference", event.right().getValue().getString(application)))); }/*w w w . j a v a 2 s . c o m*/ } }); } } }); } else { handler.handle(new Either.Left<String, JsonObject>("bad.user")); } }
From source file:org.entcore.directory.controllers.UserBookController.java
License:Open Source License
@Put("/preference/:application") @SecuredAction(value = "user.preference", type = ActionType.AUTHENTICATED) public void updatePreference(final HttpServerRequest request) { UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() { @Override/*from w w w . ja va 2 s . co m*/ public void handle(final UserInfos user) { if (user != null) { final JsonObject params = new JsonObject().put("userId", user.getUserId()); final String application = request.params().get("application").replaceAll("\\W+", ""); request.bodyHandler(new Handler<Buffer>() { @Override public void handle(Buffer body) { params.put("conf", body.toString("UTF-8")); String query = "MATCH (u:User {id:{userId}})" + "MERGE (u)-[:PREFERS]->(uac:UserAppConf)" + " ON CREATE SET uac." + application + " = {conf}" + " ON MATCH SET uac." + application + " = {conf}"; neo.execute(query, params, validUniqueResultHandler(new Handler<Either<String, JsonObject>>() { @Override public void handle(Either<String, JsonObject> result) { if (result.isRight()) { renderJson(request, result.right().getValue()); UserUtils.getSession(eb, request, new Handler<JsonObject>() { public void handle(JsonObject session) { final JsonObject cache = session.getJsonObject("cache"); if (cache.containsKey("preferences")) { JsonObject prefs = cache.getJsonObject("preferences"); prefs.put(application, params.getString("conf")); if ("theme".equals(application)) { prefs.remove(THEME_ATTRIBUTE + getHost(request)); } UserUtils.addSessionAttribute(eb, user.getUserId(), "preferences", prefs, new Handler<Boolean>() { public void handle(Boolean event) { UserUtils.removeSessionAttribute(eb, user.getUserId(), THEME_ATTRIBUTE + getHost(request), null); if (!event) log.error( "Could not add preferences attribute to session."); } }); } } }); } else { leftToResponse(request, result.left()); } } })); } }); } else { badRequest(request); } } }); }
From source file:org.entcore.directory.services.impl.DefaultSchoolService.java
License:Open Source License
@Override public void massmailUsers(String structureId, JsonObject filterObj, boolean groupClasses, boolean groupChildren, Boolean hasMail, UserInfos userInfos, Handler<Either<String, JsonArray>> results) { String filter = "MATCH (s:Structure {id: {structureId}})<-[:DEPENDS]-(g:ProfileGroup)<-[:IN]-(u:User), " + "(g)-[:HAS_PROFILE]-(p: Profile) "; String condition = ""; String optional = "OPTIONAL MATCH (s)<-[:BELONGS]-(c:Class)<-[:DEPENDS]-(:ProfileGroup)<-[:IN]-(u) " + "OPTIONAL MATCH (u)<-[:RELATED]-(child: User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(c) "; JsonObject params = new JsonObject().put("structureId", structureId); //Activation//ww w . ja v a 2 s . c o m if (filterObj.containsKey("activated")) { String activated = filterObj.getString("activated", "false"); if ("false".equals(activated.toLowerCase())) { condition = "WHERE NOT(u.activationCode IS NULL) "; } else if ("true".equals(activated.toLowerCase())) { condition = "WHERE (u.activationCode IS NULL) "; } else { condition = "WHERE 1 = 1 "; } } else { condition = "WHERE NOT(u.activationCode IS NULL) "; } //Profiles if (filterObj.getJsonArray("profiles").size() > 0) { condition += "AND p.name IN {profilesArray} "; params.put("profilesArray", filterObj.getJsonArray("profiles")); } //Levels if (filterObj.getJsonArray("levels").size() > 0) { condition += " AND u.level IN {levelsArray} "; params.put("levelsArray", filterObj.getJsonArray("levels")); } //Classes if (filterObj.getJsonArray("classes").size() > 0) { filter += ", (c:Class)<-[:DEPENDS]-(:ProfileGroup)<-[:IN]-(u) "; optional = "OPTIONAL MATCH (u)<-[:RELATED]-(child: User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(c) "; condition += " AND c.id IN {classesArray} "; params.put("classesArray", filterObj.getJsonArray("classes")); } //Email if (hasMail != null) { if (hasMail) { condition += " AND COALESCE(u.email, \"\") <> \"\" "; } else { condition += " AND COALESCE(u.email, \"\") = \"\" "; } } //Admin check if (!userInfos.getFunctions().containsKey(SUPER_ADMIN) && !userInfos.getFunctions().containsKey(ADMIN_LOCAL) && !userInfos.getFunctions().containsKey(CLASS_ADMIN)) { results.handle(new Either.Left<String, JsonArray>("forbidden")); return; } else if (userInfos.getFunctions().containsKey(ADMIN_LOCAL)) { UserInfos.Function f = userInfos.getFunctions().get(ADMIN_LOCAL); List<String> scope = f.getScope(); if (scope != null && !scope.isEmpty()) { condition += "AND s.id IN {scope} "; params.put("scope", new fr.wseduc.webutils.collections.JsonArray(scope)); } } else if (userInfos.getFunctions().containsKey(CLASS_ADMIN)) { if (filterObj.getJsonArray("classes").size() < 1) { results.handle(new Either.Left<String, JsonArray>("forbidden")); return; } UserInfos.Function f = userInfos.getFunctions().get(CLASS_ADMIN); List<String> scope = f.getScope(); if (scope != null && !scope.isEmpty()) { condition = "AND c.id IN {scope} "; params.put("scope", new fr.wseduc.webutils.collections.JsonArray(scope)); } } //With clause String withStr = "WITH u, p "; //Return clause String returnStr = "RETURN distinct collect(p.name)[0] as profile, " + "u.id as id, u.firstName as firstName, u.lastName as lastName, " + "u.email as email, CASE WHEN u.loginAlias IS NOT NULL THEN u.loginAlias ELSE u.login END as login, u.activationCode as activationCode "; if (groupClasses) { withStr += ", collect(distinct c.name) as classes, min(c.name) as classname, CASE count(c) WHEN 0 THEN false ELSE true END as isInClass "; returnStr += ", classes, classname, isInClass "; } else { withStr += ", c.name as classname, CASE count(c) WHEN 0 THEN false ELSE true END as isInClass "; returnStr += ", classname, isInClass "; } if (groupChildren) { withStr += ", CASE count(child) WHEN 0 THEN null ELSE collect(distinct {firstName: child.firstName, lastName: child.lastName, classname: c.name}) END as children "; returnStr += ", filter(c IN children WHERE not(c.firstName is null)) as children "; } else { if (groupClasses) { withStr = "WITH u, p, c, " + "CASE count(child) WHEN 0 THEN null " + "ELSE {firstName: child.firstName, lastName: child.lastName, classname: c.name} " + "END as child " + withStr + ", child "; } else { withStr += ", CASE count(child) WHEN 0 THEN null ELSE {firstName: child.firstName, lastName: child.lastName } END as child "; } returnStr += ", child "; } //Order by String sort = "ORDER BY "; for (Object sortObj : filterObj.getJsonArray("sort")) { String sortstr = (String) sortObj; sort += sortstr + ","; } sort += "lastName"; String query = filter + condition + optional + withStr + returnStr + sort; neo.execute(query.toString(), params, validResultHandler(results)); }