List of usage examples for io.vertx.core.json JsonObject getString
public String getString(String key, String def)
From source file:org.entcore.conversation.service.impl.ConversationRepositoryEvents.java
License:Open Source License
@Override public void deleteUsers(JsonArray users) { JsonArray userIds = new fr.wseduc.webutils.collections.JsonArray(); for (Object o : users) { if (!(o instanceof JsonObject)) continue; userIds.add(((JsonObject) o).getString("id")); }//from w w w . j av a2s . co m SqlStatementsBuilder builder = new SqlStatementsBuilder(); String unusedAttachments = "WITH unusedAtts AS (" + "SELECT DISTINCT attachment_id AS id FROM conversation.usermessagesattachments uma " + "GROUP BY attachment_id " + "HAVING every(user_id IN " + Sql.listPrepared(userIds.getList()) + ") " + ") SELECT " + "CASE WHEN COUNT(id) = 0 THEN '[]' ELSE json_agg(distinct id) END AS attachmentIds " + "FROM unusedAtts u"; builder.prepared(unusedAttachments, userIds); String deleteFolder = "DELETE FROM conversation.folders f " + "WHERE f.user_id IN " + Sql.listPrepared(userIds.getList()); builder.prepared(deleteFolder, userIds); String deleteUserMessages = "DELETE FROM conversation.usermessages um " + "WHERE um.user_id IN " + Sql.listPrepared(userIds.getList()); builder.prepared(deleteUserMessages, userIds); String setFrom = "UPDATE conversation.messages " + "SET " + "\"from\" = '', " + "\"fromName\" = ?, " + "\"displayNames\" = \"displayNames\" - (? || '$' || ? || '$ $ ') " + "WHERE \"from\" = ?"; String setTO = "UPDATE conversation.messages " + "SET " + "\"to\" = \"to\" - ?, " + "\"toName\" = COALESCE(\"toName\", '[]')::jsonb || (?)::jsonb, " + "\"displayNames\" = \"displayNames\" - (? || '$' || ? || '$ $ ') " + "WHERE \"to\" @> (?)::jsonb"; String setCC = "UPDATE conversation.messages " + "SET " + "\"cc\" = \"cc\" - ?, " + "\"ccName\" = COALESCE(\"ccName\", '[]')::jsonb || (?)::jsonb, " + "\"displayNames\" = \"displayNames\" - (? || '$' || ? || '$ $ ') " + "WHERE \"cc\" @> (?)::jsonb"; for (Object o : users) { if (!(o instanceof JsonObject)) continue; JsonObject user = (JsonObject) o; JsonArray paramsToCc = new fr.wseduc.webutils.collections.JsonArray(); JsonArray paramsFrom = new fr.wseduc.webutils.collections.JsonArray(); paramsToCc.add(user.getString("id", "")); paramsToCc.add(new fr.wseduc.webutils.collections.JsonArray().add(user.getString("displayName", "")) .toString()); paramsToCc.add(user.getString("id", "")); paramsToCc.add(user.getString("displayName", "")); paramsToCc.add(new fr.wseduc.webutils.collections.JsonArray().add(user.getString("id", "")).toString()); paramsFrom.add(user.getString("displayName", "")); paramsFrom.add(user.getString("id", "")); paramsFrom.add(user.getString("displayName", "")); paramsFrom.add(user.getString("id", "")); builder.prepared(setTO, paramsToCc); builder.prepared(setCC, paramsToCc); builder.prepared(setFrom, paramsFrom); } sql.transaction(builder.build(), new DeliveryOptions().setSendTimeout(timeout), SqlResult.validResultsHandler(new Handler<Either<String, JsonArray>>() { public void handle(Either<String, JsonArray> event) { if (event.isLeft()) { log.error("Error deleting conversation data : " + event.left().getValue()); return; } JsonArray results = event.right().getValue(); JsonArray attachmentIds = results.getJsonArray(0).size() > 0 ? new fr.wseduc.webutils.collections.JsonArray( results.getJsonArray(0).getJsonObject(0).getString("attachmentIds", "[]")) : new fr.wseduc.webutils.collections.JsonArray(); for (Object attachmentObj : attachmentIds) { final String attachmentId = (String) attachmentObj; storage.removeFile(attachmentId, new Handler<JsonObject>() { @Override public void handle(JsonObject event) { if (!"ok".equals(event.getString("status"))) { log.error("[" + ConversationRepositoryEvents.class.getSimpleName() + "] Error while tying to delete attachment file (_id: {" + attachmentId + "})"); } } }); } } }, "attachmentIds")); }
From source file:org.entcore.directory.controllers.StructureController.java
License:Open Source License
@Get("/structures") @SecuredAction("structure.list.all") public void listStructures(final HttpServerRequest request) { String format = request.params().get("format"); JsonArray fields = new fr.wseduc.webutils.collections.JsonArray().add("id").add("externalId").add("name") .add("UAI").add("address").add("zipCode").add("city").add("phone").add("academy"); if ("XML".equalsIgnoreCase(format)) { structureService.list(fields, new Handler<Either<String, JsonArray>>() { @Override/* w w w . jav a2s . com*/ public void handle(Either<String, JsonArray> event) { if (event.isRight()) { JsonArray r = event.right().getValue(); Ent ent = new Ent(); for (Object o : r) { if (!(o instanceof JsonObject)) continue; JsonObject j = (JsonObject) o; Ent.Etablissement etablissement = new Ent.Etablissement(); etablissement.setEtablissementId(j.getString("UAI", "")); etablissement.setEtablissementUid(j.getString("UAI", "")); etablissement.setCodePorteur(j.getString("academy", "")); etablissement.setNomCourant(j.getString("name", "")); etablissement.setAdressePlus(j.getString("address", "")); etablissement.setCodePostal(j.getString("zipCode", "")); etablissement.setVille(j.getString("city", "")); etablissement.setTelephone(j.getString("phone", "")); etablissement.setFax(""); ent.getEtablissement().add(etablissement); } try { StringWriter response = new StringWriter(); JAXBContext context = JAXBContext.newInstance(Ent.class); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(ent, response); request.response().putHeader("content-type", "application/xml"); request.response().end(response.toString()); } catch (JAXBException e) { log.error(e.toString(), e); request.response().setStatusCode(500); request.response().end(e.getMessage()); } } else { leftToResponse(request, event.left()); } } }); } else { structureService.list(fields, arrayResponseHandler(request)); } }
From source file:org.entcore.directory.security.AddFunctionFilter.java
License:Open Source License
@Override protected void additionnalsChecks(HttpServerRequest resourceRequest, Binding binding, UserInfos user, UserInfos.Function adminLocal, final Handler<Boolean> handler) { bodyToJson(resourceRequest, new Handler<JsonObject>() { @Override/*from w ww . j av a 2 s. c o m*/ public void handle(JsonObject event) { String function = event.getString("functionCode", "").trim(); handler.handle(!function.isEmpty() && !"SUPER_ADMIN".equals(function)); } }); resourceRequest.resume(); }
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/*from www . 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)); }
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;//from w ww. j a v a 2 s. 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.feeder.csv.CsvFeeder.java
License:Open Source License
protected static String getHashMapping(JsonObject props, String c, Structure structure, long seed) { String mapping = structure.getExternalId() + props.getString("surname", "") + props.getString("lastName", "") + props.getString("firstName", "") + props.getString("email", "") + props.getString("title", "") + props.getString("homePhone", "") + props.getString("mobile", "") + c + seed;//w ww . ja v a 2s .c om try { return Hash.sha1(mapping.getBytes("UTF-8")); } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { log.error(e.getMessage(), e); } return null; }