Example usage for io.vertx.core.json JsonArray size

List of usage examples for io.vertx.core.json JsonArray size

Introduction

In this page you can find the example usage for io.vertx.core.json JsonArray size.

Prototype

public int size() 

Source Link

Document

Get the number of values in this JSON array

Usage

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

License:Open Source License

private void storeImportedEvent() {
    String countQuery = "MATCH (:User) WITH count(*) as nbUsers "
            + "MATCH (:Structure) WITH count(*) as nbStructures, nbUsers "
            + "MATCH (:Class) RETURN nbUsers, nbStructures, count(*) as nbClasses ";
    neo4j.execute(countQuery, (JsonObject) null, new Handler<Message<JsonObject>>() {
        @Override//from   w w w.  j av a  2s.co m
        public void handle(Message<JsonObject> event) {
            JsonArray res = event.body().getJsonArray("result");
            if ("ok".equals(event.body().getString("status")) && res != null && res.size() == 1) {
                eventStore.createAndStoreEvent(Feeder.FeederEvent.IMPORT.name(), (UserInfos) null,
                        res.getJsonObject(0));
            } else {
                logger.error(event.body().getString("message"));
            }
        }
    });
}

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

License:Open Source License

private void applyComRules(final Handler<Void> handler) {
    if (config.getBoolean("apply-communication-rules", false)) {
        String q = "MATCH (s:Structure) return COLLECT(s.id) as ids";
        neo4j.execute(q, new JsonObject(), new Handler<Message<JsonObject>>() {
            @Override//w ww .j  av a 2s . c  o  m
            public void handle(Message<JsonObject> message) {
                JsonArray ids = message.body().getJsonArray("result",
                        new fr.wseduc.webutils.collections.JsonArray());
                if ("ok".equals(message.body().getString("status")) && ids != null && ids.size() == 1) {
                    JsonObject j = new JsonObject().put("action", "initAndApplyDefaultCommunicationRules")
                            .put("schoolIds", (ids.getJsonObject(0)).getJsonArray("ids",
                                    new fr.wseduc.webutils.collections.JsonArray()));
                    eb.send("wse.communication", j, new DeliveryOptions().setSendTimeout(3600 * 1000l),
                            handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
                                @Override
                                public void handle(Message<JsonObject> event) {
                                    if (!"ok".equals(event.body().getString("status"))) {
                                        logger.error("Init rules error : " + event.body().getString("message"));
                                    } else {
                                        logger.info("Communication rules applied.");
                                    }
                                    handler.handle(null);
                                }
                            }));
                } else {
                    logger.error(message.body().getString("message"));
                    handler.handle(null);
                }
            }
        });
    } else {
        handler.handle(null);
    }
}

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

License:Open Source License

public void addAttachment() {
    JsonArray functionalAttachment = struct.getJsonArray("functionalAttachment");
    if (functionalAttachment != null && functionalAttachment.size() > 0
            && !externalId.equals(functionalAttachment.getString(0))) {
        JsonObject params = new JsonObject().put("externalId", externalId);
        String query;//ww  w  . ja  va2 s  .co m
        if (functionalAttachment.size() == 1) {
            query = "MATCH (s:Structure { externalId : {externalId}}), "
                    + "(ps:Structure { externalId : {functionalAttachment}}) "
                    + "CREATE UNIQUE s-[:HAS_ATTACHMENT]->ps";
            params.put("functionalAttachment", functionalAttachment.getString(0));
        } else {
            query = "MATCH (s:Structure { externalId : {externalId}}), (ps:Structure) "
                    + "WHERE ps.externalId IN {functionalAttachment} "
                    + "CREATE UNIQUE s-[:HAS_ATTACHMENT]->ps";
            params.put("functionalAttachment", functionalAttachment);
        }
        getTransaction().add(query, params);
    }
}

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

License:Open Source License

public void transition(final Handler<Message<JsonObject>> handler) {
    final TransactionHelper tx = TransactionManager.getInstance().getTransaction("GraphDataUpdate");
    String query = "MATCH (s:Structure {id : {id}})<-[:BELONGS]-(c:Class)"
            + "<-[:DEPENDS]-(cpg:Group)<-[:IN]-(u:User) " + "OPTIONAL MATCH s<-[:DEPENDS]-(fg:FunctionalGroup) "
            + "RETURN collect(distinct u.id) as users, collect(distinct cpg.id) as profileGroups, "
            + "collect(distinct fg.id) as functionalGroups";
    JsonObject params = new JsonObject().put("id", id);
    tx.getNeo4j().execute(query, params, new Handler<Message<JsonObject>>() {
        @Override/*ww  w  .ja  v a  2  s  .co  m*/
        public void handle(Message<JsonObject> event) {
            JsonArray r = event.body().getJsonArray("result");
            if ("ok".equals(event.body().getString("status")) && r != null && r.size() == 1) {
                final JsonObject res = r.getJsonObject(0);
                usersInGroups(new Handler<Message<JsonObject>>() {

                    @Override
                    public void handle(Message<JsonObject> event) {
                        if ("ok".equals(event.body().getString("status"))) {
                            for (Object u : res.getJsonArray("users")) {
                                User.backupRelationship(u.toString(), tx);
                                User.transition(u.toString(), tx);
                            }
                            transitionClassGroup();
                            handler.handle(event);
                        } else {
                            log.error("Structure " + id + " transition error - useringroups.");
                            log.error(event.body().encode());
                            handler.handle(event);
                        }
                    }
                });
            } else {
                log.error("Structure " + id + " transition error.");
                log.error(event.body().encode());
                handler.handle(event);
            }
        }
    });
}

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

License:Open Source License

public static void list(String exportType, JsonArray attributes, Integer skip, Integer limit,
        TransactionHelper transactionHelper) {
    StringBuilder query = new StringBuilder("MATCH (s:Structure) ");
    JsonObject params = new JsonObject();
    if (isNotEmpty(exportType)) {
        query.append("WHERE HAS(s.exports) AND {exportType} IN s.exports ");
        params.put("exportType", exportType);
    }//from   w  ww  .  j  a va 2 s. co  m
    if (attributes != null && attributes.size() > 0) {
        query.append("RETURN DISTINCT");
        for (Object attribute : attributes) {
            query.append(" s.").append(attribute).append(" as ").append(attribute).append(",");
        }
        query.deleteCharAt(query.length() - 1);
        query.append(" ");
    } else {
        query.append("RETURN DISTINCT s ");
    }
    if (skip != null && limit != null) {
        query.append("ORDER BY externalId ASC " + "SKIP {skip} " + "LIMIT {limit} ");
        params.put("skip", skip);
        params.put("limit", limit);
    }
    transactionHelper.add(query.toString(), params);
}

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

License:Open Source License

public static void list(JsonArray attributes, Integer skip, Integer limit,
        TransactionHelper transactionHelper) {
    StringBuilder query = new StringBuilder("MATCH (t:Tenant) ");
    JsonObject params = new JsonObject();
    if (attributes != null && attributes.size() > 0) {
        query.append("RETURN DISTINCT");
        for (Object attribute : attributes) {
            query.append(" t.").append(attribute).append(" as ").append(attribute).append(",");
        }//from w  w w .j a va 2s .  com
        query.deleteCharAt(query.length() - 1);
        query.append(" ");
    } else {
        query.append("RETURN DISTINCT t ");
    }
    if (skip != null && limit != null) {
        query.append("ORDER BY externalId ASC " + "SKIP {skip} " + "LIMIT {limit} ");
        params.put("skip", skip);
        params.put("limit", limit);
    }
    transactionHelper.add(query.toString(), params);
}

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

License:Open Source License

private Handler<Message<JsonObject>> commitHandler(final Handler<Message<JsonObject>> resHandler,
        final Handler<Message<JsonObject>> handler, final JsonObject structure) {
    return new Handler<Message<JsonObject>>() {
        @Override//from ww  w.  ja  v  a  2  s .  c om
        public void handle(Message<JsonObject> m) {
            if ("ok".equals(m.body().getString("status"))) {
                try {
                    TransactionManager.getInstance().persist(GRAPH_DATA_UPDATE, false,
                            new Handler<Message<JsonObject>>() {
                                @Override
                                public void handle(Message<JsonObject> event) {
                                    JsonArray results = m.body().getJsonArray("results");
                                    if ("ok".equals(event.body().getString("status")) && results != null
                                            && results.size() == 2) {
                                        JsonArray r = getOrElse(results.getJsonArray(0),
                                                new fr.wseduc.webutils.collections.JsonArray());
                                        publishTransition(structure, results.getJsonArray(1));
                                        if (r.size() > 0) {
                                            publishDeleteGroups(vertx.eventBus(), log, r);
                                            if (handler != null) {
                                                vertx.setTimer(delayBetweenStructure, eventTimer -> next(r));
                                            } else {
                                                next(r);
                                            }
                                        } else {
                                            next(r);
                                        }
                                    } else {
                                        log.error("Transition commit error");
                                        log.error(event.body().encode());
                                        if (resHandler != null) {
                                            resHandler.handle(event);
                                        }
                                    }
                                }
                            });
                } catch (Exception e) {
                    log.error("Transition commit error");
                    log.error(e.getMessage(), e);
                    if (resHandler != null) {
                        resHandler.handle(new ResultMessage().error(e.getMessage()));
                    }
                }
            } else {
                TransactionManager.getInstance().rollback(GRAPH_DATA_UPDATE);
                log.error("Transition error");
                log.error(m.body().encode());
                if (resHandler != null) {
                    resHandler.handle(m);
                }
            }
        }

        protected void next(JsonArray r) {
            if (handler != null) {
                if (getTransaction(resHandler) == null)
                    return;
            }
            if (handler != null) {
                handler.handle(new ResultMessage());
            } else {
                resHandler.handle(new ResultMessage().put("result", r));
            }
        }
    };
}

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

License:Open Source License

public static void count(String exportType, JsonArray profiles, TransactionHelper transactionHelper) {
    String query;//from   w w w .  j a v  a 2 s  .c o  m
    JsonObject params = new JsonObject();
    if (profiles != null && profiles.size() > 0) {
        query = "MATCH (u:User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s:Structure) "
                + "WHERE HEAD(u.profiles) IN {profiles} ";
        params.put("profiles", profiles);
        if (isNotEmpty(exportType)) {
            query += "AND ";
        }
    } else {
        query = "MATCH (u:User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s:Structure) ";
        if (isNotEmpty(exportType)) {
            query += "WHERE ";
        }
    }
    if (isNotEmpty(exportType)) {
        query += "HAS(s.exports) AND {exportType} IN s.exports ";
        params.put("exportType", exportType);
    }
    query += "RETURN count(distinct u) as nb";
    transactionHelper.add(query, params);
}

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

License:Open Source License

public static void list(String exportType, JsonArray profiles, JsonArray attributes, Integer skip,
        Integer limit, TransactionHelper transactionHelper) {
    StringBuilder query = new StringBuilder();
    JsonObject params = new JsonObject();
    String filter = "";
    String unionManualGroups = "as functionalGroups ";
    if (isNotEmpty(exportType)) {
        filter = "AND HAS(s0.exports) AND {exportType} IN s0.exports ";
        params.put("exportType", exportType);
    }/* w  w  w .  j av a  2  s  .c  o m*/
    if (attributes != null && attributes.contains("manualAndFunctionalGroups")) {
        unionManualGroups = " + COLLECT(DISTINCT { structureExternalId : s.externalId, id: g.id, name: g.name }) as manualAndFunctionalGroups ";
    }
    if (profiles != null && profiles.size() > 0) {
        query.append("MATCH (u:User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s0:Structure) "
                + "WHERE HEAD(u.profiles) IN {profiles} AND NOT(HAS(u.deleteDate)) ").append(filter)
                .append("OPTIONAL MATCH u-[:IN]->(g:ManualGroup)-[:DEPENDS]->(s:Structure) ")
                .append((attributes != null && (attributes.contains("functionalGroups")
                        || attributes.contains("manualAndFunctionalGroups")))
                                ? "OPTIONAL MATCH u-[:IN]->(fg:FunctionalGroup)-[:DEPENDS]->(s1:Structure) "
                                : "")
                .append("WITH u, COLLECT(DISTINCT s.externalId + '$' + g.id + '$' + g.name) as manualGroups ")
                .append((attributes != null && (attributes.contains("functionalGroups")
                        || attributes.contains("manualAndFunctionalGroups")))
                                ? ", COLLECT(DISTINCT { structureExternalId : s1.externalId, id: fg.id, externalId: fg.externalId, name: fg.name, idrgpmt : fg.idrgpmt, "
                                        + "idgpe : fg.idgpe, code_gep : fg.code_gep, code : fg.code, code_div : fg.code_div, usedInCourses : fg.usedInCourses }) "
                                        + unionManualGroups
                                : "");
        params.put("profiles", profiles);
    } else {
        query.append(
                "MATCH (u:User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s0:Structure) WHERE NOT(HAS(u.deleteDate)) ")
                .append(filter);
    }
    if (attributes != null && attributes.size() > 0) {
        query.append("RETURN DISTINCT");
        for (Object attribute : attributes) {
            if ("manualGroups".equals(attribute) || "manualAndFunctionalGroups".equals(attribute)
                    || "functionalGroups".equals(attribute)) {
                query.append(" ").append(attribute);
            } else {
                query.append(" u.").append(attribute);
            }
            query.append(" as ").append(attribute).append(",");
        }
        query.deleteCharAt(query.length() - 1);
        query.append(" ");
    } else {
        query.append(" RETURN DISTINCT u ");
    }
    if (skip != null && limit != null) {
        query.append("ORDER BY externalId ASC " + "SKIP {skip} " + "LIMIT {limit} ");
        params.put("skip", skip);
        params.put("limit", limit);
    }
    transactionHelper.add(query.toString(), params);
}

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 {// ww w.j av a  2s . 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));
                }
            }
        }
    }
}