List of usage examples for io.vertx.core.json JsonArray getJsonObject
public JsonObject getJsonObject(int pos)
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()); } } }); }