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

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

Introduction

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

Prototype

public JsonArray getJsonArray(int pos) 

Source Link

Document

Get the JsonArray at position pos in the array.

Usage

From source file:org.entcore.feeder.export.eliot.PorteurENTExportProcessing.java

License:Open Source License

@Override
protected void list(final Integer skip, final Integer limit, final Handler<JsonArray> handler) {
    TransactionManager.executeTransaction(new Function<TransactionHelper, Message<JsonObject>>() {
        @Override/*from w  w  w .  j  ava 2 s  . c  om*/
        public void apply(TransactionHelper value) {
            Tenant.list(attributes, skip, limit, value);
        }

        @Override
        public void handle(Message<JsonObject> result) {
            JsonArray r = result.body().getJsonArray("results");
            if ("ok".equals(result.body().getString("status")) && r != null && r.size() == 1) {
                JsonArray rs = r.getJsonArray(0);
                handler.handle(rs);
            } else {
                handler.handle(null);
            }
        }
    });
}

From source file:org.entcore.feeder.export.eliot.UserExportProcessing.java

License:Open Source License

@Override
protected void count(final Handler<Integer> handler) {
    TransactionManager.executeTransaction(new Function<TransactionHelper, Message<JsonObject>>() {
        @Override//from   ww w .j a va 2  s  . co m
        public void apply(TransactionHelper value) {
            User.count(EliotExporter.ELIOT, profiles, value);
        }

        @Override
        public void handle(Message<JsonObject> result) {
            JsonArray r = result.body().getJsonArray("results");
            if ("ok".equals(result.body().getString("status")) && r != null && r.size() == 1) {
                JsonArray rs = r.getJsonArray(0);
                if (rs != null && rs.size() == 1) {
                    JsonObject row = rs.getJsonObject(0);
                    handler.handle(row.getInteger("nb", 0));
                    return;
                }
            }
            handler.handle(null);
        }
    });
}

From source file:org.entcore.feeder.export.eliot.UserExportProcessing.java

License:Open Source License

@Override
protected void list(final Integer skip, final Integer limit, final Handler<JsonArray> handler) {
    TransactionManager.executeTransaction(new Function<TransactionHelper, Message<JsonObject>>() {
        @Override/*from   w w  w.j ava  2  s. c om*/
        public void apply(TransactionHelper value) {
            User.list(EliotExporter.ELIOT, profiles, attributes, skip, limit, value);
        }

        @Override
        public void handle(Message<JsonObject> result) {
            JsonArray r = result.body().getJsonArray("results");
            if ("ok".equals(result.body().getString("status")) && r != null && r.size() == 1) {
                JsonArray rs = r.getJsonArray(0);
                handler.handle(rs);
            } else {
                handler.handle(null);
            }
        }
    });
}

From source file:org.entcore.feeder.ManualFeeder.java

License:Open Source License

private void removeUserFromStructure(final Message<JsonObject> message, String userId, String structureId) {
    try {/*  ww  w .j  a v  a 2  s .c  om*/
        TransactionHelper tx = TransactionManager.getTransaction();
        JsonObject params = new JsonObject().put("structureId", structureId).put("userId", userId);
        final String query = "MATCH (u:User { id : {userId}})-[r:IN|COMMUNIQUE]-(cpg:ProfileGroup)-[:DEPENDS*0..1]->"
                + "(pg:ProfileGroup)-[:DEPENDS]->(s:Structure { id : {structureId}}), "
                + "pg-[:HAS_PROFILE]->(p:Profile), p<-[:HAS_PROFILE]-(dpg:DefaultProfileGroup) "
                + "CREATE UNIQUE dpg<-[:IN]-u "
                + "SET u.structures = FILTER(sId IN u.structures WHERE sId <> s.externalId), "
                + "u.classes = FILTER(cId IN u.classes WHERE NOT(cId =~ (s.externalId + '.*'))) " + "DELETE r "
                + "RETURN DISTINCT u.id as id";
        final String removeFunctions = "MATCH (u:User { id : {userId}})-[r:HAS_FUNCTION]->() "
                + "WHERE {structureId} IN r.scope "
                + "SET r.scope = FILTER(sId IN r.scope WHERE sId <> {structureId}) " + "WITH r "
                + "WHERE LENGTH(r.scope) = 0 " + "DELETE r";
        final String removeFunctionGroups = "MATCH (u:User { id : {userId}})-[r:IN|COMMUNIQUE]-(:Group)-[:DEPENDS]->(s:Structure { id : {structureId}})"
                + "DELETE r";
        tx.add(query, params);
        tx.add(removeFunctions, params);
        tx.add(removeFunctionGroups, params);
        tx.commit(new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> event) {
                final JsonArray results = event.body().getJsonArray("results");
                if ("ok".equals(event.body().getString("status")) && results != null && results.size() > 0) {
                    message.reply(event.body().put("result", results.getJsonArray(0)));
                } else {
                    message.reply(event.body());
                }
            }
        });
    } catch (TransactionException e) {
        logger.error("Error in transaction when remove user from structure", e);
        sendError(message, "transaction.error");
    }
}

From source file:org.entcore.feeder.ManualFeeder.java

License:Open Source License

private void removeUserFromClass(final Message<JsonObject> message, String userId, String classId) {
    try {// w w w . java2s .c om
        TransactionHelper tx = TransactionManager.getTransaction();

        JsonObject params = new JsonObject().put("classId", classId).put("userId", userId);
        String query = "MATCH (u:User { id : {userId}})-[r:IN|COMMUNIQUE]-(cpg:ProfileGroup)-[:DEPENDS]->"
                + "(c:Class  {id : {classId}}), cpg-[:DEPENDS]->(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile), "
                + "p<-[:HAS_PROFILE]-(dpg:DefaultProfileGroup) " + "CREATE UNIQUE dpg<-[:IN]-u "
                + "SET u.classes = FILTER(cId IN u.classes WHERE cId <> c.externalId) , u.headTeacherManual = FILTER(x IN u.headTeacherManual WHERE x <> c.externalId) "
                + "DELETE r " + "RETURN DISTINCT u.id as id";

        tx.add(query, params);

        String query2 = "MATCH (u:User { id : {userId}})-[r:IN|COMMUNIQUE]->(g:Group:HTGroup)-[:DEPENDS]->(c:Class {id : {classId}}) "
                + "DELETE r ";

        tx.add(query2, params);

        String query3 = "MATCH (u:User { id : {userId}})-[r:IN|COMMUNIQUE]->(g:Group:HTGroup)-[:DEPENDS]->(s:Structure)<-[b:BELONGS]-(c:Class {id : {classId}}) "
                + "WHERE length(u.headTeacherManual) = 0 AND (u.headTeacher IS NULL OR length(u.headTeacher) = 0) "
                + "DELETE r " + "RETURN DISTINCT u.id as id";

        tx.add(query3, params);

        tx.commit(new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> event) {
                final JsonArray results = event.body().getJsonArray("results");
                if ("ok".equals(event.body().getString("status")) && results != null && results.size() > 0) {
                    message.reply(event.body().put("result", results.getJsonArray(0)));
                } else {
                    message.reply(event.body());
                }
            }
        });
    } catch (TransactionException e) {
        logger.error("Error in transaction when remove user from structure", e);
        sendError(message, "transaction.error");
    }
}

From source file:org.entcore.feeder.timetable.AbstractTimetableImporter.java

License:Open Source License

protected void init(final Handler<AsyncResult<Void>> handler) throws TransactionException {
    importTimestamp = System.currentTimeMillis();
    final String externalIdFromUAI = "MATCH (s:Structure {UAI : {UAI}}) "
            + "return s.externalId as externalId, s.id as id, s.timetable as timetable ";
    final String tma = getTeacherMappingAttribute();
    final String getUsersByProfile = "MATCH (:Structure {UAI : {UAI}})<-[:DEPENDS]-(:ProfileGroup)<-[:IN]-(u:User) "
            + "WHERE head(u.profiles) = {profile} AND NOT(u." + tma + " IS NULL) "
            + "RETURN DISTINCT u.id as id, u." + tma
            + " as tma, head(u.profiles) as profile, u.source as source, "
            + "u.lastName as lastName, u.firstName as firstName";
    final String classesMappingQuery = "MATCH (s:Structure {UAI : {UAI}})<-[:MAPPING]-(cm:ClassesMapping) "
            + "return cm.mapping as mapping ";
    final String subjectsMappingQuery = "MATCH (s:Structure {UAI : {UAI}})<-[:SUBJECT]-(sub:Subject) return sub.code as code, sub.id as id";
    final TransactionHelper tx = TransactionManager.getTransaction();
    tx.add(getUsersByProfile, new JsonObject().put("UAI", UAI).put("profile", "Teacher"));
    tx.add(externalIdFromUAI, new JsonObject().put("UAI", UAI));
    tx.add(classesMappingQuery, new JsonObject().put("UAI", UAI));
    tx.add(subjectsMappingQuery, new JsonObject().put("UAI", UAI));
    tx.commit(new Handler<Message<JsonObject>>() {
        @Override/*from  w  w w  . j  av a2 s. c  om*/
        public void handle(Message<JsonObject> event) {
            final JsonArray res = event.body().getJsonArray("results");
            if ("ok".equals(event.body().getString("status")) && res != null && res.size() == 4) {
                try {
                    for (Object o : res.getJsonArray(0)) {
                        if (o instanceof JsonObject) {
                            final JsonObject j = (JsonObject) o;
                            teachersMapping.put(j.getString("tma"),
                                    new String[] { j.getString("id"), j.getString("source") });
                            teachersCleanNameMapping.put(
                                    Validator.sanitize(j.getString("firstName") + j.getString("lastName")),
                                    new String[] { j.getString("id"), j.getString("source") });
                        }
                    }
                    JsonArray a = res.getJsonArray(1);
                    if (a != null && a.size() == 1) {
                        structureExternalId = a.getJsonObject(0).getString("externalId");
                        structure.add(structureExternalId);
                        structureId = a.getJsonObject(0).getString("id");
                        if (!getSource().equals(a.getJsonObject(0).getString("timetable"))) {
                            handler.handle(new DefaultAsyncResult<Void>(
                                    new TransactionException("different.timetable.type")));
                            return;
                        }
                    } else {
                        handler.handle(new DefaultAsyncResult<Void>(new ValidationException("invalid.uai")));
                        return;
                    }
                    JsonArray cm = res.getJsonArray(2);
                    if (cm != null && cm.size() == 1) {
                        try {
                            final JsonObject cmn = cm.getJsonObject(0);
                            log.info(cmn.encode());
                            if (isNotEmpty(cmn.getString("mapping"))) {
                                classesMapping = new JsonObject(cmn.getString("mapping"));
                                log.info("classMapping : " + classesMapping.encodePrettily());
                            } else {
                                classesMapping = new JsonObject();
                            }
                        } catch (Exception ecm) {
                            classesMapping = new JsonObject();
                            log.error(ecm.getMessage(), ecm);
                        }
                    }
                    JsonArray subjects = res.getJsonArray(3);
                    if (subjects != null && subjects.size() > 0) {
                        for (Object o : subjects) {
                            if (o instanceof JsonObject) {
                                final JsonObject s = (JsonObject) o;
                                subjectsMapping.put(s.getString("code"), s.getString("id"));
                            }
                        }
                    }
                    txXDT = TransactionManager.getTransaction();
                    persEducNat = new PersEducNat(txXDT, report, getSource());
                    persEducNat.setMapping(
                            "dictionary/mapping/" + getSource().toLowerCase() + "/PersEducNat.json");
                    handler.handle(new DefaultAsyncResult<>((Void) null));
                } catch (Exception e) {
                    handler.handle(new DefaultAsyncResult<Void>(e));
                }
            } else {
                handler.handle(new DefaultAsyncResult<Void>(
                        new TransactionException(event.body().getString("message"))));
            }
        }
    });
}

From source file:org.entcore.feeder.timetable.AbstractTimetableImporter.java

License:Open Source License

public static void updateMergedUsers(JsonArray mergedUsers) {
    if (mergedUsers == null)
        return;/*from w ww .  j  ava 2s.  co  m*/
    long now = System.currentTimeMillis();
    for (int i = 1; i < mergedUsers.size(); i += 2) {
        final JsonArray a = mergedUsers.getJsonArray(i);
        if (a.size() > 0) {
            updateMergedUsers(a.getJsonObject(0), now);
        }
    }
}

From source file:org.entcore.feeder.timetable.AbstractTimetableImporter.java

License:Open Source License

public static void initStructure(final EventBus eb, final Message<JsonObject> message) {
    final JsonObject conf = message.body().getJsonObject("conf");
    if (conf == null) {
        message.reply(new JsonObject().put("status", "error").put("message", "invalid.conf"));
        return;//from  w ww.  j ava 2 s  .  c om
    }
    final String query = "MATCH (s:Structure {id:{structureId}}) "
            + "RETURN (NOT(HAS(s.timetable)) OR s.timetable <> {type}) as update ";
    TransactionManager.getNeo4jHelper().execute(query, conf, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(final Message<JsonObject> event) {
            final JsonArray j = event.body().getJsonArray("result");
            if ("ok".equals(event.body().getString("status")) && j != null && j.size() == 1
                    && j.getJsonObject(0).getBoolean("update", false)) {
                try {
                    TransactionHelper tx = TransactionManager.getTransaction();
                    final String q1 = "MATCH (s:Structure {id : {structureId}})<-[:DEPENDS]-(fg:FunctionalGroup) "
                            + "WHERE NOT(HAS(s.timetable)) OR s.timetable <> {type} "
                            + "OPTIONAL MATCH fg<-[:IN]-(u:User) "
                            + "RETURN fg.id as group, fg.name as groupName, collect(u.id) as users ";
                    final String q2 = "MATCH (s:Structure {id: {structureId}}) "
                            + "WHERE NOT(HAS(s.timetable)) OR s.timetable <> {type} "
                            + "SET s.timetable = {typeUpdate} " + "WITH s "
                            + "MATCH s<-[:DEPENDS]-(fg:FunctionalGroup), s<-[:SUBJECT]-(sub:Subject) "
                            + "DETACH DELETE fg, sub ";
                    final String q3 = "MATCH (s:Structure {id: {structureId}})<-[:MAPPING]-(cm:ClassesMapping) "
                            + "DETACH DELETE cm";
                    tx.add(q1, conf);
                    tx.add(q2, (isEmpty(conf.getString("type")) ? conf.putNull("typeUpdate")
                            : conf.put("typeUpdate", conf.getString("type"))));
                    tx.add(q3, conf);
                    tx.commit(new Handler<Message<JsonObject>>() {
                        @Override
                        public void handle(Message<JsonObject> res) {
                            if ("ok".equals(res.body().getString("status"))) {
                                final JsonArray r = res.body().getJsonArray("results");
                                if (r != null && r.size() == 2) {
                                    Transition.publishDeleteGroups(eb, log, r.getJsonArray(0));
                                }
                                final JsonObject matcher = new JsonObject().put("structureId",
                                        conf.getString("structureId"));
                                MongoDb.getInstance().delete(COURSES, matcher,
                                        new Handler<Message<JsonObject>>() {
                                            @Override
                                            public void handle(Message<JsonObject> mongoResult) {
                                                if (!"ok".equals(mongoResult.body().getString("status"))) {
                                                    log.error("Error deleting courses : "
                                                            + mongoResult.body().getString("message"));
                                                }
                                                message.reply(event.body());
                                            }
                                        });
                            } else {
                                message.reply(res.body());
                            }
                        }
                    });
                } catch (TransactionException e) {
                    log.error("Transaction error when init timetable structure", e);
                    message.reply(new JsonObject().put("status", "error").put("message", e.getMessage()));
                }
            } else {
                message.reply(event.body());
            }
        }
    });
}

From source file:org.entcore.feeder.utils.AAFUtil.java

License:Open Source License

private static JsonArray functionsEtabConverter(JsonArray value) {
    JsonArray res = new fr.wseduc.webutils.collections.JsonArray();
    for (Object o : value) {
        if (!(o instanceof JsonArray))
            continue;
        JsonArray a = (JsonArray) o;
        final String c = a.getString(0);
        if (c != null) {
            final String code = functionCodes.getString(c, c);
            for (Object s : a.getJsonArray(1)) {
                res.add("EtabEducNat$" + s + "$" + code);
            }/*from   www  . j a v  a 2 s  .c o  m*/
        }
    }
    return res;
}

From source file:org.entcore.feeder.utils.Report.java

License:Open Source License

private void countDiff(Optional<String> prefixAcademy, String source, final Handler<JsonObject> handler) {
    try {//from  ww  w .j a v a2  s. c  o  m
        TransactionHelper tx = TransactionManager.getTransaction();
        JsonObject params = new JsonObject().put("source", source).put("start", startTime).put("end", endTime)
                .put("startTime", new DateTime(startTime).toString())
                .put("endTime", new DateTime(endTime).toString());
        if (prefixAcademy.isPresent()) {
            params.put("prefixAcademy", prefixAcademy.get());
        }
        tx.add("MATCH (u:User {source:{source}}) "
                + "WHERE HAS(u.created) AND u.created >= {startTime} AND u.created < {endTime} "
                + (prefixAcademy.isPresent() ? " AND u.externalId STARTS WITH {prefixAcademy} " : "")//
                + "RETURN count(*) as createdCount", params);
        tx.add("MATCH (u:User {source:{source}}) "
                + "WHERE HAS(u.modified) AND u.modified >= {startTime} AND u.modified < {endTime} "
                + (prefixAcademy.isPresent() ? " AND u.externalId STARTS WITH {prefixAcademy} " : "")//
                + "RETURN count(*) as modifiedCount", params);
        tx.add("MATCH (u:User {source:{source}}) "
                + "WHERE HAS(u.disappearanceDate) AND u.disappearanceDate >= {start} AND u.disappearanceDate < {end} "
                + (prefixAcademy.isPresent() ? " AND u.externalId STARTS WITH {prefixAcademy} " : "")//
                + "RETURN count(*) as disappearanceCount", params);
        tx.commit(new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> event) {
                JsonArray results = event.body().getJsonArray("results");
                if ("ok".equals(event.body().getString("status")) && results != null && results.size() == 3) {
                    try {
                        final JsonObject result = cloneAndFilterResults(prefixAcademy);
                        int created = results.getJsonArray(0).getJsonObject(0).getInteger("createdCount");
                        int modified = results.getJsonArray(1).getJsonObject(0).getInteger("modifiedCount");
                        int disappearance = results.getJsonArray(2).getJsonObject(0)
                                .getInteger("disappearanceCount");
                        result.put("userCount", new JsonObject().put("created", created)
                                .put("modified", (modified - created)).put("disappearance", disappearance));
                        result.put("source", source);
                        result.put("startTime", new DateTime(startTime).toString());
                        result.put("endTime", new DateTime(endTime).toString());
                        result.put("loadedFiles", cloneAndFilterFiles(prefixAcademy));
                        handler.handle(result);
                        //                     persist(new Handler<Message<JsonObject>>() {
                        //                        @Override
                        //                        public void handle(Message<JsonObject> event) {
                        //                           if (!"ok".equals(event.body().getString("status"))) {
                        //                              log.error("Error persist report : " + event.body().getString("message"));
                        //                           }
                        //                        }
                        //                     });
                    } catch (RuntimeException e) {
                        log.error("Error parsing count diff response.", e);
                        handler.handle(null);
                    }
                } else {
                    log.error("Error in count diff transaction.");
                    handler.handle(null);
                }
            }
        });
    } catch (TransactionException e) {
        log.error("Exception in count diff transaction.", e);
        if (handler != null) {
            handler.handle(null);
        }
    }
}