List of usage examples for io.vertx.core.eventbus Message body
@CacheReturn T 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;/*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"); } }