Example usage for io.vertx.core.json JsonObject mergeIn

List of usage examples for io.vertx.core.json JsonObject mergeIn

Introduction

In this page you can find the example usage for io.vertx.core.json JsonObject mergeIn.

Prototype

public JsonObject mergeIn(JsonObject other) 

Source Link

Document

Merge in another JSON object.

Usage

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);
}