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

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

Introduction

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

Prototype

@CacheReturn
T body();

Source Link

Document

The body of the message.

Usage

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;/*from  w w w  .j  av a2 s.  c o  m*/
    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

public void createUser(final Message<JsonObject> message) {
    final JsonObject user = getMandatoryObject("data", message);
    if (user == null)
        return;/*from   www.ja  va  2 s. com*/
    if (user.getString("externalId") == null) {
        user.put("externalId", UUID.randomUUID().toString());
    }
    final String profile = message.body().getString("profile", "");
    if (!profiles.containsKey(profile)) {
        sendError(message, "Invalid profile : " + profile);
        return;
    }
    JsonArray childrenIds = null;
    if ("Relative".equals(profile)) {
        childrenIds = user.getJsonArray("childrenIds");
    }
    final String error = profiles.get(profile).validate(user);
    if (error != null) {
        logger.error(error);
        sendError(message, error);
        return;
    }
    user.put("source", SOURCE);
    final String structureId = message.body().getString("structureId");
    if (structureId != null && !structureId.trim().isEmpty()) {
        createUserInStructure(message, user, profile, structureId, childrenIds);
        return;
    }
    final String classId = message.body().getString("classId");
    if (classId != null && !classId.trim().isEmpty()) {
        createUserInClass(message, user, profile, classId, childrenIds);
        return;
    }
    sendError(message, "structureId or classId must be specified");
}

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);//www .  j a v a2 s.  c  o m
    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

public void addUser(final Message<JsonObject> message) {
    final String userId = getMandatoryString("userId", message);
    if (userId == null)
        return;/*from   w  ww  . ja  va  2  s. c om*/

    final String structureId = message.body().getString("structureId");
    if (structureId != null && !structureId.trim().isEmpty()) {
        addUserInStructure(message, userId, structureId);
        return;
    }
    final String classId = message.body().getString("classId");
    if (classId != null && !classId.trim().isEmpty()) {
        addUserInClass(message, userId, classId);
        return;
    }
    sendError(message, "structureId or classId must be specified");
}

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//  w ww.  ja va  2 s .c  o  m
        public void handle(Message<JsonObject> m) {
            message.reply(m.body());
        }
    });
}

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

License:Open Source License

public void removeUser(final Message<JsonObject> message) {
    final String userId = getMandatoryString("userId", message);
    if (userId == null)
        return;//from   w  w  w . j  a v a2  s. c om

    final String structureId = message.body().getString("structureId");
    if (structureId != null && !structureId.trim().isEmpty()) {
        removeUserFromStructure(message, userId, structureId);
        return;
    }
    final String classId = message.body().getString("classId");
    if (classId != null && !classId.trim().isEmpty()) {
        removeUserFromClass(message, userId, classId);
        return;
    }
    sendError(message, "structureId or classId must be specified");
}

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

License:Open Source License

private void removeUserFromStructure(final Message<JsonObject> message, String userId, String structureId) {
    try {/*w  w  w  . j  a va 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);
    }/*from   www  .j a  va2s  .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//w w  w. j  a  v a2s .c o  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 w  w  w .j a v a 2 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");
    }
}