List of usage examples for io.vertx.core.json JsonArray size
public int size()
From source file:org.entcore.feeder.dictionary.structures.PostImport.java
License:Open Source License
private void storeImportedEvent() { String countQuery = "MATCH (:User) WITH count(*) as nbUsers " + "MATCH (:Structure) WITH count(*) as nbStructures, nbUsers " + "MATCH (:Class) RETURN nbUsers, nbStructures, count(*) as nbClasses "; neo4j.execute(countQuery, (JsonObject) null, new Handler<Message<JsonObject>>() { @Override//from w w w. j av a 2s.co m public void handle(Message<JsonObject> event) { JsonArray res = event.body().getJsonArray("result"); if ("ok".equals(event.body().getString("status")) && res != null && res.size() == 1) { eventStore.createAndStoreEvent(Feeder.FeederEvent.IMPORT.name(), (UserInfos) null, res.getJsonObject(0)); } else { logger.error(event.body().getString("message")); } } }); }
From source file:org.entcore.feeder.dictionary.structures.PostImport.java
License:Open Source License
private void applyComRules(final Handler<Void> handler) { if (config.getBoolean("apply-communication-rules", false)) { String q = "MATCH (s:Structure) return COLLECT(s.id) as ids"; neo4j.execute(q, new JsonObject(), new Handler<Message<JsonObject>>() { @Override//w ww .j av a 2s . c o m public void handle(Message<JsonObject> message) { JsonArray ids = message.body().getJsonArray("result", new fr.wseduc.webutils.collections.JsonArray()); if ("ok".equals(message.body().getString("status")) && ids != null && ids.size() == 1) { JsonObject j = new JsonObject().put("action", "initAndApplyDefaultCommunicationRules") .put("schoolIds", (ids.getJsonObject(0)).getJsonArray("ids", new fr.wseduc.webutils.collections.JsonArray())); eb.send("wse.communication", j, new DeliveryOptions().setSendTimeout(3600 * 1000l), handlerToAsyncHandler(new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { if (!"ok".equals(event.body().getString("status"))) { logger.error("Init rules error : " + event.body().getString("message")); } else { logger.info("Communication rules applied."); } handler.handle(null); } })); } else { logger.error(message.body().getString("message")); handler.handle(null); } } }); } else { handler.handle(null); } }
From source file:org.entcore.feeder.dictionary.structures.Structure.java
License:Open Source License
public void addAttachment() { JsonArray functionalAttachment = struct.getJsonArray("functionalAttachment"); if (functionalAttachment != null && functionalAttachment.size() > 0 && !externalId.equals(functionalAttachment.getString(0))) { JsonObject params = new JsonObject().put("externalId", externalId); String query;//ww w . ja va2 s .co m if (functionalAttachment.size() == 1) { query = "MATCH (s:Structure { externalId : {externalId}}), " + "(ps:Structure { externalId : {functionalAttachment}}) " + "CREATE UNIQUE s-[:HAS_ATTACHMENT]->ps"; params.put("functionalAttachment", functionalAttachment.getString(0)); } else { query = "MATCH (s:Structure { externalId : {externalId}}), (ps:Structure) " + "WHERE ps.externalId IN {functionalAttachment} " + "CREATE UNIQUE s-[:HAS_ATTACHMENT]->ps"; params.put("functionalAttachment", functionalAttachment); } getTransaction().add(query, params); } }
From source file:org.entcore.feeder.dictionary.structures.Structure.java
License:Open Source License
public void transition(final Handler<Message<JsonObject>> handler) { final TransactionHelper tx = TransactionManager.getInstance().getTransaction("GraphDataUpdate"); String query = "MATCH (s:Structure {id : {id}})<-[:BELONGS]-(c:Class)" + "<-[:DEPENDS]-(cpg:Group)<-[:IN]-(u:User) " + "OPTIONAL MATCH s<-[:DEPENDS]-(fg:FunctionalGroup) " + "RETURN collect(distinct u.id) as users, collect(distinct cpg.id) as profileGroups, " + "collect(distinct fg.id) as functionalGroups"; JsonObject params = new JsonObject().put("id", id); tx.getNeo4j().execute(query, params, new Handler<Message<JsonObject>>() { @Override/*ww w .ja v a 2 s .co m*/ public void handle(Message<JsonObject> event) { JsonArray r = event.body().getJsonArray("result"); if ("ok".equals(event.body().getString("status")) && r != null && r.size() == 1) { final JsonObject res = r.getJsonObject(0); usersInGroups(new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { if ("ok".equals(event.body().getString("status"))) { for (Object u : res.getJsonArray("users")) { User.backupRelationship(u.toString(), tx); User.transition(u.toString(), tx); } transitionClassGroup(); handler.handle(event); } else { log.error("Structure " + id + " transition error - useringroups."); log.error(event.body().encode()); handler.handle(event); } } }); } else { log.error("Structure " + id + " transition error."); log.error(event.body().encode()); handler.handle(event); } } }); }
From source file:org.entcore.feeder.dictionary.structures.Structure.java
License:Open Source License
public static void list(String exportType, JsonArray attributes, Integer skip, Integer limit, TransactionHelper transactionHelper) { StringBuilder query = new StringBuilder("MATCH (s:Structure) "); JsonObject params = new JsonObject(); if (isNotEmpty(exportType)) { query.append("WHERE HAS(s.exports) AND {exportType} IN s.exports "); params.put("exportType", exportType); }//from w ww . j a va 2 s. co m if (attributes != null && attributes.size() > 0) { query.append("RETURN DISTINCT"); for (Object attribute : attributes) { query.append(" s.").append(attribute).append(" as ").append(attribute).append(","); } query.deleteCharAt(query.length() - 1); query.append(" "); } else { query.append("RETURN DISTINCT s "); } if (skip != null && limit != null) { query.append("ORDER BY externalId ASC " + "SKIP {skip} " + "LIMIT {limit} "); params.put("skip", skip); params.put("limit", limit); } transactionHelper.add(query.toString(), params); }
From source file:org.entcore.feeder.dictionary.structures.Tenant.java
License:Open Source License
public static void list(JsonArray attributes, Integer skip, Integer limit, TransactionHelper transactionHelper) { StringBuilder query = new StringBuilder("MATCH (t:Tenant) "); JsonObject params = new JsonObject(); if (attributes != null && attributes.size() > 0) { query.append("RETURN DISTINCT"); for (Object attribute : attributes) { query.append(" t.").append(attribute).append(" as ").append(attribute).append(","); }//from w w w .j a va 2s . com query.deleteCharAt(query.length() - 1); query.append(" "); } else { query.append("RETURN DISTINCT t "); } if (skip != null && limit != null) { query.append("ORDER BY externalId ASC " + "SKIP {skip} " + "LIMIT {limit} "); params.put("skip", skip); params.put("limit", limit); } transactionHelper.add(query.toString(), params); }
From source file:org.entcore.feeder.dictionary.structures.Transition.java
License:Open Source License
private Handler<Message<JsonObject>> commitHandler(final Handler<Message<JsonObject>> resHandler, final Handler<Message<JsonObject>> handler, final JsonObject structure) { return new Handler<Message<JsonObject>>() { @Override//from ww w. ja v a 2 s . c om public void handle(Message<JsonObject> m) { if ("ok".equals(m.body().getString("status"))) { try { TransactionManager.getInstance().persist(GRAPH_DATA_UPDATE, false, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { JsonArray results = m.body().getJsonArray("results"); if ("ok".equals(event.body().getString("status")) && results != null && results.size() == 2) { JsonArray r = getOrElse(results.getJsonArray(0), new fr.wseduc.webutils.collections.JsonArray()); publishTransition(structure, results.getJsonArray(1)); if (r.size() > 0) { publishDeleteGroups(vertx.eventBus(), log, r); if (handler != null) { vertx.setTimer(delayBetweenStructure, eventTimer -> next(r)); } else { next(r); } } else { next(r); } } else { log.error("Transition commit error"); log.error(event.body().encode()); if (resHandler != null) { resHandler.handle(event); } } } }); } catch (Exception e) { log.error("Transition commit error"); log.error(e.getMessage(), e); if (resHandler != null) { resHandler.handle(new ResultMessage().error(e.getMessage())); } } } else { TransactionManager.getInstance().rollback(GRAPH_DATA_UPDATE); log.error("Transition error"); log.error(m.body().encode()); if (resHandler != null) { resHandler.handle(m); } } } protected void next(JsonArray r) { if (handler != null) { if (getTransaction(resHandler) == null) return; } if (handler != null) { handler.handle(new ResultMessage()); } else { resHandler.handle(new ResultMessage().put("result", r)); } } }; }
From source file:org.entcore.feeder.dictionary.structures.User.java
License:Open Source License
public static void count(String exportType, JsonArray profiles, TransactionHelper transactionHelper) { String query;//from w w w . j a v a 2 s .c o m JsonObject params = new JsonObject(); if (profiles != null && profiles.size() > 0) { query = "MATCH (u:User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s:Structure) " + "WHERE HEAD(u.profiles) IN {profiles} "; params.put("profiles", profiles); if (isNotEmpty(exportType)) { query += "AND "; } } else { query = "MATCH (u:User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s:Structure) "; if (isNotEmpty(exportType)) { query += "WHERE "; } } if (isNotEmpty(exportType)) { query += "HAS(s.exports) AND {exportType} IN s.exports "; params.put("exportType", exportType); } query += "RETURN count(distinct u) as nb"; transactionHelper.add(query, params); }
From source file:org.entcore.feeder.dictionary.structures.User.java
License:Open Source License
public static void list(String exportType, JsonArray profiles, JsonArray attributes, Integer skip, Integer limit, TransactionHelper transactionHelper) { StringBuilder query = new StringBuilder(); JsonObject params = new JsonObject(); String filter = ""; String unionManualGroups = "as functionalGroups "; if (isNotEmpty(exportType)) { filter = "AND HAS(s0.exports) AND {exportType} IN s0.exports "; params.put("exportType", exportType); }/* w w w . j av a 2 s .c o m*/ if (attributes != null && attributes.contains("manualAndFunctionalGroups")) { unionManualGroups = " + COLLECT(DISTINCT { structureExternalId : s.externalId, id: g.id, name: g.name }) as manualAndFunctionalGroups "; } if (profiles != null && profiles.size() > 0) { query.append("MATCH (u:User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s0:Structure) " + "WHERE HEAD(u.profiles) IN {profiles} AND NOT(HAS(u.deleteDate)) ").append(filter) .append("OPTIONAL MATCH u-[:IN]->(g:ManualGroup)-[:DEPENDS]->(s:Structure) ") .append((attributes != null && (attributes.contains("functionalGroups") || attributes.contains("manualAndFunctionalGroups"))) ? "OPTIONAL MATCH u-[:IN]->(fg:FunctionalGroup)-[:DEPENDS]->(s1:Structure) " : "") .append("WITH u, COLLECT(DISTINCT s.externalId + '$' + g.id + '$' + g.name) as manualGroups ") .append((attributes != null && (attributes.contains("functionalGroups") || attributes.contains("manualAndFunctionalGroups"))) ? ", COLLECT(DISTINCT { structureExternalId : s1.externalId, id: fg.id, externalId: fg.externalId, name: fg.name, idrgpmt : fg.idrgpmt, " + "idgpe : fg.idgpe, code_gep : fg.code_gep, code : fg.code, code_div : fg.code_div, usedInCourses : fg.usedInCourses }) " + unionManualGroups : ""); params.put("profiles", profiles); } else { query.append( "MATCH (u:User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s0:Structure) WHERE NOT(HAS(u.deleteDate)) ") .append(filter); } if (attributes != null && attributes.size() > 0) { query.append("RETURN DISTINCT"); for (Object attribute : attributes) { if ("manualGroups".equals(attribute) || "manualAndFunctionalGroups".equals(attribute) || "functionalGroups".equals(attribute)) { query.append(" ").append(attribute); } else { query.append(" u.").append(attribute); } query.append(" as ").append(attribute).append(","); } query.deleteCharAt(query.length() - 1); query.append(" "); } else { query.append(" RETURN DISTINCT u "); } if (skip != null && limit != null) { query.append("ORDER BY externalId ASC " + "SKIP {skip} " + "LIMIT {limit} "); params.put("skip", skip); params.put("limit", limit); } transactionHelper.add(query.toString(), params); }
From source file:org.entcore.feeder.dictionary.users.PersEducNat.java
License:Open Source License
public void createOrUpdatePersonnel(JsonObject object, String profileExternalId, JsonArray structuresByFunctions, String[][] linkClasses, String[][] linkGroups, boolean nodeQueries, boolean relationshipQueries) { final String error = personnelValidator.validate(object); if (error != null) { if (object.getJsonArray("profiles") != null && object.getJsonArray("profiles").size() == 1) { report.addIgnored(object.getJsonArray("profiles").getString(0), error, object); } else {// ww w.j av a 2s . c om report.addIgnored("Personnel", error, object); } log.warn(error); } else { if (nodeQueries) { object.put("source", currentSource); if (userImportedExternalId != null) { userImportedExternalId.add(object.getString("externalId")); } StringBuilder sb = new StringBuilder(); JsonObject params; sb.append("MERGE (u:`User` { externalId : {externalId}}) "); sb.append("ON CREATE SET u.id = {id}, u.login = {login}, u.activationCode = {activationCode}, "); sb.append("u.displayName = {displayName}, u.created = {created} "); sb.append("WITH u "); if (!EDTImporter.EDT.equals(currentSource)) { sb.append("WHERE u.checksum IS NULL OR u.checksum <> {checksum} "); } sb.append("SET ").append(Neo4jUtils.nodeSetPropertiesFromJson("u", object, "id", "externalId", "login", "activationCode", "displayName", "email", "created")); if (EDTImporter.EDT.equals(currentSource)) { sb.append("RETURN u.id as id, u.IDPN as IDPN, head(u.profiles) as profile"); } params = object; transactionHelper.add(sb.toString(), params); checkUpdateEmail(object); } if (relationshipQueries) { final String externalId = object.getString("externalId"); JsonArray structures = getMappingStructures(object.getJsonArray("structures")); if (externalId != null && structures != null && structures.size() > 0) { String query; JsonObject p = new JsonObject().put("userExternalId", externalId); if (structures.size() == 1) { query = "MATCH (s:Structure {externalId : {structureAdmin}}), (u:User {externalId : {userExternalId}}) " + "MERGE u-[:ADMINISTRATIVE_ATTACHMENT]->s "; p.put("structureAdmin", structures.getString(0)); } else { query = "MATCH (s:Structure), (u:User {externalId : {userExternalId}}) " + "WHERE s.externalId IN {structuresAdmin} " + "MERGE u-[:ADMINISTRATIVE_ATTACHMENT]->s "; p.put("structuresAdmin", structures); } transactionHelper.add(query, p); } if (externalId != null && structuresByFunctions != null && structuresByFunctions.size() > 0) { String query; structuresByFunctions = getMappingStructures(structuresByFunctions); JsonObject p = new JsonObject().put("userExternalId", externalId); if (structuresByFunctions.size() == 1) { query = "MATCH (s:Structure {externalId : {structureAdmin}})<-[:DEPENDS]-(g:ProfileGroup)-[:HAS_PROFILE]->(p:Profile {externalId : {profileExternalId}}), " + "(u:User { externalId : {userExternalId}}) " + "WHERE NOT(HAS(u.mergedWith)) " + "MERGE u-[:IN]->g"; p.put("structureAdmin", structuresByFunctions.getString(0)).put("profileExternalId", profileExternalId); } else { query = "MATCH (s:Structure)<-[:DEPENDS]-(g:ProfileGroup)-[:HAS_PROFILE]->(p:Profile), " + "(u:User { externalId : {userExternalId}}) " + "WHERE s.externalId IN {structuresAdmin} AND NOT(HAS(u.mergedWith)) " + "AND p.externalId = {profileExternalId} " + "MERGE u-[:IN]->g "; p.put("structuresAdmin", structuresByFunctions).put("profileExternalId", profileExternalId); } transactionHelper.add(query, p); String qs = "MATCH (:User {externalId : {userExternalId}})-[r:IN|COMMUNIQUE]-(:Group)-[:DEPENDS]->(s:Structure) " + "WHERE NOT(s.externalId IN {structures}) AND (NOT(HAS(r.source)) OR r.source = {source}) " + "DELETE r"; JsonObject ps = new JsonObject().put("userExternalId", externalId).put("source", currentSource) .put("structures", structuresByFunctions); transactionHelper.add(qs, ps); final String daa = "MATCH (u:User {externalId : {userExternalId}})-[r:ADMINISTRATIVE_ATTACHMENT]->(s:Structure) " + "WHERE NOT(s.externalId IN {structures}) AND (NOT(HAS(r.source)) OR r.source = {source}) " + "DELETE r"; transactionHelper.add(daa, ps.copy().put("structures", getOrElse(structures, new JsonArray()))); } final JsonObject fosm = new JsonObject(); final JsonArray classes = new fr.wseduc.webutils.collections.JsonArray(); if (externalId != null && linkClasses != null) { final JsonObject fcm = new JsonObject(); for (String[] structClass : linkClasses) { if (structClass != null && structClass[0] != null && structClass[1] != null) { classes.add(structClass[1]); if (structClass.length > 2 && isNotEmpty(structClass[2])) { JsonArray fClasses = fcm.getJsonArray(structClass[2]); if (fClasses == null) { fClasses = new fr.wseduc.webutils.collections.JsonArray(); fcm.put(structClass[2], fClasses); } fClasses.add(structClass[1]); } } } String query = "MATCH (c:Class)<-[:DEPENDS]-(g:ProfileGroup)" + "-[:DEPENDS]->(pg:ProfileGroup)-[:HAS_PROFILE]->(p:Profile {externalId : {profileExternalId}}), " + "(u:User { externalId : {userExternalId}}) " + "WHERE c.externalId IN {classes} AND NOT(HAS(u.mergedWith)) " + "MERGE u-[:IN]->g"; JsonObject p0 = new JsonObject().put("userExternalId", externalId) .put("profileExternalId", profileExternalId).put("classes", classes); transactionHelper.add(query, p0); JsonObject p = new JsonObject().put("userExternalId", externalId).put("source", currentSource) .put("classes", classes); fosm.mergeIn(fcm); for (String fos : fcm.fieldNames()) { String q2 = "MATCH (u:User {externalId : {userExternalId}}), (f:FieldOfStudy {externalId:{feId}}) " + "MERGE u-[r:TEACHES_FOS]->f " + "SET r.classes = {classes} "; transactionHelper.add(q2, p.copy().put("classes", fcm.getJsonArray(fos)).put("feId", fos)); } } if (externalId != null) { String q = "MATCH (:User {externalId : {userExternalId}})-[r:IN|COMMUNIQUE]-(:Group)-[:DEPENDS]->(c:Class) " + "WHERE NOT(c.externalId IN {classes}) AND (NOT(HAS(r.source)) OR r.source = {source}) " + "DELETE r"; JsonObject p = new JsonObject().put("userExternalId", externalId).put("source", currentSource) .put("classes", classes); transactionHelper.add(q, p); } final JsonArray groups = new fr.wseduc.webutils.collections.JsonArray(); final JsonObject fgm = new JsonObject(); if (externalId != null && linkGroups != null) { for (String[] structGroup : linkGroups) { if (structGroup != null && structGroup[0] != null && structGroup[1] != null) { groups.add(structGroup[1]); if (structGroup.length > 2 && isNotEmpty(structGroup[2])) { JsonArray fGroups = fgm.getJsonArray(structGroup[2]); if (fGroups == null) { fGroups = new fr.wseduc.webutils.collections.JsonArray(); fgm.put(structGroup[2], fGroups); } fGroups.add(structGroup[1]); } } } String query = "MATCH (g:Group), (u:User {externalId : {userExternalId}}) " + "WHERE (g:FunctionalGroup OR g:FunctionGroup OR g:HTGroup) AND g.externalId IN {groups} " + "MERGE u-[:IN]->g"; JsonObject p = new JsonObject().put("userExternalId", externalId).put("groups", groups); transactionHelper.add(query, p); } if (externalId != null) { final String qdfg = "MATCH (:User {externalId : {userExternalId}})-[r:IN|COMMUNIQUE]-(g:Group) " + "WHERE (g:FunctionalGroup OR g:FunctionGroup OR g:HTGroup) AND " + "NOT(g.externalId IN {groups}) AND (NOT(HAS(r.source)) OR r.source = {source}) " + "DELETE r"; final JsonObject pdfg = new JsonObject().put("userExternalId", externalId) .put("source", currentSource).put("groups", groups); transactionHelper.add(qdfg, pdfg); fosm.mergeIn(fgm); final String deleteOldFoslg = "MATCH (u:User {externalId : {userExternalId}})-[r:TEACHES_FOS]->(f:FieldOfStudy) " + "WHERE NOT(f.externalId IN {fos}) AND (NOT(HAS(r.source)) OR r.source = {source}) " + "DELETE r"; transactionHelper.add(deleteOldFoslg, pdfg.copy().put("fos", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(fosm.fieldNames())))); for (String fos : fgm.fieldNames()) { String q2 = "MATCH (u:User {externalId : {userExternalId}}), (f:FieldOfStudy {externalId:{feId}}) " + "MERGE u-[r:TEACHES_FOS]->f " + "SET r.groups = {groups} "; transactionHelper.add(q2, pdfg.copy().put("groups", fgm.getJsonArray(fos)).put("feId", fos)); } } } } }