List of usage examples for io.vertx.core.eventbus Message body
@CacheReturn T body();
From source file:org.entcore.directory.security.TeacherOfClass.java
License:Open Source License
private void validateQuery(final HttpServerRequest request, final Handler<Boolean> handler, String query, JsonObject params) {//from w w w .j ava 2 s . com request.pause(); neo.execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("result"); handler.handle("ok".equals(r.body().getString("status")) && res.size() == 1 && ((JsonObject) res.getJsonObject(0)).getBoolean("exists", false)); } }); }
From source file:org.entcore.directory.security.TeacherOfUser.java
License:Open Source License
private void validateQuery(final HttpServerRequest request, final Handler<Boolean> handler, String query, JsonObject params) {/* www . j a v a 2 s . c o m*/ request.pause(); neo.execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { request.resume(); JsonArray res = r.body().getJsonArray("result"); handler.handle("ok".equals(r.body().getString("status")) && res.size() == 1 && (res.getJsonObject(0)).getBoolean("exists", false)); } }); }
From source file:org.entcore.directory.services.impl.DefaultClassService.java
License:Open Source License
@Override public void addUser(final String classId, final String userId, final UserInfos user, final Handler<Either<String, JsonObject>> result) { if (validationParamsError(result, classId, userId)) return;/*www .ja v a2s. com*/ if (user == null) { result.handle(new Either.Left<String, JsonObject>("invalid.userinfos")); return; } neo.execute( "MATCH (u:`User` {id : {id}})-[:IN]->(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) " + "RETURN distinct p.name as type", new JsonObject().put("id", userId), new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { JsonArray res = r.body().getJsonArray("result"); if ("ok".equals(r.body().getString("status")) && res != null && res.size() == 1) { final String t = (res.getJsonObject(0)).getString("type"); String customReturn = "MATCH (c:`Class` { id : {classId}})<-[:DEPENDS]-(cpg:ProfileGroup)" + "-[:DEPENDS]->(spg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile {name : {profile}}), " + "c-[:BELONGS]->(s:Structure) " + "WHERE visibles.id = {uId} " + "CREATE UNIQUE visibles-[:IN]->cpg " + "RETURN DISTINCT visibles.id as id, s.id as schoolId"; JsonObject params = new JsonObject().put("classId", classId).put("uId", userId) .put("profile", t); UserUtils.findVisibleUsers(eb, user.getUserId(), false, customReturn, params, new Handler<JsonArray>() { @Override public void handle(final JsonArray users) { if (users != null && users.size() == 1) { if ("Student".equals(t)) { String query = "MATCH (c:`Class` { id : {classId}})<-[:DEPENDS]-(cpg:ProfileGroup)-[:DEPENDS]->(spg:ProfileGroup)" + "-[:HAS_PROFILE]->(p:Profile {name : 'Relative'}), " + "(u:User {id: {uId}})-[:RELATED]->(relative: User) " + "CREATE UNIQUE relative-[:IN]->cpg " + "RETURN count(relative) as relativeNb"; JsonObject params = new JsonObject().put("classId", classId) .put("uId", userId); neo.execute(query, params, Neo4jResult.validEmptyHandler( new Handler<Either<String, JsonObject>>() { public void handle( Either<String, JsonObject> event) { if (event.isLeft()) { result.handle( new Either.Left<String, JsonObject>( "error.while.attaching.relatives")); } else { result.handle( new Either.Right<String, JsonObject>( users.getJsonObject(0))); } } })); } else { result.handle(new Either.Right<String, JsonObject>( users.getJsonObject(0))); } } else { result.handle( new Either.Left<String, JsonObject>("user.not.visible")); } } }); } else { result.handle(new Either.Left<String, JsonObject>("invalid.user")); } } }); }
From source file:org.entcore.directory.services.impl.DefaultImportService.java
License:Open Source License
@Override public void validate(ImportInfos importInfos, final Handler<Either<JsonObject, JsonObject>> handler) { try {/* w w w . j av a2 s .c o m*/ JsonObject action = new JsonObject(mapper.writeValueAsString(importInfos)).put("action", "validate"); eb.send(Directory.FEEDER, action, new DeliveryOptions().setSendTimeout(TIMEOUT), handlerToAsyncHandler(new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> res) { if ("ok".equals(res.body().getString("status"))) { JsonObject r = res.body().getJsonObject("result", new JsonObject()); if (r.getJsonObject("errors", new JsonObject()).size() > 0) { handler.handle( new Either.Left<JsonObject, JsonObject>(r.getJsonObject("errors"))); } else { JsonObject f = r.getJsonObject("files"); if (r.getJsonObject("softErrors") != null) { f.put("softErrors", r.getJsonObject("softErrors")); } handler.handle(new Either.Right<JsonObject, JsonObject>(f)); } } else { handler.handle(new Either.Left<JsonObject, JsonObject>(new JsonObject() .put("global", new fr.wseduc.webutils.collections.JsonArray() .add(res.body().getString("message", ""))))); } } })); } catch (JsonProcessingException e) { handler.handle(new Either.Left<JsonObject, JsonObject>(new JsonObject().put("global", new fr.wseduc.webutils.collections.JsonArray().add("unexpected.error")))); log.error(e.getMessage(), e); } }
From source file:org.entcore.directory.services.impl.DefaultImportService.java
License:Open Source License
@Override public void doImport(ImportInfos importInfos, final Handler<Either<JsonObject, JsonObject>> handler) { try {//from ww w . j a v a 2 s . c o m JsonObject action = new JsonObject(mapper.writeValueAsString(importInfos)).put("action", "import"); eb.send("entcore.feeder", action, new DeliveryOptions().setSendTimeout(TIMEOUT), handlerToAsyncHandler(new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { if ("ok".equals(event.body().getString("status"))) { JsonObject r = event.body().getJsonObject("result", new JsonObject()); if (r.getJsonObject("errors", new JsonObject()).size() > 0) { handler.handle( new Either.Left<JsonObject, JsonObject>(r.getJsonObject("errors"))); } else { handler.handle( new Either.Right<JsonObject, JsonObject>(r.getJsonObject("ignored"))); } } else { handler.handle(new Either.Left<JsonObject, JsonObject>(new JsonObject() .put("global", new fr.wseduc.webutils.collections.JsonArray() .add(event.body().getString("message", ""))))); } } })); } catch (JsonProcessingException e) { handler.handle(new Either.Left<JsonObject, JsonObject>(new JsonObject().put("global", new fr.wseduc.webutils.collections.JsonArray().add("unexpected.error")))); log.error(e.getMessage(), e); } }
From source file:org.entcore.directory.services.impl.DefaultSchoolService.java
License:Open Source License
@Override public void blockUsers(String structureId, String profile, boolean block, Handler<JsonObject> handler) { String query = "MATCH (s:Structure {id:{structureId}})<-[:DEPENDS]-(g:ProfileGroup)<-[:IN]-(u:User) WHERE g.name ENDS WITH {profile} SET u.blocked = {blocked} RETURN COLLECT(DISTINCT u.id) as usersId"; JsonObject params = new JsonObject().put("structureId", structureId).put("profile", profile).put("blocked", block);/*ww w.j av a 2s. c o m*/ neo.execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { ; handler.handle(r.body()); } }); }
From source file:org.entcore.directory.services.impl.DefaultUserBookService.java
License:Open Source License
@Override public void update(String userId, JsonObject userBook, final Handler<Either<String, JsonObject>> result) { JsonObject u = Utils.validAndGet(userBook, UPDATE_USERBOOK_FIELDS, Collections.<String>emptyList()); if (Utils.defaultValidationError(u, result, userId)) return;// w w w .j a v a 2s . c o m // OVERRIDE AVATAR URL Optional<String> pictureId = getPictureIdForUserbook(userBook); if (pictureId.isPresent()) { String fileId = avatarFileNameFromUserId(userId, Optional.empty()); u.put("picture", "/userbook/avatar/" + fileId); } StatementsBuilder b = new StatementsBuilder(); String query = "MATCH (u:`User` { id : {id}})-[:USERBOOK]->(ub:UserBook) WITH ub.picture as oldpic,ub,u SET " + nodeSetPropertiesFromJson("ub", u); query += " RETURN oldpic,ub.picture as picture"; boolean updateUserBook = u.size() > 0; if (updateUserBook) { b.add(query, u.put("id", userId)); } String q2 = "MATCH (u:`User` { id : {id}})-[:USERBOOK]->(ub:UserBook)" + "-[:PUBLIC|PRIVE]->(h:`Hobby` { category : {category}}) " + "SET h.values = {values} "; JsonArray hobbies = userBook.getJsonArray("hobbies"); if (hobbies != null) { for (Object o : hobbies) { if (!(o instanceof JsonObject)) continue; JsonObject j = (JsonObject) o; b.add(q2, j.put("id", userId)); } } neo.executeTransaction(b.build(), null, true, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { if ("ok".equals(r.body().getString("status"))) { if (updateUserBook) { JsonArray results = r.body().getJsonArray("results", new JsonArray()); JsonArray firstStatement = results.getJsonArray(0); if (firstStatement != null && firstStatement.size() > 0) { JsonObject object = firstStatement.getJsonObject(0); String picture = object.getString("picture", ""); cacheAvatarFromUserBook(userId, pictureId, StringUtils.isEmpty(picture)) .setHandler(e -> { if (e.succeeded()) { result.handle(new Either.Right<String, JsonObject>(new JsonObject())); } else { result.handle(new Either.Left<String, JsonObject>( r.body().getString("message", "update.error"))); } }); } } else { result.handle(new Either.Right<String, JsonObject>(new JsonObject())); } } else { result.handle( new Either.Left<String, JsonObject>(r.body().getString("message", "update.error"))); } } }); }
From source file:org.entcore.directory.services.impl.UserbookRepositoryEvents.java
License:Open Source License
@Override public void deleteUsers(JsonArray users) { String query = "MATCH (u:UserBook)-[r]-(n) " + "WHERE (n:Hobby OR n:UserBook) AND NOT(u<--(:User)) " + "DETACH DELETE u, r, n"; StatementsBuilder b = new StatementsBuilder().add(query); query = "MATCH (p:UserAppConf) " + "WHERE NOT(p<--(:User)) " + "DETACH DELETE p"; b.add(query);//from w ww.jav a 2 s. c om b.add("MATCH (sb:ShareBookmark) WHERE NOT(sb<--(:User)) DELETE sb"); Neo4j.getInstance().executeTransaction(b.build(), null, true, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { if (!"ok".equals(event.body().getString("status"))) { log.error("Error deleting userbook data : " + event.body().encode()); } } }); List<String> userIds = users.stream().filter(u -> u instanceof JsonObject) .map(u -> ((JsonObject) u).getString("id")).collect(Collectors.toList()); userBookService.cleanAvatarCache(userIds, res -> { if (!res) { log.error("Error cleaning avatars for ids : " + StringUtils.join(userIds, " ")); } }); }
From source file:org.entcore.feeder.aaf.AafFeeder.java
License:Open Source License
@Override public void launch(final Importer importer, final Handler<Message<JsonObject>> handler) throws Exception { vertx.fileSystem().readFile(path + File.separator + IMPORT_DIRECTORIES_JSON, new Handler<AsyncResult<Buffer>>() { @Override/*from ww w . j a v a 2s . c o m*/ public void handle(AsyncResult<Buffer> f) { if (f.succeeded()) { final JsonArray importSubDirectories; try { importSubDirectories = new fr.wseduc.webutils.collections.JsonArray( f.result().toString()); } catch (RuntimeException e) { handler.handle(new ResultMessage().error("invalid.importDirectories.file")); log.error("Invalid importDirectories file.", e); return; } vertx.fileSystem().readDir(path, new Handler<AsyncResult<List<String>>>() { @Override public void handle(AsyncResult<List<String>> event) { if (event.succeeded()) { final List<String> importsDirs = new ArrayList<>(); for (String dir : event.result()) { final int idx = dir.lastIndexOf(File.separator); if (idx >= 0 && dir.length() > idx && importSubDirectories.contains(dir.substring(idx + 1))) { importsDirs.add(dir); } } if (importsDirs.size() < 1) { handler.handle(new ResultMessage().error("missing.subdirectories")); return; } final Handler<Message<JsonObject>>[] handlers = new Handler[importsDirs .size()]; handlers[handlers.length - 1] = new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> m) { handler.handle(m); } }; for (int i = importsDirs.size() - 2; i >= 0; i--) { final int j = i + 1; handlers[i] = new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> m) { if (m != null && "ok".equals(m.body().getString("status"))) { new StructureImportProcessing(importsDirs.get(j), vertx) .start(handlers[j]); } else { handler.handle(m); } } }; } new StructureImportProcessing(importsDirs.get(0), vertx).start(handlers[0]); } else { handler.handle(new ResultMessage().error(event.cause().getMessage())); } } }); } else { new StructureImportProcessing(path, vertx).start(handler); } } }); }
From source file:org.entcore.feeder.aaf.BaseImportProcessing.java
License:Open Source License
protected void parse(final Handler<Message<JsonObject>> handler, final ImportProcessing importProcessing) { initAcademyPrefix(path);/* ww w. j av a 2 s .c om*/ final List<String> files = vertx.fileSystem().readDirBlocking(path, getFileRegex()); final Handler[] handlers = new Handler[files.size() + 1]; handlers[handlers.length - 1] = new Handler<Void>() { @Override public void handle(Void v) { next(handler, importProcessing); } }; Collections.sort(files); for (int i = files.size() - 1; i >= 0; i--) { final int j = i; handlers[i] = new Handler<Void>() { @Override public void handle(Void v) { try { String file = files.get(j); log.info("Parsing file : " + file); importer.getReport().loadedFile(file); byte[] encoded = Files.readAllBytes(Paths.get(file)); String content = UNESCAPE_AAF.translate(new String(encoded, "UTF-8")); InputSource in = new InputSource(new StringReader(content)); AAFHandler sh = new AAFHandler(BaseImportProcessing.this); XMLReader xr = XMLReaderFactory.createXMLReader(); xr.setContentHandler(sh); xr.setEntityResolver(new EntityResolver2() { @Override public InputSource getExternalSubset(String name, String baseURI) throws SAXException, IOException { return null; } @Override public InputSource resolveEntity(String name, String publicId, String baseURI, String systemId) throws SAXException, IOException { return resolveEntity(publicId, systemId); } @Override public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { if (systemId.equals("ficAlimMENESR.dtd")) { Reader reader = new FileReader(path + File.separator + "ficAlimMENESR.dtd"); return new InputSource(reader); } else { return null; } } }); xr.parse(in); importer.persist(new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> message) { if ("ok".equals(message.body().getString("status"))) { handlers[j + 1].handle(null); } else { error(message, handler); } } }); } catch (Exception e) { error(e, handler); } catch (OutOfMemoryError err) { // badly catch Error to unlock importer log.error("OOM reading import files", err); error(new Exception("OOM"), handler); } } }; } handlers[0].handle(null); }