List of usage examples for io.vertx.core.json JsonObject mergeIn
public JsonObject mergeIn(JsonObject other)
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
private void saveAndSend(final String messageId, final JsonObject message, final UserInfos user, final String parentMessageId, final String threadId, final Handler<Either<String, JsonObject>> result) { Handler<Either<String, JsonObject>> handler = new Handler<Either<String, JsonObject>>() { @Override// www .java2 s .com public void handle(Either<String, JsonObject> event) { if (event.isLeft()) { result.handle(event); return; } final String id = (messageId != null && !messageId.trim().isEmpty()) ? messageId : event.right().getValue().getString("id"); conversationService.get(id, user, new Handler<Either<String, JsonObject>>() { public void handle(Either<String, JsonObject> event) { if (event.isLeft()) { result.handle(event); return; } JsonObject msg = event.right().getValue(); JsonArray attachments = msg.getJsonArray("attachments", new fr.wseduc.webutils.collections.JsonArray()); final AtomicLong size = new AtomicLong(0l); for (Object att : attachments) { size.addAndGet(((JsonObject) att).getLong("size", 0l)); } neoConversationService.findInactives(message, size.get(), new Handler<JsonObject>() { public void handle(JsonObject userDetails) { message.mergeIn(userDetails); conversationService.send(parentMessageId, id, message, user, new Handler<Either<String, JsonObject>>() { public void handle(Either<String, JsonObject> event) { if (event.isRight()) { for (Object recipient : message.getJsonArray("allUsers", new fr.wseduc.webutils.collections.JsonArray())) { if (recipient.toString().equals(user.getUserId())) continue; updateUserQuota(recipient.toString(), size.get()); } } result.handle(event); } }); } }); } }); } }; if (messageId != null && !messageId.trim().isEmpty()) { conversationService.updateDraft(messageId, message, user, handler); } else { conversationService.saveDraft(parentMessageId, threadId, message, user, handler); } }
From source file:org.entcore.directory.controllers.ShareBookmarkController.java
License:Open Source License
@Get("/sharebookmark/:id") @SecuredAction(value = "", type = ActionType.AUTHENTICATED) public void get(HttpServerRequest request) { UserUtils.getUserInfos(eb, request, user -> { if (user != null) { final String id = request.params().get("id"); if ("all".equals(id)) { shareBookmarkService.list(user.getUserId(), arrayResponseHandler(request)); } else { shareBookmarkService.get(user.getUserId(), id, r -> { if (r.isRight()) { final JsonObject res = r.right().getValue(); JsonArray members = res.getJsonArray("members"); if (members == null || members.isEmpty()) { shareBookmarkService.delete(user.getUserId(), id, dres -> { if (dres.isLeft()) { log.error("Error deleting sharebookmark " + id + " : " + dres.left().getValue()); }//from w w w . j a v a2 s . c om }); notFound(request, "empty.sharebookmark"); return; } res.mergeIn(UserUtils.translateAndGroupVisible(members, I18n.acceptLanguage(request), true)); res.remove("members"); renderJson(request, res); } else { leftToResponse(request, r.left()); } }); } } else { badRequest(request, "invalid.user"); } }); }
From source file:org.entcore.feeder.csv.ColumnsMapper.java
License:Open Source License
public ColumnsMapper(JsonObject additionnalsMappings) { JsonObject mappings = new JsonObject().put("id", "externalId").put("externalid", "externalId") .put("idexterno", "externalId").put("nom", "lastName").put("apellido", "lastName") .put("lastname", "lastName").put("sobrenome", "lastName").put("nomeleve", "lastName") .put("nomresponsable", "lastName").put("nomdusageeleve", "username") .put("nomusageresponsable", "username").put("nomusage", "username").put("nomdusage", "username") .put("prenom", "firstName").put("nombre", "firstName").put("firstname", "firstName") .put("nome", "firstName").put("prenomeleve", "firstName").put("prenomresponsable", "firstName") .put("classe", "classes").put("clase", "classes").put("class", "classes").put("turma", "classes") .put("libelleclasse", "classes").put("classeouregroupement", "classes") .put("idenfant", "childExternalId").put("datedenaissance", "birthDate") .put("datenaissance", "birthDate").put("birthdate", "birthDate") .put("fechadenacimiento", "birthDate").put("datadenascimento", "birthDate") .put("neele", "birthDate").put("ne(e)le", "birthDate").put("childid", "childExternalId") .put("childexternalid", "childExternalId").put("idexternohijo", "childExternalId") .put("idexternofilho", "childExternalId").put("nomenfant", "childLastName") .put("prenomenfant", "childFirstName").put("classeenfant", "childClasses") .put("nomdusageenfant", "childUsername").put("nomdefamilleenfant", "childLastName") .put("nomdefamilleeleve", "childLastName").put("classesenfants", "childClasses") .put("classeseleves", "childClasses").put("presencedevanteleves", "teaches") .put("fonction", "functions").put("funcion", "functions").put("function", "functions") .put("funcao", "functions").put("niveau", "level").put("regime", "accommodation") .put("filiere", "sector").put("cycle", "sector").put("mef", "module") .put("libellemef", "moduleName").put("boursier", "scholarshipHolder").put("transport", "transport") .put("statut", "status").put("codematiere", "fieldOfStudy").put("matiere", "fieldOfStudyLabels") .put("persreleleve", "relative").put("civilite", "title").put("civiliteresponsable", "title") .put("telephone", "homePhone").put("telefono", "homePhone").put("phone", "homePhone") .put("telefone", "homePhone").put("telephonedomicile", "homePhone") .put("telephonetravail", "workPhone").put("telefonotrabajo", "workPhone") .put("phonework", "workPhone").put("telefonetrabalho", "workPhone") .put("telephoneportable", "mobile").put("adresse", "address").put("adresse1", "address") .put("adresseresponsable", "address").put("direccion", "address").put("address", "address") .put("endereco", "address").put("adresse2", "address2").put("cp", "zipCode") .put("cpresponsable", "zipCode").put("codigopostal", "zipCode").put("postcode", "zipCode") .put("cp1", "zipCode").put("cp2", "zipCode2").put("ville", "city").put("communeresponsable", "city") .put("commune", "city").put("commune1", "city").put("commune2", "city2").put("ciudad", "city") .put("city", "city").put("cidade", "city").put("pays", "country").put("pais", "country") .put("country", "country").put("pays1", "country").put("pays2", "country2") .put("discipline", "classCategories").put("materia", "classCategories") .put("matiereenseignee", "subjectTaught").put("email", "email").put("correoelectronico", "email") .put("courriel", "email").put("professeurprincipal", "headTeacher").put("sexe", "gender") .put("attestationfournie", "ignore").put("autorisationsassociations", "ignore") .put("autorisationassociations", "ignore").put("autorisationsphotos", "ignore") .put("autorisationphoto", "ignore").put("decisiondepassage", "ignore").put("directeur", "ignore") .put("ine", "ine").put("identifiantclasse", "ignore").put("dateinscription", "ignore") .put("deuxiemeprenom", "ignore").put("troisiemeprenom", "ignore").put("communenaissance", "ignore") .put("deptnaissance", "ignore").put("paysnaissance", "ignore").put("etat", "ignore") .put("intervenant", "ignore").put("regroupement(s)", "ignore").put("dispositif(s)", "ignore") .put("", "ignore"); mappings.mergeIn(additionnalsMappings); namesMapping = mappings.getMap();/* w ww . j a v a 2s . c o m*/ relativeMapping = mappings.copy().put("prenomeleve", "childFirstName") .put("nomdusageeleve", "childUsername").getMap(); }
From source file:org.entcore.feeder.dictionary.users.PersEducNat.java
License:Open Source License
public void createOrUpdatePersonnel(JsonObject object, String profileExternalId, JsonArray structuresByFunctions, String[][] linkClasses, String[][] linkGroups, boolean nodeQueries, boolean relationshipQueries) { final String error = personnelValidator.validate(object); if (error != null) { if (object.getJsonArray("profiles") != null && object.getJsonArray("profiles").size() == 1) { report.addIgnored(object.getJsonArray("profiles").getString(0), error, object); } else {//from www.ja va 2s .co m report.addIgnored("Personnel", error, object); } log.warn(error); } else { if (nodeQueries) { object.put("source", currentSource); if (userImportedExternalId != null) { userImportedExternalId.add(object.getString("externalId")); } StringBuilder sb = new StringBuilder(); JsonObject params; sb.append("MERGE (u:`User` { externalId : {externalId}}) "); sb.append("ON CREATE SET u.id = {id}, u.login = {login}, u.activationCode = {activationCode}, "); sb.append("u.displayName = {displayName}, u.created = {created} "); sb.append("WITH u "); if (!EDTImporter.EDT.equals(currentSource)) { sb.append("WHERE u.checksum IS NULL OR u.checksum <> {checksum} "); } sb.append("SET ").append(Neo4jUtils.nodeSetPropertiesFromJson("u", object, "id", "externalId", "login", "activationCode", "displayName", "email", "created")); if (EDTImporter.EDT.equals(currentSource)) { sb.append("RETURN u.id as id, u.IDPN as IDPN, head(u.profiles) as profile"); } params = object; transactionHelper.add(sb.toString(), params); checkUpdateEmail(object); } if (relationshipQueries) { final String externalId = object.getString("externalId"); JsonArray structures = getMappingStructures(object.getJsonArray("structures")); if (externalId != null && structures != null && structures.size() > 0) { String query; JsonObject p = new JsonObject().put("userExternalId", externalId); if (structures.size() == 1) { query = "MATCH (s:Structure {externalId : {structureAdmin}}), (u:User {externalId : {userExternalId}}) " + "MERGE u-[:ADMINISTRATIVE_ATTACHMENT]->s "; p.put("structureAdmin", structures.getString(0)); } else { query = "MATCH (s:Structure), (u:User {externalId : {userExternalId}}) " + "WHERE s.externalId IN {structuresAdmin} " + "MERGE u-[:ADMINISTRATIVE_ATTACHMENT]->s "; p.put("structuresAdmin", structures); } transactionHelper.add(query, p); } if (externalId != null && structuresByFunctions != null && structuresByFunctions.size() > 0) { String query; structuresByFunctions = getMappingStructures(structuresByFunctions); JsonObject p = new JsonObject().put("userExternalId", externalId); if (structuresByFunctions.size() == 1) { query = "MATCH (s:Structure {externalId : {structureAdmin}})<-[:DEPENDS]-(g:ProfileGroup)-[:HAS_PROFILE]->(p:Profile {externalId : {profileExternalId}}), " + "(u:User { externalId : {userExternalId}}) " + "WHERE NOT(HAS(u.mergedWith)) " + "MERGE u-[:IN]->g"; p.put("structureAdmin", structuresByFunctions.getString(0)).put("profileExternalId", profileExternalId); } else { query = "MATCH (s:Structure)<-[:DEPENDS]-(g:ProfileGroup)-[:HAS_PROFILE]->(p:Profile), " + "(u:User { externalId : {userExternalId}}) " + "WHERE s.externalId IN {structuresAdmin} AND NOT(HAS(u.mergedWith)) " + "AND p.externalId = {profileExternalId} " + "MERGE u-[:IN]->g "; p.put("structuresAdmin", structuresByFunctions).put("profileExternalId", profileExternalId); } transactionHelper.add(query, p); String qs = "MATCH (:User {externalId : {userExternalId}})-[r:IN|COMMUNIQUE]-(:Group)-[:DEPENDS]->(s:Structure) " + "WHERE NOT(s.externalId IN {structures}) AND (NOT(HAS(r.source)) OR r.source = {source}) " + "DELETE r"; JsonObject ps = new JsonObject().put("userExternalId", externalId).put("source", currentSource) .put("structures", structuresByFunctions); transactionHelper.add(qs, ps); final String daa = "MATCH (u:User {externalId : {userExternalId}})-[r:ADMINISTRATIVE_ATTACHMENT]->(s:Structure) " + "WHERE NOT(s.externalId IN {structures}) AND (NOT(HAS(r.source)) OR r.source = {source}) " + "DELETE r"; transactionHelper.add(daa, ps.copy().put("structures", getOrElse(structures, new JsonArray()))); } final JsonObject fosm = new JsonObject(); final JsonArray classes = new fr.wseduc.webutils.collections.JsonArray(); if (externalId != null && linkClasses != null) { final JsonObject fcm = new JsonObject(); for (String[] structClass : linkClasses) { if (structClass != null && structClass[0] != null && structClass[1] != null) { classes.add(structClass[1]); if (structClass.length > 2 && isNotEmpty(structClass[2])) { JsonArray fClasses = fcm.getJsonArray(structClass[2]); if (fClasses == null) { fClasses = new fr.wseduc.webutils.collections.JsonArray(); fcm.put(structClass[2], fClasses); } fClasses.add(structClass[1]); } } } String query = "MATCH (c:Class)<-[:DEPENDS]-(g:ProfileGroup)" + "-[:DEPENDS]->(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile {externalId : {profileExternalId}}), " + "(u:User { externalId : {userExternalId}}) " + "WHERE c.externalId IN {classes} AND NOT(HAS(u.mergedWith)) " + "MERGE u-[:IN]->g"; JsonObject p0 = new JsonObject().put("userExternalId", externalId) .put("profileExternalId", profileExternalId).put("classes", classes); transactionHelper.add(query, p0); JsonObject p = new JsonObject().put("userExternalId", externalId).put("source", currentSource) .put("classes", classes); fosm.mergeIn(fcm); for (String fos : fcm.fieldNames()) { String q2 = "MATCH (u:User {externalId : {userExternalId}}), (f:FieldOfStudy {externalId:{feId}}) " + "MERGE u-[r:TEACHES_FOS]->f " + "SET r.classes = {classes} "; transactionHelper.add(q2, p.copy().put("classes", fcm.getJsonArray(fos)).put("feId", fos)); } } if (externalId != null) { String q = "MATCH (:User {externalId : {userExternalId}})-[r:IN|COMMUNIQUE]-(:Group)-[:DEPENDS]->(c:Class) " + "WHERE NOT(c.externalId IN {classes}) AND (NOT(HAS(r.source)) OR r.source = {source}) " + "DELETE r"; JsonObject p = new JsonObject().put("userExternalId", externalId).put("source", currentSource) .put("classes", classes); transactionHelper.add(q, p); } final JsonArray groups = new fr.wseduc.webutils.collections.JsonArray(); final JsonObject fgm = new JsonObject(); if (externalId != null && linkGroups != null) { for (String[] structGroup : linkGroups) { if (structGroup != null && structGroup[0] != null && structGroup[1] != null) { groups.add(structGroup[1]); if (structGroup.length > 2 && isNotEmpty(structGroup[2])) { JsonArray fGroups = fgm.getJsonArray(structGroup[2]); if (fGroups == null) { fGroups = new fr.wseduc.webutils.collections.JsonArray(); fgm.put(structGroup[2], fGroups); } fGroups.add(structGroup[1]); } } } String query = "MATCH (g:Group), (u:User {externalId : {userExternalId}}) " + "WHERE (g:FunctionalGroup OR g:FunctionGroup OR g:HTGroup) AND g.externalId IN {groups} " + "MERGE u-[:IN]->g"; JsonObject p = new JsonObject().put("userExternalId", externalId).put("groups", groups); transactionHelper.add(query, p); } if (externalId != null) { final String qdfg = "MATCH (:User {externalId : {userExternalId}})-[r:IN|COMMUNIQUE]-(g:Group) " + "WHERE (g:FunctionalGroup OR g:FunctionGroup OR g:HTGroup) AND " + "NOT(g.externalId IN {groups}) AND (NOT(HAS(r.source)) OR r.source = {source}) " + "DELETE r"; final JsonObject pdfg = new JsonObject().put("userExternalId", externalId) .put("source", currentSource).put("groups", groups); transactionHelper.add(qdfg, pdfg); fosm.mergeIn(fgm); final String deleteOldFoslg = "MATCH (u:User {externalId : {userExternalId}})-[r:TEACHES_FOS]->(f:FieldOfStudy) " + "WHERE NOT(f.externalId IN {fos}) AND (NOT(HAS(r.source)) OR r.source = {source}) " + "DELETE r"; transactionHelper.add(deleteOldFoslg, pdfg.copy().put("fos", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(fosm.fieldNames())))); for (String fos : fgm.fieldNames()) { String q2 = "MATCH (u:User {externalId : {userExternalId}}), (f:FieldOfStudy {externalId:{feId}}) " + "MERGE u-[r:TEACHES_FOS]->f " + "SET r.groups = {groups} "; transactionHelper.add(q2, pdfg.copy().put("groups", fgm.getJsonArray(fos)).put("feId", fos)); } } } } }
From source file:org.entcore.feeder.utils.Validator.java
License:Open Source License
public String modifiableValidate(JsonObject object) { if (object == null) { return "Null object."; }/*from w ww . java 2 s . c om*/ final Set<String> attributes = new HashSet<>(object.fieldNames()); JsonObject generatedAttributes = null; for (String attr : attributes) { JsonObject v = validate.getJsonObject(attr); if (v == null || !modifiable.contains(attr)) { object.remove(attr); } else { Object value = object.getValue(attr); String validator = v.getString("validator"); String type = v.getString("type", ""); String err; switch (type) { case "string": if (!required.contains(attr) && (value == null || (value instanceof String && ((String) value).isEmpty()))) { err = null; } else { err = validString(attr, value, validator); } break; case "array-string": if (!required.contains(attr) && (value == null || (value instanceof JsonArray && ((JsonArray) value).size() == 0))) { err = null; } else { err = validStringArray(attr, value, validator); } break; case "boolean": err = validBoolean(attr, value); break; case "login-alias": err = validLoginAlias(attr, value, validator); break; default: err = "Missing type validator: " + type; } if (err != null) { return err; } if (value != null && generate.containsKey(attr)) { JsonObject g = generate.getJsonObject(attr); if (g != null && "displayName".equals(g.getString("generator"))) { if (generatedAttributes == null) { generatedAttributes = new JsonObject(); } generatedAttributes.put(attr + SEARCH_FIELD, removeAccents(value.toString()).toLowerCase()); } } } } if (generatedAttributes != null) { object.mergeIn(generatedAttributes); } JsonObject g = generate.getJsonObject("modified"); if (g != null) { nowDate("modified", object); } return (object.size() > 0) ? null : "Empty object."; }
From source file:org.entcore.timeline.controllers.TimelineController.java
License:Open Source License
@Get("/notifications-defaults") @SecuredAction("timeline.external.notifications") public void mixinConfig(final HttpServerRequest request) { configService.list(new Handler<Either<String, JsonArray>>() { public void handle(Either<String, JsonArray> event) { if (event.isLeft()) { badRequest(request);/*from w w w.ja v a 2 s . com*/ return; } JsonArray admcDefaults = event.right().getValue(); JsonArray reply = new fr.wseduc.webutils.collections.JsonArray(); for (String key : registeredNotifications.keySet()) { JsonObject notif = new JsonObject(registeredNotifications.get(key)).put("key", key); notif.remove("template"); for (Object admcDefaultObj : admcDefaults) { JsonObject admcDefault = (JsonObject) admcDefaultObj; if (admcDefault.getString("key", "").equals(key)) { notif.mergeIn(admcDefault); notif.remove("_id"); break; } } reply.add(notif); } renderJson(request, reply); } }); }
From source file:org.entcore.timeline.services.impl.DefaultTimelineMailerService.java
License:Open Source License
@Override public void translateTimeline(JsonArray i18nKeys, String domain, String language, Handler<JsonArray> handler) { String i18n = eventsI18n.get(language.split(",")[0].split("-")[0]); final JsonObject timelineI18n; if (i18n == null) { timelineI18n = new JsonObject(); } else {// w ww . ja va2s .co m timelineI18n = new JsonObject("{" + i18n.substring(0, i18n.length() - 1) + "}"); } timelineI18n.mergeIn(I18n.getInstance().load(language, domain)); JsonArray translations = new fr.wseduc.webutils.collections.JsonArray(); for (Object keyObj : i18nKeys) { String key = (String) keyObj; translations.add(timelineI18n.getString(key, key)); } handler.handle(translations); }