List of usage examples for io.vertx.core.eventbus Message body
@CacheReturn T body();
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)); } }); }