Example usage for io.vertx.core.eventbus Message body

List of usage examples for io.vertx.core.eventbus Message body

Introduction

In this page you can find the example usage for io.vertx.core.eventbus Message body.

Prototype

@CacheReturn
T body();

Source Link

Document

The body of the message.

Usage

From source file:org.entcore.directory.controllers.ClassController.java

License:Open Source License

private void initPostCreate(final String classId, final JsonArray userIds, final boolean welcomeMessage,
        final HttpServerRequest request) {
    ApplicationUtils.sendModifiedUserGroup(eb, userIds,
            handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
                @Override/*from w  w w .ja va2 s. co  m*/
                public void handle(Message<JsonObject> message) {
                    schoolService.getByClassId(classId, new Handler<Either<String, JsonObject>>() {
                        @Override
                        public void handle(Either<String, JsonObject> s) {
                            if (s.isRight()) {
                                JsonObject j = new JsonObject().put("action", "setDefaultCommunicationRules")
                                        .put("schoolId", s.right().getValue().getString("id"));
                                eb.send("wse.communication", j,
                                        handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
                                            public void handle(Message<JsonObject> event) {
                                                if ("error".equals(event.body().getString("status", ""))) {
                                                    log.error(
                                                            "[initPostCreate] Set communication rules failed.");
                                                } else if (welcomeMessage) {
                                                    JsonObject params = new JsonObject();
                                                    conversationNotification.notify(request, "", userIds, null,
                                                            "welcome.subject", "email/welcome.html", params,
                                                            new Handler<Either<String, JsonObject>>() {
                                                                public void handle(
                                                                        Either<String, JsonObject> r) {
                                                                    if (r.isLeft()) {
                                                                        log.error(r.left().getValue());
                                                                    }
                                                                }
                                                            });
                                                }
                                            }
                                        }));
                            }
                        }
                    });

                }
            }));
}

From source file:org.entcore.directory.controllers.DirectoryController.java

License:Open Source License

@Post("/transition")
@SecuredAction("directory.transition")
@IgnoreCsrf/*w  w  w. jav  a  2 s.c o  m*/
public void launchTransition(final HttpServerRequest request) {
    JsonObject t = new JsonObject().put("action", "transition");
    String structureId = request.params().get("structureExternalId");
    if (structureId != null) {
        t.put("structureExternalId", structureId);
    }
    eb.send("entcore.feeder", t,
            new DeliveryOptions().setSendTimeout(getOrElse(config.getLong("transitionTimeout"), 300000l)),
            handlerToAsyncHandler(new Handler<Message<JsonObject>>() {

                @Override
                public void handle(Message<JsonObject> event) {
                    renderJson(request, event.body());
                }
            }));
}

From source file:org.entcore.directory.controllers.DirectoryController.java

License:Open Source License

@Post("/duplicates/mark")
@SecuredAction("directory.duplicates.mark")
@IgnoreCsrf//from w  w w .j  a  v  a  2s .  c om
public void markDuplicates(final HttpServerRequest request) {
    eb.send("entcore.feeder", new JsonObject().put("action", "mark-duplicates"),
            new DeliveryOptions().setSendTimeout(getOrElse(config.getLong("markDuplicatesTimeout"), 300000l)),
            handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> event) {
                    renderJson(request, event.body());
                }
            }));
}

From source file:org.entcore.directory.controllers.DirectoryController.java

License:Open Source License

@Get("/api/export")
@SecuredAction(value = "", type = ActionType.RESOURCE)
public void export(final HttpServerRequest request) {
    String neoRequest = "";
    Map<String, Object> params = new HashMap<>();
    if (request.params().get("id").equals("all")) {
        neoRequest = "MATCH (m:User)-[:IN]->g " + "WHERE NOT(m.activationCode IS NULL) "
                + "OPTIONAL MATCH g-[:DEPENDS*0..1]->(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) "
                + "RETURN distinct m.lastName as lastName, m.firstName as firstName, "
                + "m.login as login, m.activationCode as activationCode, " + "p.name as type "
                + "ORDER BY type, login ";
    } else if (request.params().get("id") != null) {
        neoRequest = "MATCH (m:User)-[:IN]->g-[:DEPENDS]->n "
                + "WHERE (n:Structure OR n:Class) AND n.id = {id} AND NOT(m.activationCode IS NULL) "
                + "OPTIONAL MATCH g-[:DEPENDS*0..1]->(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) "
                + "RETURN distinct m.lastName as lastName, m.firstName as firstName, "
                + "m.login as login, m.activationCode as activationCode, " + "p.name as type "
                + "ORDER BY type, login ";
        params.put("id", request.params().get("id"));
    } else {/*from ww  w  .  ja  v a  2 s  .  co  m*/
        notFound(request);
    }
    neo.send(neoRequest, params, new Handler<Message<JsonObject>>() {

        @Override
        public void handle(Message<JsonObject> res) {
            if ("ok".equals(res.body().getString("status"))) {
                JsonArray r = Neo.resultToJsonArray(res.body().getJsonObject("result"));
                processTemplate(request, "text/export.txt", new JsonObject().put("list", r),
                        new Handler<String>() {
                            @Override
                            public void handle(String export) {
                                if (export != null) {
                                    request.response().putHeader("Content-Type", "application/csv");
                                    request.response().putHeader("Content-Disposition",
                                            "attachment; filename=activation_de_comptes.csv");
                                    request.response().end(export);
                                } else {
                                    renderError(request);
                                }
                            }
                        });
            } else {
                renderError(request);
            }
        }
    });
}

From source file:org.entcore.directory.controllers.DirectoryController.java

License:Open Source License

@BusAddress("directory")
public void directoryHandler(final Message<JsonObject> message) {
    String action = message.body().getString("action", "");
    String userId = message.body().getString("userId");
    switch (action) {
    case "usersInProfilGroup":
        boolean itSelf2 = message.body().getBoolean("itself", false);
        String excludeUserId = message.body().getString("excludeUserId");
        userService.list(userId, itSelf2, excludeUserId, responseHandler(message));
        break;//www .  j  a va  2s. c om
    case "getUser":
        userService.get(userId, false, BusResponseHandler.busResponseHandler(message));
        break;
    case "getUserInfos":
        userService.getInfos(userId, BusResponseHandler.busResponseHandler(message));
        break;
    case "list-users":
        JsonArray userIds = message.body().getJsonArray("userIds",
                new fr.wseduc.webutils.collections.JsonArray());
        JsonArray groupIds = message.body().getJsonArray("groupIds",
                new fr.wseduc.webutils.collections.JsonArray());
        boolean itSelf = message.body().getBoolean("itself", false);
        String excludeId = message.body().getString("excludeUserId");
        userService.list(groupIds, userIds, itSelf, excludeId, busArrayHandler(message));
        break;
    case "list-structures":
        schoolService.list(message.body().getJsonArray("fields"), busArrayHandler(message));
        break;
    case "list-groups":
        String structureId = message.body().getString("structureId");
        String type = message.body().getString("type");
        boolean subGroups = message.body().getBoolean("subGroups", false);
        groupService.list(structureId, type, subGroups, busArrayHandler(message));
        break;
    case "list-adml":
        String sId = message.body().getString("structureId");
        userService.listAdml(sId, responseHandler(message));
        break;
    default:
        message.reply(new JsonObject().put("status", "error").put("message", "Invalid action."));
    }
}

From source file:org.entcore.directory.controllers.StructureController.java

License:Open Source License

private void massMailTypePdf(final HttpServerRequest request, final String templatePath, final String baseUrl,
        final String filename, final JsonArray users) {

    final JsonObject templateProps = new JsonObject().put("users", users);

    vertx.fileSystem().readFile(templatePath + "massmail.pdf.xhtml", new Handler<AsyncResult<Buffer>>() {

        @Override//from   ww  w. jav a 2s.com
        public void handle(AsyncResult<Buffer> result) {
            if (!result.succeeded()) {
                badRequest(request);
                return;
            }

            StringReader reader = new StringReader(result.result().toString("UTF-8"));

            processTemplate(request, templateProps, "massmail.pdf.xhtml", reader, new Handler<Writer>() {
                public void handle(Writer writer) {
                    String processedTemplate = ((StringWriter) writer).getBuffer().toString();

                    if (processedTemplate == null) {
                        badRequest(request);
                        return;
                    }

                    JsonObject actionObject = new JsonObject();
                    actionObject.put("content", processedTemplate.getBytes()).put("baseUrl", baseUrl);

                    eb.send(node + "entcore.pdf.generator", actionObject,
                            new DeliveryOptions().setSendTimeout(600000l),
                            handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
                                public void handle(Message<JsonObject> reply) {
                                    JsonObject pdfResponse = reply.body();
                                    if (!"ok".equals(pdfResponse.getString("status"))) {
                                        badRequest(request, pdfResponse.getString("message"));
                                        return;
                                    }

                                    byte[] pdf = pdfResponse.getBinary("content");
                                    request.response().putHeader("Content-Type", "application/pdf");
                                    request.response().putHeader("Content-Disposition",
                                            "attachment; filename=" + filename + ".pdf");
                                    request.response().end(Buffer.buffer(pdf));
                                }
                            }));
                }

            });
        }
    });

}

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 w  w . ja  va 2 s  .  co  m
        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.TimetableController.java

License:Open Source License

@BusAddress("timetable")
@SuppressWarnings("unchecked")
public void getTimetable(final Message<JsonObject> message) {
    final String action = message.body().getString("action");

    if (action == null) {
        log.warn("[@BusAddress](timetable) Invalid action.");
        message.reply(new JsonObject().put("status", "error").put("message", "Invalid action."));
        return;//from  ww  w . j  a  va 2 s  .c  om
    }

    final String structureId = message.body().getString("structureId");

    switch (action) {
    case "get.course":
        final String teacherId = message.body().getString("teacherId");
        final List<String> groupNames = message.body().getJsonArray("group", new JsonArray()).getList();
        final String beginDate = message.body().getString("begin");
        final String endDate = message.body().getString("end");

        if (beginDate != null && endDate != null && beginDate.matches("\\d{4}-\\d{2}-\\d{2}")
                && endDate.matches("\\d{4}-\\d{2}-\\d{2}")) {

            timetableService.listCoursesBetweenTwoDates(structureId, teacherId, groupNames, beginDate, endDate,
                    getBusResultHandler(message));
        } else {
            message.reply(new JsonObject().put("status", "error").put("message", "timetable.invalid.dates"));
        }
        break;
    case "get.subjects":
        final List<String> teachers = message.body()
                .getJsonArray("teacherIds", new fr.wseduc.webutils.collections.JsonArray()).getList();
        final String externalGroupId = message.body().getString("externalGroupId");
        final boolean classes = message.body().getBoolean("classes", false);
        final boolean groups = message.body().getBoolean("groups", false);

        if (StringUtils.isEmpty(externalGroupId)) {
            timetableService.listSubjects(structureId, teachers, classes, groups, getBusResultHandler(message));
        } else {
            timetableService.listSubjectsByGroup(structureId, externalGroupId, getBusResultHandler(message));
        }

        break;
    default:
        message.reply(new JsonObject().put("status", "error").put("message", "Invalid action."));
        break;
    }
}

From source file:org.entcore.directory.controllers.UserBookController.java

License:Open Source License

@Get("/api/person")
@SecuredAction(value = "userbook.authent", type = ActionType.AUTHENTICATED)
public void person(final HttpServerRequest request) {
    UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() {
        @Override// w w  w . j  a  v  a2  s  . c  o m
        public void handle(final UserInfos user) {
            if (user != null) {
                String hobbyVisibility;
                String personnalInfos;
                Map<String, Object> params = new HashMap<>();
                if (request.params().get("id") == null) {
                    Object person = user.getAttribute(PERSON_ATTRIBUTE);
                    if (person != null) {
                        renderJson(request, new JsonObject(person.toString()));
                        return;
                    }
                    params.put("userId", user.getUserId());
                    hobbyVisibility = "PUBLIC|PRIVE";
                    personnalInfos = "OPTIONAL MATCH u-[r0:SHOW_EMAIL]->() "
                            + "OPTIONAL MATCH u-[r1:SHOW_BIRTHDATE]->() "
                            + "OPTIONAL MATCH u-[r2:SHOW_PHONE]->() " + "OPTIONAL MATCH u-[r3:SHOW_MAIL]->() "
                            + "OPTIONAL MATCH u-[r4:SHOW_HEALTH]->u " + "OPTIONAL MATCH u-[r5:SHOW_MOBILE]->() "
                            + "WITH DISTINCT h, s, c, n, v, u, n2, p, n.address as address, "
                            + "n.email as email, u.health as health, "
                            + "n.homePhone as tel, n.birthDate as birthdate, n.mobile as mobile, "
                            + "COLLECT(distinct [type(r0),type(r1),type(r2),type(r3),type(r4),type(r5)]) as r ";
                } else {
                    params.put("userId", request.params().get("id"));
                    hobbyVisibility = "PUBLIC";
                    personnalInfos = "OPTIONAL MATCH u-[:SHOW_EMAIL]->e " + "OPTIONAL MATCH u-[:SHOW_MAIL]->a "
                            + "OPTIONAL MATCH u-[:SHOW_PHONE]->ph " + "OPTIONAL MATCH u-[:SHOW_MOBILE]->mo "
                            + "OPTIONAL MATCH u-[:SHOW_BIRTHDATE]->b " + "OPTIONAL MATCH u-[:SHOW_HEALTH]->st "
                            + "WITH h, s, c, n, v, u, n2, p, a.address as address, "
                            + "e.email as email, st.health as health, "
                            + "ph.homePhone as tel, b.birthDate as birthdate, mo.mobile as mobile, "
                            + "COLLECT([]) as r ";
                }
                String query = "MATCH (n:User) " + "WHERE n.id = {userId} "
                        + "OPTIONAL MATCH n-[:IN]->(:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) "
                        + "OPTIONAL MATCH n-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s:Structure) "
                        + "OPTIONAL MATCH n-[:IN]->(:ProfileGroup)-[:DEPENDS]->(c:Class)-[:BELONGS]->(s) "
                        + "OPTIONAL MATCH (n)-[:USERBOOK]->(u) " + "OPTIONAL MATCH (u)-[v:" + hobbyVisibility
                        + "]->(h1) " + "OPTIONAL MATCH (n)-[:RELATED]-(n2) "
                        + "WITH DISTINCT h1 as h, s, collect(distinct c.name) as c, n, v, u, n2, p "
                        + personnalInfos
                        + "WITH COLLECT(DISTINCT {name: s.name, id: s.id, classes: c}) as schools, "
                        + "n, u, n2, address, email, health, tel, mobile, birthdate, r,  COLLECT(p.name) as type, "
                        + "COLLECT(DISTINCT {visibility: type(v), category: h.category, values: h.values}) as hobbies "
                        + "RETURN DISTINCT " + "n.id as id," + "n.login as login, "
                        + "n.displayName as displayName," + "type," + "address," + "email, " + "tel, "
                        + "mobile, " + "birthdate, " + "HEAD(r) as visibleInfos, " + "schools, "
                        + "n2.displayName as relatedName, " + "n2.id as relatedId," + "n2.type as relatedType,"
                        + "u.userid as userId," + "u.motto as motto,"
                        + "COALESCE(u.picture, {defaultAvatar}) as photo,"
                        + "COALESCE(u.mood, {defaultMood}) as mood," + "health," + "hobbies";
                params.put("defaultAvatar", userBookData.getString("default-avatar"));
                params.put("defaultMood", userBookData.getString("default-mood"));
                neo.send(query, params, new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> message) {
                        JsonObject r = message.body();
                        if (request.params().get("id") == null) {
                            UserUtils.addSessionAttribute(eb, user.getUserId(), PERSON_ATTRIBUTE, r.encode(),
                                    null);
                        }
                        renderJson(request, r);
                    }
                });
            } else {
                unauthorized(request);
            }
        }
    });
}

From source file:org.entcore.directory.controllers.UserBookController.java

License:Open Source License

@Get("/api/edit-userbook-info")
@SecuredAction(value = "userbook.authent", type = ActionType.AUTHENTICATED)
public void editUserBookInfo(final HttpServerRequest request) {
    UserUtils.getUserInfos(eb, request, new Handler<UserInfos>() {
        @Override//from  w w w. j ava 2 s  .co m
        public void handle(final UserInfos user) {
            if (user != null) {
                String prop = request.params().get("prop");
                if (prop != null && (prop.startsWith("theme") || "userPreferencesBirthdayClass".equals(prop))) {
                    String attr = prop.replaceAll("\\W+", "");
                    String neoRequest = "MATCH (n:User)-[:USERBOOK]->(m:UserBook)" + "WHERE n.id = {id} SET m."
                            + attr + "={value}";
                    Map<String, Object> params = new HashMap<>();
                    params.put("id", user.getUserId());
                    params.put("value", request.params().get("value"));
                    neo.send(neoRequest, params, new Handler<Message<JsonObject>>() {

                        @Override
                        public void handle(Message<JsonObject> res) {
                            renderJson(request, res.body());
                        }
                    });
                    UserUtils.removeSessionAttribute(eb, user.getUserId(), THEME_ATTRIBUTE + getHost(request),
                            null);
                } else {
                    badRequest(request);
                }
            } else {
                unauthorized(request);
            }
        }
    });
}