Example usage for io.vertx.core.eventbus Message reply

List of usage examples for io.vertx.core.eventbus Message reply

Introduction

In this page you can find the example usage for io.vertx.core.eventbus Message reply.

Prototype

default void reply(@Nullable Object message) 

Source Link

Document

Reply to this message.

Usage

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

License:Open Source License

public void createClass(final Message<JsonObject> message) {
    JsonObject c = getMandatoryObject("data", message);
    if (c == null)
        return;//from   www.  java2 s . c om
    String structureId = getMandatoryString("structureId", message);
    if (structureId == null)
        return;
    if (c.getString("externalId") == null || c.getString("externalId").isEmpty()) {
        c.put("externalId", structureId + "$" + c.getString("name"));
    }
    final String error = classValidator.validate(c);
    if (error != null) {
        logger.error(error);
        sendError(message, error);
    } else {
        String query = "MATCH (s:Structure { id : {structureId}}) " + "CREATE s<-[:BELONGS]-(c:Class {props}) "
                + "SET c.externalId = s.externalId + '$' + c.name " + "WITH s, c "
                + "MATCH s<-[:DEPENDS]-(g:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) "
                + "CREATE c<-[:DEPENDS]-(pg:Group:ProfileGroup {name : c.name+'-'+p.name, displayNameSearchField: {groupSearchField}})-[:DEPENDS]->g "
                + "SET pg.id = id(pg)+'-'+timestamp() " + "RETURN DISTINCT c.id as id ";
        JsonObject params = new JsonObject().put("structureId", structureId)
                .put("groupSearchField", Validator.sanitize(c.getString("name"))).put("props", c);
        neo4j.execute(query, params, new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> m) {
                message.reply(m.body());
            }
        });
    }
}

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

License:Open Source License

public void updateClass(final Message<JsonObject> message) {
    JsonObject c = getMandatoryObject("data", message);
    if (c == null)
        return;// w ww .j  ava 2 s .c om
    String classId = getMandatoryString("classId", message);
    if (classId == null)
        return;
    final String error = classValidator.modifiableValidate(c);
    if (error != null) {
        logger.error(error);
        sendError(message, error);
    } else {
        String rename = "";
        if (c.getString("name") != null) {
            rename = "WITH c " + "MATCH c<-[:DEPENDS]-(cpg:ProfileGroup)-[:DEPENDS]->"
                    + "(spg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) " + "SET cpg.name = c.name+'-'+p.name ";
        }
        String query = "MATCH (c:`Class` { id : {classId}}) " + "SET "
                + Neo4jUtils.nodeSetPropertiesFromJson("c", c) + rename + "RETURN DISTINCT c.id as id ";
        JsonObject params = c.put("classId", classId);
        neo4j.execute(query, params, new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> m) {
                message.reply(m.body());
            }
        });
    }
}

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

License:Open Source License

private void createUserInStructure(final Message<JsonObject> message, final JsonObject user, String profile,
        String structureId, JsonArray childrenIds) {
    String related = "";
    JsonObject params = new JsonObject().put("structureId", structureId).put("profile", profile).put("props",
            user);/*from   w  ww. j  a  v  a 2s.  c  om*/
    if (childrenIds != null && childrenIds.size() > 0) {
        related = "WITH u " + "MATCH (student:User) " + "WHERE student.id IN {childrenIds} "
                + "CREATE student-[:RELATED]->u "
                + "SET student.relative = coalesce(student.relative, []) + (u.externalId + '$10$1$1$0$0') ";
        params.put("childrenIds", childrenIds);
    }
    String query = "MATCH (s:Structure { id : {structureId}})<-[:DEPENDS]-"
            + "(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile { name : {profile}}) "
            + "CREATE UNIQUE pg<-[:IN]-(u:User {props}) " + "SET u.structures = [s.externalId] " + related
            + "RETURN DISTINCT u.id as id";
    neo4j.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> m) {
            message.reply(m.body());
            if ("ok".equals(m.body().getString("status"))) {
                eventStore.createAndStoreEvent(Feeder.FeederEvent.CREATE_USER.name(), (UserInfos) null,
                        new JsonObject().put("new-user", user.getString("id")));
            }
        }
    });
}

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

License:Open Source License

private void addUserInStructure(final Message<JsonObject> message, String userId, String structureId) {
    JsonObject params = new JsonObject().put("structureId", structureId).put("userId", userId);
    String query = "MATCH (u:User { id : {userId}})-[:IN]->(opg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) "
            + "WITH u, p "
            + "MATCH (s:Structure { id : {structureId}})<-[:DEPENDS]-(pg:ProfileGroup)-[:HAS_PROFILE]->p "
            + "CREATE UNIQUE pg<-[:IN {source:'MANUAL'}]-u "
            + "SET u.structures = CASE WHEN s.externalId IN u.structures THEN "
            + "u.structures ELSE coalesce(u.structures, []) + s.externalId END " + "RETURN DISTINCT u.id as id";
    neo4j.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override/*from   www  .j  a  v a2s .c om*/
        public void handle(Message<JsonObject> m) {
            message.reply(m.body());
        }
    });
}

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

License:Open Source License

private void removeUserFromStructure(final Message<JsonObject> message, String userId, String structureId) {
    try {//from  www  .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 createUserInClass(final Message<JsonObject> message, final JsonObject user, String profile,
        String classId, JsonArray childrenIds) {
    String related = "";
    JsonObject params = new JsonObject().put("classId", classId).put("profile", profile).put("props", user);
    if (childrenIds != null && childrenIds.size() > 0) {
        related = "WITH u " + "MATCH (student:User) " + "WHERE student.id IN {childrenIds} "
                + "CREATE student-[:RELATED]->u "
                + "SET student.relative = coalesce(student.relative, []) + (u.externalId + '$10$1$1$0$0') ";
        params.put("childrenIds", childrenIds);
    }//  w  ww.j  a  va2  s  .  c o m
    String query = "MATCH (s:Class { id : {classId}})<-[:DEPENDS]-(cpg:ProfileGroup)-[:DEPENDS]->"
            + "(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile { name : {profile}}), s-[:BELONGS]->(struct:Structure) "
            + "CREATE UNIQUE pg<-[:IN]-(u:User {props}), cpg<-[:IN]-u "
            + "SET u.classes = [s.externalId], u.structures = [struct.externalId] " + related
            + "RETURN DISTINCT u.id as id";
    neo4j.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> m) {
            message.reply(m.body());
            if ("ok".equals(m.body().getString("status"))) {
                eventStore.createAndStoreEvent(Feeder.FeederEvent.CREATE_USER.name(), (UserInfos) null,
                        new JsonObject().put("new-user", user.getString("id")));
            }
        }
    });

}

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

License:Open Source License

private void addUserInClass(final Message<JsonObject> message, String userId, String classId) {
    JsonObject params = new JsonObject().put("classId", classId).put("userId", userId);
    String query = "MATCH (u:User { id : {userId}})-[:IN]->(opg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) "
            + "WITH u, p " + "MATCH (s:Class { id : {classId}})<-[:DEPENDS]-(cpg:ProfileGroup)-[:DEPENDS]->"
            + "(pg:ProfileGroup)-[:HAS_PROFILE]->p, s-[:BELONGS]->(struct:Structure) "
            + "CREATE UNIQUE pg<-[:IN {source:'MANUAL'}]-u, cpg<-[:IN {source:'MANUAL'}]-u "
            + "SET u.classes = CASE WHEN s.externalId IN u.classes THEN "
            + "u.classes ELSE coalesce(u.classes, []) + s.externalId END, "
            + "u.structures = CASE WHEN struct.externalId IN u.structures THEN "
            + "u.structures ELSE coalesce(u.structures, []) + struct.externalId END "
            + "RETURN DISTINCT u.id as id";
    neo4j.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override//from   w w w  .j  a  v a 2s .  co  m
        public void handle(Message<JsonObject> m) {
            message.reply(m.body());
        }
    });
}

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

License:Open Source License

private void removeUserFromClass(final Message<JsonObject> message, String userId, String classId) {
    try {/*from  ww  w.j av a2  s  . c o  m*/
        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.ManualFeeder.java

License:Open Source License

public void updateUser(final Message<JsonObject> message) {
    final JsonObject user = getMandatoryObject("data", message);
    if (user == null)
        return;//from  www.  j  av a  2s.co  m
    final String userId = getMandatoryString("userId", message);
    if (userId == null)
        return;
    String q = "MATCH (u:User { id : {userId}})-[:IN]->(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) "
            + "RETURN DISTINCT p.name as profile ";
    neo4j.execute(q, new JsonObject().put("userId", userId), new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            JsonArray res = r.body().getJsonArray("result");
            if ("ok".equals(r.body().getString("status")) && res != null && res.size() > 0) {
                for (Object o : res) {
                    if (!(o instanceof JsonObject))
                        continue;
                    String profile = ((JsonObject) o).getString("profile");
                    Validator v = profiles.get(profile);
                    if (v == null) {
                        sendError(message, "Invalid profile : " + profile);
                        return;
                    }
                    final String error = v.modifiableValidate(user);
                    if (error != null) {
                        logger.error(error);
                        sendError(message, error);
                        return;
                    }
                }
                String query = "MATCH (u:User { id : {userId}}) " + "SET "
                        + Neo4jUtils.nodeSetPropertiesFromJson("u", user) + "RETURN DISTINCT u.id as id ";
                JsonObject params = user.put("userId", userId);
                neo4j.execute(query, params, new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> m) {
                        message.reply(m.body());
                    }
                });
            } else {
                sendError(message, "Invalid profile.");
            }
        }
    });
}

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;/* w  w  w. j  av  a 2 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());
            }
        }
    });
}