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

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

Introduction

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

Prototype

public JsonObject getJsonObject(int pos) 

Source Link

Document

Get the JsonObject at position pos in the array.

Usage

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//  www  .j ava 2 s .c o  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.ManualFeeder.java

License:Open Source License

public void deleteUser(final Message<JsonObject> message) {
    final JsonArray users = message.body().getJsonArray("users");
    if (users == null || users.size() == 0) {
        sendError(message, "Missing users.");
        return;/*from   ww  w . j a  va2 s . c  om*/
    }
    String query = "MATCH (u:User)"
            + "WHERE u.id IN {users} AND (u.source IN ['MANUAL', 'CSV', 'CLASS_PARAM', 'BE1D'] OR HAS(u.disappearanceDate)) "
            + "return count(*) as count ";
    neo4j.execute(query, new JsonObject().put("users", users), new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            JsonArray res = event.body().getJsonArray("result");
            if ("ok".equals(event.body().getString("status")) && res != null && res.size() == 1) {
                JsonObject j = res.getJsonObject(0);
                if (users.size() == j.getInteger("count", 0)) {
                    executeTransaction(message, new VoidFunction<TransactionHelper>() {
                        @Override
                        public void apply(TransactionHelper tx) {
                            for (Object o : users) {
                                User.backupRelationship(o.toString(), tx);
                                User.preDelete(o.toString(), tx);
                            }
                        }
                    });
                } else {
                    sendError(message, "unauthorized.user");
                }
            } else {
                message.reply(event.body());
            }
        }
    });
}

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

License:Open Source License

public void addUserFunction(final Message<JsonObject> message) {
    final String userId = getMandatoryString("userId", message);
    final String function = message.body().getString("function");
    if (userId == null || function == null)
        return;/*www.j a v  a2 s  .  c om*/
    final JsonArray scope = message.body().getJsonArray("scope");
    String inherit = message.body().getString("inherit", "");
    if (scope != null && ("s".equals(inherit) || "sc".equals(inherit))) {
        String query;
        if ("sc".equals(inherit)) {
            query = "MATCH (s:Structure)<-[:HAS_ATTACHMENT*0..]-(:Structure)<-[:BELONGS*0..1]-(scope) "
                    + "WHERE s.id IN {scope} " + "RETURN COLLECT(scope.id) as ids ";
        } else {
            query = "MATCH (s:Structure)<-[:HAS_ATTACHMENT*0..]-(scope:Structure) " + "WHERE s.id IN {scope} "
                    + "RETURN COLLECT(scope.id) as ids ";
        }
        neo4j.execute(query, new JsonObject().put("scope", scope), new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> event) {
                JsonArray result = event.body().getJsonArray("result");
                if ("ok".equals(event.body().getString("status")) && result != null && result.size() == 1) {
                    final JsonArray s = result.getJsonObject(0).getJsonArray("ids");
                    executeTransaction(message, new VoidFunction<TransactionHelper>() {
                        @Override
                        public void apply(TransactionHelper tx) {
                            User.addFunction(userId, function, s, tx);
                        }
                    });
                } else {
                    sendError(message, "invalid.scope");
                }
            }
        });
    } else {
        executeTransaction(message, new VoidFunction<TransactionHelper>() {
            @Override
            public void apply(TransactionHelper tx) {
                User.addFunction(userId, function, scope, tx);
            }
        });
    }
}

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 ww w  .  j a v 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;// w  w w .j a v  a  2  s  .  c o  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 transition(final String structureExternalId) {
    if (isNotEmpty(structureExternalId)) {
        final String query = "MATCH (s:Structure {externalId: {externalId}}) RETURN s.id as structureId";
        final JsonObject params = new JsonObject().put("externalId", structureExternalId);
        TransactionManager.getNeo4jHelper().execute(query, params, new Handler<Message<JsonObject>>() {
            @Override/*from www.jav  a 2  s. c  om*/
            public void handle(Message<JsonObject> event) {
                final JsonArray res = event.body().getJsonArray("result");
                if ("ok".equals(event.body().getString("status")) && res != null && res.size() > 0) {
                    transitionDeleteCourses(res.getJsonObject(0));
                    transitionDeleteSubjectsAndMapping(structureExternalId);
                }
            }
        });
    } else {
        transitionDeleteCourses(new JsonObject());
        transitionDeleteSubjectsAndMapping(structureExternalId);
    }
}

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   ww w .  j  a v a2 s  .c o  m
    }
    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.timetable.edt.EDTImporter.java

License:Open Source License

private void userExternalId(final Handler<Void> handler) {
    if (!userImportedPronoteId.isEmpty()) {
        final String query = "MATCH (u:User) where u.IDPN IN {pronoteIds} RETURN COLLECT(u.externalId) as externalIds";
        TransactionManager.getNeo4jHelper().execute(query,
                new JsonObject().put("pronoteIds",
                        new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(userImportedPronoteId))),
                new Handler<Message<JsonObject>>() {
                    @Override//from  w  ww .  java 2  s. c om
                    public void handle(Message<JsonObject> event) {
                        JsonArray res = event.body().getJsonArray("result");
                        if ("ok".equals(event.body().getString("status")) && res.size() == 1) {
                            JsonArray r = res.getJsonObject(0).getJsonArray("externalIds");
                            if (r != null) {
                                userImportedExternalId.addAll(r.getList());
                            }
                        }
                        handler.handle(null);
                    }
                });
    } else {
        handler.handle(null);
    }
}

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

License:Open Source License

protected static void initLogins(Neo4j neo4j, final long startInit, final boolean remove) {
    String query = "MATCH (u:User) RETURN COLLECT(DISTINCT u.login) as logins, COLLECT(DISTINCT u.loginAlias) as loginAliases";
    neo4j.execute(query, new JsonObject(), new Handler<Message<JsonObject>>() {
        @Override//  w ww. j  ava 2s  . co  m
        public void handle(Message<JsonObject> message) {
            JsonArray r = message.body().getJsonArray("result");
            if ("ok".equals(message.body().getString("status")) && r != null && r.size() == 1) {
                JsonArray l = (r.getJsonObject(0)).getJsonArray("logins");
                JsonArray aliases = (r.getJsonObject(0)).getJsonArray("loginAliases");

                for (Object alias : aliases) {
                    l.add(alias);
                }

                if (l != null) {
                    final Set<Object> tmp = new HashSet<>(l.getList());
                    if (remove) {
                        for (Object key : logins.keySet()) {
                            if (!tmp.contains(key)) {
                                logins.remove(key);
                            } else {
                                tmp.remove(key);
                            }
                        }
                        putLogin(tmp);
                    } else {
                        putLogin(tmp);
                    }
                }
            }
        }

        protected void putLogin(Set<Object> tmp) {
            for (Object o : tmp) {
                logins.putIfAbsent(o, "");
            }
            log.info("Init delay : " + (System.currentTimeMillis() - startInit));
        }
    });
}

From source file:org.entcore.infra.cron.HardBounceTask.java

License:Open Source License

@Override
public void handle(Long event) {
    log.info("Start hard bounce task.");
    log.debug(emailSender.getClass().getName());
    Calendar c = Calendar.getInstance();
    c.add(Calendar.DATE, relativeDay);
    emailSender.hardBounces(c.getTime(), new Handler<Either<String, List<Bounce>>>() {
        @Override//from   w  ww  .  java  2 s.  c o m
        public void handle(Either<String, List<Bounce>> r) {
            if (r.isRight()) {
                Set<String> emails = new HashSet<>();
                for (Bounce b : r.right().getValue()) {
                    if (Utils.isNotEmpty(b.getEmail())) {
                        if (emails.add(b.getEmail())) {
                            invalidEmails.put(b.getEmail(), "", new Handler<AsyncResult<Void>>() {
                                @Override
                                public void handle(AsyncResult<Void> event) {
                                    if (event.failed()) {
                                        log.error("Error adding invalid email in map.", event.cause());
                                    }
                                }
                            });
                        }
                    }
                }
                if (emails.isEmpty()) {
                    return;
                }

                JsonObject q = new JsonObject().put("type", PLATFORM_ITEM_TYPE);
                JsonObject modifier = new JsonObject().put("$addToSet",
                        new JsonObject().put("invalid-emails", new JsonObject().put("$each",
                                new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(emails)))));
                MongoDb.getInstance().update(PLATEFORM_COLLECTION, q, modifier, true, false);

                String query = "MATCH (u:User) WHERE u.email IN {emails} REMOVE u.email RETURN collect(distinct u.id) as ids";
                JsonObject params = new JsonObject().put("emails",
                        new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(emails)));
                Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> event) {
                        if ("ok".equals(event.body().getString("status"))) {
                            JsonArray res = event.body().getJsonArray("result");
                            if (res != null && res.size() == 1 && res.getJsonObject(0) != null) {
                                notifyOnTimeline(res.getJsonObject(0).getJsonArray("ids"));
                            }
                        } else {
                            log.error(event.body().getString("message"));
                        }
                    }
                });
            } else {
                log.error(r.left().getValue());
            }
        }
    });
}