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.feeder.timetable.AbstractTimetableImporter.java

License:Open Source License

private static void transitionDeleteCourses(final JsonObject query) {
    MongoDb.getInstance().delete(COURSES, query, new Handler<Message<JsonObject>>() {
        @Override//from www.  ja va2 s  .c om
        public void handle(Message<JsonObject> event) {
            if (!"ok".equals(event.body().getString("status"))) {
                log.error("Courses timetable transition error on structure " + query.encode() + " - message : "
                        + event.body().getString("message"));
            }
        }
    });
}

From source file:org.entcore.feeder.timetable.AbstractTimetableImporter.java

License:Open Source License

private static void transitionDeleteSubjectsAndMapping(final String structureExternalId) {
    final JsonObject params = new JsonObject();
    String filter = "";
    if (isNotEmpty(structureExternalId)) {
        filter = " {externalId : {structureExternalId}}";
        params.put("structureExternalId", structureExternalId);
    }/*from   ww  w  . j  a  va2s . com*/
    try {
        final TransactionHelper tx = TransactionManager.getTransaction();
        tx.add("MATCH (s:Structure" + filter + ") SET s.timetable = 'NOP'", params);
        tx.add("MATCH (:Structure" + filter + ")<-[:SUBJECT]-(sub:Subject) DETACH DELETE sub", params);
        tx.add("MATCH (:Structure" + filter + ")<-[:MAPPING]-(cm:ClassesMapping) DETACH DELETE cm", params);
        tx.commit(new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> event) {
                if (!"ok".equals(event.body().getString("status"))) {
                    log.error("Subjects timetable transition error on structure " + params.encode()
                            + " - message : " + event.body().getString("message"));
                }
            }
        });
    } catch (TransactionException e) {
        log.error("Unable to acquire transaction for timetable transition", e);
    }
}

From source file:org.entcore.feeder.timetable.AbstractTimetableImporter.java

License:Open Source License

public static void initStructure(final EventBus eb, final Message<JsonObject> message) {
    final JsonObject conf = message.body().getJsonObject("conf");
    if (conf == null) {
        message.reply(new JsonObject().put("status", "error").put("message", "invalid.conf"));
        return;/* w w w. j  a  v a2s  . c om*/
    }
    final String query = "MATCH (s:Structure {id:{structureId}}) "
            + "RETURN (NOT(HAS(s.timetable)) OR s.timetable <> {type}) as update ";
    TransactionManager.getNeo4jHelper().execute(query, conf, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(final Message<JsonObject> event) {
            final JsonArray j = event.body().getJsonArray("result");
            if ("ok".equals(event.body().getString("status")) && j != null && j.size() == 1
                    && j.getJsonObject(0).getBoolean("update", false)) {
                try {
                    TransactionHelper tx = TransactionManager.getTransaction();
                    final String q1 = "MATCH (s:Structure {id : {structureId}})<-[:DEPENDS]-(fg:FunctionalGroup) "
                            + "WHERE NOT(HAS(s.timetable)) OR s.timetable <> {type} "
                            + "OPTIONAL MATCH fg<-[:IN]-(u:User) "
                            + "RETURN fg.id as group, fg.name as groupName, collect(u.id) as users ";
                    final String q2 = "MATCH (s:Structure {id: {structureId}}) "
                            + "WHERE NOT(HAS(s.timetable)) OR s.timetable <> {type} "
                            + "SET s.timetable = {typeUpdate} " + "WITH s "
                            + "MATCH s<-[:DEPENDS]-(fg:FunctionalGroup), s<-[:SUBJECT]-(sub:Subject) "
                            + "DETACH DELETE fg, sub ";
                    final String q3 = "MATCH (s:Structure {id: {structureId}})<-[:MAPPING]-(cm:ClassesMapping) "
                            + "DETACH DELETE cm";
                    tx.add(q1, conf);
                    tx.add(q2, (isEmpty(conf.getString("type")) ? conf.putNull("typeUpdate")
                            : conf.put("typeUpdate", conf.getString("type"))));
                    tx.add(q3, conf);
                    tx.commit(new Handler<Message<JsonObject>>() {
                        @Override
                        public void handle(Message<JsonObject> res) {
                            if ("ok".equals(res.body().getString("status"))) {
                                final JsonArray r = res.body().getJsonArray("results");
                                if (r != null && r.size() == 2) {
                                    Transition.publishDeleteGroups(eb, log, r.getJsonArray(0));
                                }
                                final JsonObject matcher = new JsonObject().put("structureId",
                                        conf.getString("structureId"));
                                MongoDb.getInstance().delete(COURSES, matcher,
                                        new Handler<Message<JsonObject>>() {
                                            @Override
                                            public void handle(Message<JsonObject> mongoResult) {
                                                if (!"ok".equals(mongoResult.body().getString("status"))) {
                                                    log.error("Error deleting courses : "
                                                            + mongoResult.body().getString("message"));
                                                }
                                                message.reply(event.body());
                                            }
                                        });
                            } else {
                                message.reply(res.body());
                            }
                        }
                    });
                } catch (TransactionException e) {
                    log.error("Transaction error when init timetable structure", e);
                    message.reply(new JsonObject().put("status", "error").put("message", e.getMessage()));
                }
            } else {
                message.reply(event.body());
            }
        }
    });
}

From source file:org.entcore.feeder.timetable.edt.EDTImporter.java

License:Open Source License

private void userExternalId(final Handler<Void> handler) {
    if (!userImportedPronoteId.isEmpty()) {
        final String query = "MATCH (u:User) where u.IDPN IN {pronoteIds} RETURN COLLECT(u.externalId) as externalIds";
        TransactionManager.getNeo4jHelper().execute(query,
                new JsonObject().put("pronoteIds",
                        new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(userImportedPronoteId))),
                new Handler<Message<JsonObject>>() {
                    @Override//from  w w w .  j  av  a 2 s  . com
                    public void handle(Message<JsonObject> event) {
                        JsonArray res = event.body().getJsonArray("result");
                        if ("ok".equals(event.body().getString("status")) && res.size() == 1) {
                            JsonArray r = res.getJsonObject(0).getJsonArray("externalIds");
                            if (r != null) {
                                userImportedExternalId.addAll(r.getList());
                            }
                        }
                        handler.handle(null);
                    }
                });
    } else {
        handler.handle(null);
    }
}

From source file:org.entcore.feeder.timetable.edt.EDTImporter.java

License:Open Source License

private void matchAndCreatePersEducNat(final Handler<AsyncResult<Void>> handler) {
    txXDT.commit(new Handler<Message<JsonObject>>() {
        @Override//from w ww.j a v  a2s  .com
        public void handle(Message<JsonObject> event) {
            JsonArray res = event.body().getJsonArray("results");
            if ("ok".equals(event.body().getString("status")) && res != null) {
                for (Object o : res) {
                    setUsersId(o);
                }
                if (!notFoundPersEducNat.isEmpty()) {
                    try {
                        TransactionHelper tx = TransactionManager.getTransaction();
                        persEducNat.setTransactionHelper(tx);
                        for (JsonObject p : notFoundPersEducNat.values()) {
                            p.put("structures", new JsonArray().add(structureExternalId));
                            if ("Teacher".equals(p.getJsonArray("profiles").getString(0))) {
                                persEducNat.createOrUpdatePersonnel(p, TEACHER_PROFILE_EXTERNAL_ID, structure,
                                        null, null, true, true);
                            } else {
                                persEducNat.createOrUpdatePersonnel(p, PERSONNEL_PROFILE_EXTERNAL_ID, structure,
                                        null, null, true, true);
                            }
                        }
                        tx.commit(new Handler<Message<JsonObject>>() {
                            @Override
                            public void handle(Message<JsonObject> event) {
                                JsonArray res = event.body().getJsonArray("results");
                                if ("ok".equals(event.body().getString("status")) && res != null) {
                                    for (Object o : res) {
                                        setUsersId(o);
                                    }
                                    if (notFoundPersEducNat.isEmpty()) {
                                        handler.handle(new DefaultAsyncResult<>((Void) null));
                                    } else {
                                        for (Map.Entry<String, JsonObject> e : notFoundPersEducNat.entrySet()) {
                                            log.info(e.getKey() + " : " + e.getValue().encode());
                                        }
                                        handler.handle(new DefaultAsyncResult<Void>(
                                                new ValidationException("not.found.users.not.empty")));
                                    }
                                } else {
                                    handler.handle(new DefaultAsyncResult<Void>(
                                            new TransactionException(event.body().getString("message"))));
                                }
                            }
                        });
                    } catch (TransactionException e) {
                        handler.handle(new DefaultAsyncResult<Void>(e));
                    }
                } else {
                    handler.handle(new DefaultAsyncResult<>((Void) null));
                }
            } else {
                handler.handle(new DefaultAsyncResult<Void>(
                        new TransactionException(event.body().getString("message"))));
            }
        }

        private void setUsersId(Object o) {
            if ((o instanceof JsonArray) && ((JsonArray) o).size() > 0) {
                JsonObject j = ((JsonArray) o).getJsonObject(0);
                String idPronote = j.getString(IDPN);
                String id = j.getString("id");
                String profile = j.getString("profile");
                if (isNotEmpty(id) && isNotEmpty(idPronote) && isNotEmpty(profile)) {
                    notFoundPersEducNat.remove(idPronote);
                    if ("Teacher".equals(profile)) {
                        teachersMapping.put(idPronote, new String[] { id, getSource() });
                    } else {
                        String[] ident = idPronote.split("\\$");
                        if (ident.length == 2) {
                            personnels.put(ident[1], id);
                        }
                    }
                }
            }
        }
    });

}

From source file:org.entcore.feeder.timetable.edt.EDTImporter.java

License:Open Source License

public static void launchImport(EDTUtils edtUtils, final String mode, final Message<JsonObject> message,
        final PostImport postImport) {
    final I18n i18n = I18n.getInstance();
    final String acceptLanguage = message.body().getString("language", "fr");
    if (edtUtils == null) {
        JsonObject json = new JsonObject().put("status", "error").put("message",
                i18n.translate("invalid.edt.key", I18n.DEFAULT_DOMAIN, acceptLanguage));
        message.reply(json);/* w  w  w .ja  va2s.c  om*/
        return;
    }
    final String uai = message.body().getString("UAI");
    final String path = message.body().getString("path");

    if (isEmpty(uai) || isEmpty(path) || isEmpty(acceptLanguage)) {
        JsonObject json = new JsonObject().put("status", "error").put("message",
                i18n.translate("invalid.params", I18n.DEFAULT_DOMAIN, acceptLanguage));
        message.reply(json);
    }

    try {
        new EDTImporter(edtUtils, uai, path, acceptLanguage, mode).launch(new Handler<AsyncResult<Report>>() {
            @Override
            public void handle(AsyncResult<Report> event) {
                if (event.succeeded()) {
                    message.reply(
                            new JsonObject().put("status", "ok").put("result", event.result().getResult()));
                    if (postImport != null) {
                        postImport.execute();
                    }
                } else {
                    log.error(event.cause().getMessage(), event.cause());
                    JsonObject json = new JsonObject().put("status", "error").put("message",
                            i18n.translate(event.cause().getMessage(), I18n.DEFAULT_DOMAIN, acceptLanguage));
                    message.reply(json);
                }
            }
        });
    } catch (Exception e) {
        log.error(e.getMessage(), e);
        JsonObject json = new JsonObject().put("status", "error").put("message",
                i18n.translate(e.getMessage(), I18n.DEFAULT_DOMAIN, acceptLanguage));
        message.reply(json);
    }
}

From source file:org.entcore.feeder.timetable.udt.UDTImporter.java

License:Open Source License

public static void launchImport(Vertx vertx, final Message<JsonObject> message, final PostImport postImport,
        boolean udtUserCreation) {
    final I18n i18n = I18n.getInstance();
    final String uai = message.body().getString("UAI");
    final String path = message.body().getString("path");
    final String acceptLanguage = message.body().getString("language", "fr");

    if (Utils.isEmpty(uai) || Utils.isEmpty(path) || Utils.isEmpty(acceptLanguage)) {
        JsonObject json = new JsonObject().put("status", "error").put("message",
                i18n.translate("invalid.params", I18n.DEFAULT_DOMAIN, acceptLanguage));
        message.reply(json);/* w  ww. j  a  v a  2  s . c o m*/
    }

    try {
        final String parentPath = FileUtils.getParentPath(path);
        FileUtils.unzip(path, parentPath);
        new UDTImporter(vertx, uai, parentPath + File.separator, acceptLanguage, udtUserCreation)
                .launch(new Handler<AsyncResult<Report>>() {
                    @Override
                    public void handle(AsyncResult<Report> event) {
                        if (event.succeeded()) {
                            message.reply(new JsonObject().put("status", "ok").put("result",
                                    event.result().getResult()));
                            if (postImport != null) {
                                postImport.execute();
                            }
                        } else {
                            log.error(event.cause().getMessage(), event.cause());
                            JsonObject json = new JsonObject().put("status", "error").put("message",
                                    i18n.translate(event.cause().getMessage(), I18n.DEFAULT_DOMAIN,
                                            acceptLanguage));
                            message.reply(json);
                        }
                    }
                });
    } catch (Exception e) {
        log.error(e.getMessage(), e);
        JsonObject json = new JsonObject().put("status", "error").put("message",
                i18n.translate(e.getMessage(), I18n.DEFAULT_DOMAIN, acceptLanguage));
        message.reply(json);
    }
}

From source file:org.entcore.feeder.utils.Report.java

License:Open Source License

private void countDiff(Optional<String> prefixAcademy, String source, final Handler<JsonObject> handler) {
    try {// ww  w  .j  a  va2s.c  om
        TransactionHelper tx = TransactionManager.getTransaction();
        JsonObject params = new JsonObject().put("source", source).put("start", startTime).put("end", endTime)
                .put("startTime", new DateTime(startTime).toString())
                .put("endTime", new DateTime(endTime).toString());
        if (prefixAcademy.isPresent()) {
            params.put("prefixAcademy", prefixAcademy.get());
        }
        tx.add("MATCH (u:User {source:{source}}) "
                + "WHERE HAS(u.created) AND u.created >= {startTime} AND u.created < {endTime} "
                + (prefixAcademy.isPresent() ? " AND u.externalId STARTS WITH {prefixAcademy} " : "")//
                + "RETURN count(*) as createdCount", params);
        tx.add("MATCH (u:User {source:{source}}) "
                + "WHERE HAS(u.modified) AND u.modified >= {startTime} AND u.modified < {endTime} "
                + (prefixAcademy.isPresent() ? " AND u.externalId STARTS WITH {prefixAcademy} " : "")//
                + "RETURN count(*) as modifiedCount", params);
        tx.add("MATCH (u:User {source:{source}}) "
                + "WHERE HAS(u.disappearanceDate) AND u.disappearanceDate >= {start} AND u.disappearanceDate < {end} "
                + (prefixAcademy.isPresent() ? " AND u.externalId STARTS WITH {prefixAcademy} " : "")//
                + "RETURN count(*) as disappearanceCount", params);
        tx.commit(new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> event) {
                JsonArray results = event.body().getJsonArray("results");
                if ("ok".equals(event.body().getString("status")) && results != null && results.size() == 3) {
                    try {
                        final JsonObject result = cloneAndFilterResults(prefixAcademy);
                        int created = results.getJsonArray(0).getJsonObject(0).getInteger("createdCount");
                        int modified = results.getJsonArray(1).getJsonObject(0).getInteger("modifiedCount");
                        int disappearance = results.getJsonArray(2).getJsonObject(0)
                                .getInteger("disappearanceCount");
                        result.put("userCount", new JsonObject().put("created", created)
                                .put("modified", (modified - created)).put("disappearance", disappearance));
                        result.put("source", source);
                        result.put("startTime", new DateTime(startTime).toString());
                        result.put("endTime", new DateTime(endTime).toString());
                        result.put("loadedFiles", cloneAndFilterFiles(prefixAcademy));
                        handler.handle(result);
                        //                     persist(new Handler<Message<JsonObject>>() {
                        //                        @Override
                        //                        public void handle(Message<JsonObject> event) {
                        //                           if (!"ok".equals(event.body().getString("status"))) {
                        //                              log.error("Error persist report : " + event.body().getString("message"));
                        //                           }
                        //                        }
                        //                     });
                    } catch (RuntimeException e) {
                        log.error("Error parsing count diff response.", e);
                        handler.handle(null);
                    }
                } else {
                    log.error("Error in count diff transaction.");
                    handler.handle(null);
                }
            }
        });
    } catch (TransactionException e) {
        log.error("Exception in count diff transaction.", e);
        if (handler != null) {
            handler.handle(null);
        }
    }
}

From source file:org.entcore.feeder.utils.TransactionHelper.java

License:Open Source License

private void send(JsonArray s, final Handler<Message<JsonObject>> handler) {
    if (error != null) {
        throw new IllegalStateException(error.body().getString("message"));
    }//from   w w  w  .j  av  a 2  s. co m
    waitingQuery = true;
    neo4j.executeTransaction(s, transactionId, false, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> message) {
            if (handler != null) {
                handler.handle(message);
            }
            if ("ok".equals(message.body().getString("status"))) {
                Integer tId = message.body().getInteger("transactionId");
                if (transactionId == null && tId != null) {
                    transactionId = tId;
                    resetTimeOutTimer = new Timer();
                    //resetTimeOutTimer.schedule(new ResetTransactionTimer(), 0, 55000); // TODO use transaction expires
                }
            } else {
                error = message;
                log.error(message.body().encode());
            }
            waitingQuery = false;
            if (commit) {
                commit(commitHandler, false);
            } else if (flush) {
                flush(flushHandler, false);
            }
        }
    });
}

From source file:org.entcore.feeder.utils.Validator.java

License:Open Source License

protected static void initLogins(Neo4j neo4j, final long startInit, final boolean remove) {
    String query = "MATCH (u:User) RETURN COLLECT(DISTINCT u.login) as logins, COLLECT(DISTINCT u.loginAlias) as loginAliases";
    neo4j.execute(query, new JsonObject(), new Handler<Message<JsonObject>>() {
        @Override/*from   www  . j  av  a 2s .c  o m*/
        public void handle(Message<JsonObject> message) {
            JsonArray r = message.body().getJsonArray("result");
            if ("ok".equals(message.body().getString("status")) && r != null && r.size() == 1) {
                JsonArray l = (r.getJsonObject(0)).getJsonArray("logins");
                JsonArray aliases = (r.getJsonObject(0)).getJsonArray("loginAliases");

                for (Object alias : aliases) {
                    l.add(alias);
                }

                if (l != null) {
                    final Set<Object> tmp = new HashSet<>(l.getList());
                    if (remove) {
                        for (Object key : logins.keySet()) {
                            if (!tmp.contains(key)) {
                                logins.remove(key);
                            } else {
                                tmp.remove(key);
                            }
                        }
                        putLogin(tmp);
                    } else {
                        putLogin(tmp);
                    }
                }
            }
        }

        protected void putLogin(Set<Object> tmp) {
            for (Object o : tmp) {
                logins.putIfAbsent(o, "");
            }
            log.info("Init delay : " + (System.currentTimeMillis() - startInit));
        }
    });
}