Example usage for io.vertx.core.json JsonObject containsKey

List of usage examples for io.vertx.core.json JsonObject containsKey

Introduction

In this page you can find the example usage for io.vertx.core.json JsonObject containsKey.

Prototype

public boolean containsKey(String key) 

Source Link

Document

Does the JSON object contain the specified key?

Usage

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));
}