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

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

Introduction

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

Prototype

public String getString(String key) 

Source Link

Document

Get the string value with the specified key, special cases are addressed for extended JSON types Instant , byte[] and Enum which can be converted to String.

Usage

From source file:org.entcore.feeder.dictionary.structures.Importer.java

License:Open Source License

public void createOrUpdateStudent(JsonObject object, String profileExternalId, String module,
        JsonArray fieldOfStudy, String[][] linkClasses, String[][] linkGroups, JsonArray relative,
        boolean nodeQueries, boolean relationshipQueries) {
    final String error = studentValidator.validate(object);
    if (error != null) {
        report.addIgnored("Student", error, object);
        log.warn(error);/* ww w  .  j  a v a 2 s.c  o  m*/
    } else {
        if (nodeQueries) {
            object.put("source", currentSource);
            userImportedExternalId.add(object.getString("externalId"));
            String query = "MERGE (u:`User` { externalId : {externalId}}) "
                    + "ON CREATE SET u.id = {id}, u.login = {login}, u.activationCode = {activationCode}, "
                    + "u.displayName = {displayName}, u.created = {created} " + "WITH u "
                    + "WHERE u.checksum IS NULL OR u.checksum <> {checksum} " + "SET "
                    + Neo4jUtils.nodeSetPropertiesFromJson("u", object, "id", "externalId", "login",
                            "activationCode", "displayName", "email", "created");
            transactionHelper.add(query, object);
            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}})<-[:DEPENDS]-(g:ProfileGroup)-[:HAS_PROFILE]->(p:Profile {externalId : {profileExternalId}}), "
                            + "(u:User { externalId : {userExternalId}}) " + "WHERE NOT(HAS(u.mergedWith)) "
                            + "MERGE u-[:ADMINISTRATIVE_ATTACHMENT]->s " + "WITH u, g " + "MERGE u-[:IN]->g";
                    p.put("structureAdmin", structures.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-[:ADMINISTRATIVE_ATTACHMENT]->s " + "WITH u, g " + "MERGE u-[:IN]->g";
                    p.put("structuresAdmin", structures).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", structures);
                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);
            }
            JsonArray classes = new fr.wseduc.webutils.collections.JsonArray();
            if (externalId != null && linkClasses != null) {
                for (String[] structClass : linkClasses) {
                    if (structClass != null && structClass[0] != null && structClass[1] != null) {
                        classes.add(structClass[1]);
                    }
                }
                String query = "MATCH (c:Class)<-[:DEPENDS]-(g:ProfileGroup)"
                        + "-[:DEPENDS]->(:ProfileGroup)-[:HAS_PROFILE]->(: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);
            }
            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();
            if (externalId != null && linkGroups != null) {
                for (String[] structGroup : linkGroups) {
                    if (structGroup != null && structGroup[0] != null && structGroup[1] != null) {
                        groups.add(structGroup[1]);
                    }
                }
                String query = "MATCH (g:FunctionalGroup), (u:User { externalId : {userExternalId}}) "
                        + "WHERE g.externalId IN {groups} AND NOT(HAS(u.mergedWith)) " + "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:FunctionalGroup) "
                        + "WHERE 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);
            }

            if (externalId != null && module != null) {
                String query = "MATCH (u:User {externalId:{userExternalId}}), "
                        + "(m:Module {externalId:{moduleStudent}}) " + "MERGE u-[:FOLLOW]->m";
                JsonObject p = new JsonObject().put("userExternalId", externalId).put("moduleStudent", module);
                transactionHelper.add(query, p);
            }
            if (externalId != null && fieldOfStudy != null && fieldOfStudy.size() > 0) {
                String query = "MATCH (u:User {externalId:{userExternalId}}), (f:FieldOfStudy) "
                        + "WHERE f.externalId IN {fieldOfStudyStudent} " + "MERGE u-[:COURSE]->f";
                JsonObject p = new JsonObject().put("userExternalId", externalId).put("fieldOfStudyStudent",
                        fieldOfStudy);
                transactionHelper.add(query, p);
            }
            if (externalId != null && relative != null && relative.size() > 0) {
                String query2 = "MATCH (:User {externalId:{userExternalId}})-[r:RELATED]->(p:User) "
                        + "WHERE NOT(p.externalId IN {relatives}) " + "DELETE r ";
                JsonObject p2 = new JsonObject().put("userExternalId", externalId).put("relatives", relative);
                transactionHelper.add(query2, p2);
                for (Object o : relative) {
                    if (!(o instanceof String))
                        continue;
                    String query = "MATCH (u:User {externalId:{userExternalId}}), "
                            + "(:User {externalId:{user}})-[:MERGED*0..1]->(r:User) "
                            + "WHERE NOT(HAS(r.mergedWith)) " + "MERGE u-[:RELATED]->r " + "WITH r, u "
                            + "WHERE {user} <> r.externalId AND LENGTH(FILTER(eId IN u.relative WHERE eId STARTS WITH r.externalId)) = 0 "
                            + "SET u.relative = coalesce(u.relative, []) + (r.externalId + '$10$1$1$0$0') ";
                    JsonObject p = new JsonObject().put("userExternalId", externalId).put("user", (String) o);
                    transactionHelper.add(query, p);
                }
            }
        }
    }
}

From source file:org.entcore.feeder.dictionary.structures.PostImport.java

License:Open Source License

private void wsCall(JsonObject object) {
    for (String url : object.fieldNames()) {
        final JsonArray endpoints = object.getJsonArray(url);
        if (endpoints == null || endpoints.size() < 1)
            continue;
        try {//from w  w w. jav a 2s  . c  om
            final URI uri = new URI(url);
            HttpClientOptions options = new HttpClientOptions().setDefaultHost(uri.getHost())
                    .setDefaultPort(uri.getPort()).setMaxPoolSize(16).setSsl("https".equals(uri.getScheme()))
                    .setConnectTimeout(10000).setKeepAlive(false);
            final HttpClient client = vertx.createHttpClient(options);

            final Handler[] handlers = new Handler[endpoints.size() + 1];
            handlers[handlers.length - 1] = new Handler<Void>() {
                @Override
                public void handle(Void v) {
                    client.close();
                }
            };
            for (int i = endpoints.size() - 1; i >= 0; i--) {
                final int ji = i;
                handlers[i] = new Handler<Void>() {
                    @Override
                    public void handle(Void v) {
                        final JsonObject j = endpoints.getJsonObject(ji);
                        logger.info("endpoint : " + j.encode());
                        final HttpClientRequest req = client.request(HttpMethod.valueOf(j.getString("method")),
                                j.getString("uri"), new Handler<HttpClientResponse>() {
                                    @Override
                                    public void handle(HttpClientResponse resp) {
                                        if (resp.statusCode() >= 300) {
                                            logger.warn("Endpoint " + j.encode() + " error : "
                                                    + resp.statusCode() + " " + resp.statusMessage());
                                        }
                                        handlers[ji + 1].handle(null);
                                    }
                                });
                        JsonObject headers = j.getJsonObject("headers");
                        if (headers != null && headers.size() > 0) {
                            for (String h : headers.fieldNames()) {
                                req.putHeader(h, headers.getString(h));
                            }
                        }
                        req.exceptionHandler(
                                e -> logger.error("Error in ws call post import : " + j.encode(), e));
                        if (j.getString("body") != null) {
                            req.end(j.getString("body"));
                        } else {
                            req.end();
                        }
                    }
                };
            }
            handlers[0].handle(null);
        } catch (URISyntaxException e) {
            logger.error("Invalid uri in ws call after import : " + url, e);
        }
    }
}

From source file:org.entcore.feeder.dictionary.structures.Profile.java

License:Open Source License

protected Profile(JsonObject profile) {
    this(profile.getString("externalId"), profile);
}

From source file:org.entcore.feeder.dictionary.structures.Profile.java

License:Open Source License

protected Profile(String externalId, JsonObject struct) {
    if (struct != null && externalId != null && externalId.equals(struct.getString("externalId"))) {
        this.id = struct.getString("id");
    } else {/*from   w  w  w  .  j  a v  a2s . c  o m*/
        throw new IllegalArgumentException("Invalid structure with externalId : " + externalId);
    }
    this.externalId = externalId;
    this.profile = struct;
}

From source file:org.entcore.feeder.dictionary.structures.Structure.java

License:Open Source License

public Structure(JsonObject struct) {
    this(struct.getString("externalId"), struct);
}

From source file:org.entcore.feeder.dictionary.structures.Structure.java

License:Open Source License

protected Structure(String externalId, JsonObject struct) {
    if (struct != null && externalId != null && externalId.equals(struct.getString("externalId"))) {
        this.id = struct.getString("id");
    } else {/*from  w w  w. ja v  a 2 s  .co  m*/
        throw new IllegalArgumentException("Invalid structure with externalId : " + externalId);
    }
    this.externalId = externalId;
    this.struct = struct;
}

From source file:org.entcore.feeder.dictionary.structures.Structure.java

License:Open Source License

public void update(JsonObject struct) {
    if (this.struct.equals(struct)) {
        return;//w  w  w  .j  av  a  2 s.com
    }
    String query = "MATCH (s:Structure { externalId : {externalId}}) " + "WITH s "
            + "WHERE s.checksum IS NULL OR s.checksum <> {checksum} " + "SET "
            + Neo4jUtils.nodeSetPropertiesFromJson("s", struct, "id", "externalId", "created");
    getTransaction().add(query, struct);

    if (this.struct.getString("name") != null
            && !this.struct.getString("name").equals(struct.getString("name"))) {
        String updateGroupsStructureName = "MATCH (s:Structure { externalId : {externalId}})<-[:DEPENDS]-(g:Group) "
                + "WHERE s.checksum = {checksum} and has(g.structureName) " + "SET g.structureName = {name} ";
        getTransaction().add(updateGroupsStructureName, struct);
        String updateGroupsName = "MATCH (s:Structure { externalId : {externalId}})<-[:DEPENDS]-(g:Group) "
                + "WHERE s.checksum = {checksum} and last(split(g.name, '-')) IN "
                + "['Student','Teacher','Personnel','Relative','Guest','AdminLocal','HeadTeacher', 'SCOLARITE'] "
                + "SET g.name = {name} + '-' + last(split(g.name, '-')), g.displayNameSearchField = {sanitizeName} ";
        getTransaction().add(updateGroupsName,
                struct.copy().put("sanitizeName", Validator.sanitize(struct.getString("name"))));
    }
    this.struct = struct;
}

From source file:org.entcore.feeder.dictionary.users.AbstractUser.java

License:Open Source License

public JsonObject applyMapping(JsonObject object) throws ValidationException {
    if (mapping != null) {
        final JsonObject res = new JsonObject();
        for (String attr : object.fieldNames()) {
            if (mapping.containsKey(attr)) {
                String s = object.getString(attr);
                JsonObject j = mapping.getJsonObject(attr);
                if (j == null) {
                    throw new ValidationException("Unknown attribute " + attr);
                }// w w  w .j  a  v  a  2s  .  c  o m
                // TODO implement types management
                //String type = j.getString("type");
                String attribute = j.getString("attribute");
                if ("birthDate".equals(attribute)) {
                    s = convertDate(s);
                } else if ("deprecated".equals(attribute)) {
                    continue;
                }
                res.put(attribute, s);
            }
        }
        return res;
    }
    return null;
}

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 ww  w . j  a  va  2  s  .c  om*/
            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.export.eliot.BaseExportProcessing.java

License:Open Source License

private void writeElement(XMLEventWriter writer, XMLEventFactory eventFactory, JsonObject element)
        throws XMLStreamException {
    if (element.getJsonArray("joinKey") == null && element.getString("externalId") != null) {
        element.put("joinKey",
                new fr.wseduc.webutils.collections.JsonArray().add(element.getString("externalId")));
    }//from www  .ja  v  a2s.  c  om
    writer.add(eventFactory.createStartElement("", "", "addRequest"));
    writer.add(eventFactory.createDTD("\n"));
    writer.add(eventFactory.createStartElement("", "", "operationalAttributes"));
    writer.add(eventFactory.createStartElement("", "", "attr"));
    process(writer, eventFactory);
    writer.add(eventFactory.createEndElement("", "", "attr"));
    writer.add(eventFactory.createEndElement("", "", "operationalAttributes"));
    writer.add(eventFactory.createDTD("\n"));
    writer.add(eventFactory.createStartElement("", "", "identifier"));
    writer.add(eventFactory.createStartElement("", "", "id"));
    writer.add(eventFactory.createCharacters(element.getString("externalId")));
    writer.add(eventFactory.createEndElement("", "", "id"));
    writer.add(eventFactory.createEndElement("", "", "identifier"));
    writer.add(eventFactory.createDTD("\n"));
    writer.add(eventFactory.createStartElement("", "", "attributes"));
    writer.add(eventFactory.createDTD("\n"));
    for (String attr : exportMapping.fieldNames()) {
        Object mapping = exportMapping.getValue(attr);
        Object value = element.getValue(attr);
        if (mapping instanceof JsonObject) {
            addAttribute((JsonObject) mapping, value, writer, eventFactory);
        } else {
            for (Object o : ((JsonArray) mapping)) {
                if (!(o instanceof JsonObject))
                    continue;
                addAttribute((JsonObject) o, value, writer, eventFactory);
            }
        }
    }
    writer.add(eventFactory.createEndElement("", "", "attributes"));
    writer.add(eventFactory.createDTD("\n"));
    writer.add(eventFactory.createEndElement("", "", "addRequest"));
    writer.add(eventFactory.createDTD("\n\n"));
}