List of usage examples for io.vertx.core.json JsonArray contains
public boolean contains(Object value)
From source file:org.entcore.feeder.aaf1d.Aaf1dFeeder.java
License:Open Source License
@Override public void launch(Importer importer, final Handler<Message<JsonObject>> handler) throws Exception { vertx.fileSystem().readFile(path + File.separator + AafFeeder.IMPORT_DIRECTORIES_JSON, new Handler<AsyncResult<Buffer>>() { @Override// w w w. ja v a 2 s .c o m public void handle(AsyncResult<Buffer> f) { if (f.succeeded()) { final JsonArray importSubDirectories; try { importSubDirectories = new fr.wseduc.webutils.collections.JsonArray( f.result().toString()); } catch (RuntimeException e) { handler.handle(new ResultMessage().error("invalid.importDirectories.file")); log.error("Invalid importDirectories file.", e); return; } vertx.fileSystem().readDir(path, new Handler<AsyncResult<List<String>>>() { @Override public void handle(AsyncResult<List<String>> event) { if (event.succeeded()) { final List<String> importsDirs = new ArrayList<>(); for (String dir : event.result()) { final int idx = dir.lastIndexOf(File.separator); if (idx >= 0 && dir.length() > idx && importSubDirectories.contains(dir.substring(idx + 1))) { importsDirs.add(dir); } } if (importsDirs.size() < 1) { handler.handle(new ResultMessage().error("missing.subdirectories")); return; } final Handler<Message<JsonObject>>[] handlers = new Handler[importsDirs .size()]; handlers[handlers.length - 1] = new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> m) { handler.handle(m); } }; for (int i = importsDirs.size() - 2; i >= 0; i--) { final int j = i + 1; handlers[i] = new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> m) { if (m != null && "ok".equals(m.body().getString("status"))) { new StructureImportProcessing1d(importsDirs.get(j), vertx) .start(handlers[j]); } else { handler.handle(m); } } }; } new StructureImportProcessing1d(importsDirs.get(0), vertx) .start(handlers[0]); } else { handler.handle(new ResultMessage().error(event.cause().getMessage())); } } }); } else { new StructureImportProcessing1d(path, vertx).start(handler); } } }); }
From source file:org.entcore.feeder.csv.CsvValidator.java
License:Open Source License
private void validateFile(final String path, final String profile, final List<String> columns, final JsonArray existExternalId, final String charset, final Handler<JsonObject> handler) { addProfile(profile);//from ww w. jav a2 s . c o m final Validator validator = profiles.get(profile); getStructure(path.substring(0, path.lastIndexOf(File.separator)), new Handler<Structure>() { @Override public void handle(final Structure structure) { if (structure == null) { addError(profile, "invalid.structure"); handler.handle(result); return; } final JsonObject checkChildExists = new JsonObject(); try { CSVReader csvParser = getCsvReader(path, charset, 1); final int nbColumns = columns.size(); String[] strings; int i = 1; csvParserWhile: while ((strings = csvParser.readNext()) != null) { if (emptyLine(strings)) { i++; continue; } if (strings.length > nbColumns) { strings = Arrays.asList(strings).subList(0, nbColumns).toArray(new String[nbColumns]); } // if (strings.length != nbColumns) { // addErrorByFile(profile, "bad.columns.number", "" + ++i); // continue; // } final JsonArray classesNames = new fr.wseduc.webutils.collections.JsonArray(); JsonObject user = new JsonObject(); user.put("structures", new fr.wseduc.webutils.collections.JsonArray().add(structure.getExternalId())); user.put("profiles", new fr.wseduc.webutils.collections.JsonArray().add(profile)); List<String[]> classes = new ArrayList<>(); for (int j = 0; j < strings.length; j++) { if (j >= columns.size()) { addErrorByFile(profile, "out.columns", "" + i); return; } final String c = columns.get(j); final String v = strings[j].trim(); if (v.isEmpty() && !c.startsWith("child")) continue; switch (validator.getType(c)) { case "string": if ("birthDate".equals(c)) { Matcher m = frenchDatePatter.matcher(v); if (m.find()) { user.put(c, m.group(3) + "-" + m.group(2) + "-" + m.group(1)); } else { user.put(c, v); } } else { user.put(c, v); } break; case "array-string": JsonArray a = user.getJsonArray(c); if (a == null) { a = new fr.wseduc.webutils.collections.JsonArray(); user.put(c, a); } if (("classes".equals(c) || "subjectTaught".equals(c) || "functions".equals(c)) && !v.startsWith(structure.getExternalId() + "$")) { a.add(structure.getExternalId() + "$" + v); } else { a.add(v); } break; case "boolean": user.put(c, "true".equals(v.toLowerCase())); break; default: Object o = user.getValue(c); final String v2; if ("childClasses".equals(c) && !v.startsWith(structure.getExternalId() + "$")) { v2 = structure.getExternalId() + "$" + v; } else { v2 = v; } if (o != null) { if (o instanceof JsonArray) { ((JsonArray) o).add(v2); } else { JsonArray array = new fr.wseduc.webutils.collections.JsonArray(); array.add(o).add(v2); user.put(c, array); } } else { user.put(c, v2); } } if ("classes".equals(c)) { String eId = structure.getExternalId() + '$' + v; String[] classId = new String[2]; classId[0] = structure.getExternalId(); classId[1] = eId; classes.add(classId); classesNames.add(v); } } String ca; long seed; JsonArray classesA; Object co = user.getValue("classes"); if (co != null && co instanceof JsonArray) { classesA = (JsonArray) co; } else if (co instanceof String) { classesA = new fr.wseduc.webutils.collections.JsonArray().add(co); } else { classesA = null; } if ("Student".equals(profile) && classesA != null && classesA.size() == 1) { seed = defaultStudentSeed; ca = classesA.getString(0); } else { ca = String.valueOf(i); seed = System.currentTimeMillis(); } final State state; final String externalId = user.getString("externalId"); if (externalId == null || externalId.trim().isEmpty()) { generateUserExternalId(user, ca, structure, seed); state = State.NEW; } else { if (existExternalId.contains(externalId)) { state = State.UPDATED; studentExternalIdMapping.put(getHashMapping(user, ca, structure, seed), externalId); } else { state = State.NEW; } } switch (profile) { case "Relative": boolean checkChildMapping = true; JsonArray linkStudents = new fr.wseduc.webutils.collections.JsonArray(); if ("Intitul".equals(strings[0]) && "Adresse Organisme".equals(strings[1])) { break csvParserWhile; } user.put("linkStudents", linkStudents); for (String attr : user.fieldNames()) { if ("childExternalId".equals(attr)) { if (checkChildMapping) { checkChildMapping = false; } Object o = user.getValue(attr); if (o instanceof JsonArray) { for (Object c : (JsonArray) o) { linkStudents.add(c); } } else { linkStudents.add(o); } } else if ("childUsername".equals(attr)) { Object childUsername = user.getValue(attr); Object childLastName = user.getValue("childLastName"); Object childFirstName = user.getValue("childFirstName"); Object childClasses; if (isNotEmpty(structure.getOverrideClass())) { childClasses = structure.getOverrideClass(); } else { childClasses = user.getValue("childClasses"); } if (childUsername instanceof JsonArray && childLastName instanceof JsonArray && childFirstName instanceof JsonArray && childClasses instanceof JsonArray && ((JsonArray) childClasses).size() == ((JsonArray) childLastName) .size() && ((JsonArray) childFirstName).size() == ((JsonArray) childLastName) .size()) { for (int j = 0; j < ((JsonArray) childUsername).size(); j++) { String mapping = structure.getExternalId() + ((JsonArray) childUsername).getString(j).trim() + ((JsonArray) childLastName).getString(j).trim() + ((JsonArray) childFirstName).getString(j).trim() + ((JsonArray) childClasses).getString(j).trim() + defaultStudentSeed; relativeStudentMapping(linkStudents, mapping); } } else if (childUsername instanceof String && childLastName instanceof String && childFirstName instanceof String && childClasses instanceof String) { String mapping = structure.getExternalId() + childLastName.toString().trim() + childFirstName.toString().trim() + childClasses.toString().trim() + defaultStudentSeed; relativeStudentMapping(linkStudents, mapping); } else { addErrorByFile(profile, "invalid.child.mapping", "" + (i + 1), "childLUsername"); handler.handle(result); return; } } else if ("childLastName".equals(attr) && !user.fieldNames().contains("childUsername")) { Object childLastName = user.getValue(attr); Object childFirstName = user.getValue("childFirstName"); Object childClasses; if (isNotEmpty(structure.getOverrideClass())) { childClasses = structure.getOverrideClass(); } else { childClasses = user.getValue("childClasses"); } if (childLastName instanceof JsonArray && childFirstName instanceof JsonArray && childClasses instanceof JsonArray && ((JsonArray) childClasses).size() == ((JsonArray) childLastName) .size() && ((JsonArray) childFirstName).size() == ((JsonArray) childLastName) .size()) { for (int j = 0; j < ((JsonArray) childLastName).size(); j++) { String mapping = structure.getExternalId() + ((JsonArray) childLastName).getString(j) + ((JsonArray) childFirstName).getString(j) + ((JsonArray) childClasses).getString(j) + defaultStudentSeed; relativeStudentMapping(linkStudents, mapping); } } else if (childLastName instanceof String && childFirstName instanceof String && childClasses instanceof String) { String mapping = structure.getExternalId() + childLastName.toString().trim() + childFirstName.toString().trim() + childClasses.toString().trim() + defaultStudentSeed; relativeStudentMapping(linkStudents, mapping); } else { addErrorByFile(profile, "invalid.child.mapping", "" + (i + 1), "childLastName & childFirstName"); handler.handle(result); return; } } } if (checkChildMapping || classesNamesMapping.size() > 0) { for (Object o : linkStudents) { if (!(o instanceof String)) continue; if (classesNamesMapping.get(o) != null) { classesNames.add(classesNamesMapping.get(o)); } } if (classesNames.size() == 0) { addSoftErrorByFile(profile, "missing.student.soft", "" + (i + 1), user.getString("firstName"), user.getString("lastName")); } } else { Object c = user.getValue("childExternalId"); JsonObject u = new JsonObject().put("lastName", user.getString("lastName")) .put("firstName", user.getString("firstName")).put("line", i); if (c instanceof String) { c = new JsonArray().add(c); } if (c instanceof JsonArray) { for (Object ceId : ((JsonArray) c)) { if (isEmpty((String) ceId)) continue; JsonArray jr = checkChildExists.getJsonArray((String) ceId); if (jr == null) { jr = new JsonArray(); checkChildExists.put((String) ceId, jr); } jr.add(u); } } } break; } String error = validator.validate(user, acceptLanguage); if (error != null) { log.warn(error); addErrorByFile(profile, "validator.errorWithLine", "" + (i + 1), error); // Note that 'error' is already translated } else { final String classesStr = Joiner.on(", ").join(classesNames); if (!"Relative".equals(profile)) { classesNamesMapping.put(user.getString("externalId"), classesStr); } addUser(profile, user.put("state", translate(state.name())) .put("translatedProfile", translate(profile)).put("classesStr", classesStr)); } i++; } } catch (Exception e) { addError(profile, "csv.exception"); log.error("csv.exception", e); } if (!checkChildExists.isEmpty()) { final String query = "MATCH (u:User) " + "WHERE u.externalId IN {childExternalIds} " + "RETURN COLLECT(u.externalId) as childExternalIds "; final JsonObject params = new JsonObject().put("childExternalIds", new JsonArray(new ArrayList<>(checkChildExists.fieldNames()))); Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { if ("ok".equals(event.body().getString("status"))) { JsonArray existsChilds = getOrElse( getOrElse(getOrElse(event.body().getJsonArray("result"), new JsonArray()) .getJsonObject(0), new JsonObject()) .getJsonArray("childExternalIds"), new JsonArray()); for (String cexternalId : checkChildExists.fieldNames()) { if (!existsChilds.contains(cexternalId)) { for (Object o : checkChildExists.getJsonArray(cexternalId)) { if (!(o instanceof JsonObject)) continue; JsonObject user = (JsonObject) o; addSoftErrorByFile(profile, "missing.student.soft", "" + (user.getInteger("line") + 1), user.getString("firstName"), user.getString("lastName")); } } } } handler.handle(result); } }); } else { handler.handle(result); } } }); }
From source file:org.entcore.feeder.dictionary.structures.DuplicateUsers.java
License:Open Source License
public void mergeBykeys(final Message<JsonObject> message) { final JsonObject error = new JsonObject().put("status", "error"); final String originalUserId = message.body().getString("originalUserId"); if (originalUserId == null || originalUserId.isEmpty()) { message.reply(error.put("message", "invalid.original.user")); return;// ww w . ja va2 s . c o m } final JsonArray mergeKeys = message.body().getJsonArray("mergeKeys"); if (mergeKeys == null || mergeKeys.size() < 1) { message.reply(error.put("message", "invalid.merge.keys")); return; } final JsonObject params = new JsonObject().put("userId", originalUserId); TransactionManager.getNeo4jHelper().execute("MATCH (u:User {id: {userId}}) RETURN u.mergeKey as mergeKey", params, 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.size() == 1) { String mergeKey = result.getJsonObject(0).getString("mergeKey"); if (mergeKey != null && mergeKeys.contains(mergeKey)) { final JsonArray tmp = new fr.wseduc.webutils.collections.JsonArray(); for (Object o : mergeKeys) { if (!mergeKey.equals(o)) { tmp.add(o); } } if (tmp.size() > 0) { params.put("mergeKeys", tmp); } else { message.reply(error.put("message", "invalid.merge.keys")); return; } } else { params.put("mergeKeys", mergeKeys); } try { TransactionHelper tx = TransactionManager.getTransaction(); tx.add("MATCH (u:User {id: {userId}}), (mu:User)-[rin:IN]->(gin:Group) " + "WHERE HEAD(u.profiles) = 'Relative' AND HEAD(mu.profiles) = 'Relative' " + "AND NOT(HAS(u.mergedWith)) AND mu.mergeKey IN {mergeKeys} " + "MERGE u-[:IN]->gin " + "DELETE rin ", params); tx.add("MATCH (u:User {id: {userId}}), (mu:User)-[rcom:COMMUNIQUE]->(gcom:Group) " + "WHERE HEAD(u.profiles) = 'Relative' AND HEAD(mu.profiles) = 'Relative' " + "AND NOT(HAS(u.mergedWith)) AND mu.mergeKey IN {mergeKeys} " + "MERGE u-[:COMMUNIQUE]->gcom " + "DELETE rcom ", params); tx.add("MATCH (u:User {id: {userId}}), (mu:User)<-[rcomr:COMMUNIQUE]-(gcomr:Group) " + "WHERE HEAD(u.profiles) = 'Relative' AND HEAD(mu.profiles) = 'Relative' " + "AND NOT(HAS(u.mergedWith)) AND mu.mergeKey IN {mergeKeys} " + "MERGE u<-[:COMMUNIQUE]-gcomr " + "DELETE rcomr ", params); tx.add("MATCH (u:User {id: {userId}}), (mu:User)-[rr:RELATED]->(ur:User) " + "WHERE HEAD(u.profiles) = 'Relative' AND HEAD(mu.profiles) = 'Relative' " + "AND NOT(HAS(u.mergedWith)) AND mu.mergeKey IN {mergeKeys} " + "MERGE u-[:RELATED]->ur " + "DELETE rr ", params); tx.add("MATCH (u:User {id: {userId}}), (mu:User)<-[rrr:RELATED]-(urr:User) " + "WHERE HEAD(u.profiles) = 'Relative' AND HEAD(mu.profiles) = 'Relative' " + "AND NOT(HAS(u.mergedWith)) AND mu.mergeKey IN {mergeKeys} " + "MERGE u<-[:RELATED]-urr " + "DELETE rrr ", params); tx.add("MATCH (u:User {id: {userId}}), (mu:User) " + "WHERE HEAD(u.profiles) = 'Relative' AND HEAD(mu.profiles) = 'Relative' " + "AND NOT(HAS(u.mergedWith)) AND mu.mergeKey IN {mergeKeys} " + // AND LENGTH(mu.joinKey) < 2 " + "SET mu.mergedWith = {userId}, mu.mergeKey = null, u.mergedLogins = coalesce(u.mergedLogins, []) + mu.login " + // ", u.joinKey = FILTER(eId IN u.joinKey WHERE eId <> mu.externalId) + mu.externalId " + "MERGE mu-[:MERGED]->u " + "RETURN u.mergedLogins as mergedLogins ", params); tx.commit(new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> event) { message.reply(event.body()); } }); } catch (TransactionException e) { log.error("transaction.error", e); message.reply(error.put("message", "transaction.error")); } } else { message.reply(error.put("message", "user.not.found")); } } }); }
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); }//from ww w . ja va2 s.c om 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.utils.AAFUtil.java
License:Open Source License
private static JsonObject siecleConverter(JsonArray value) { JsonObject res = new JsonObject(); JsonArray ENTEleveParents = new fr.wseduc.webutils.collections.JsonArray(); Set<String> ENTEleveAutoriteParentale = new HashSet<>(); String ENTEleveAutoriteParentale1 = ""; String ENTEleveAutoriteParentale2 = ""; String ENTElevePersRelEleve1 = ""; String ENTEleveQualitePersRelEleve1 = ""; String ENTElevePersRelEleve2 = ""; String ENTEleveQualitePersRelEleve2 = ""; // prevent missing "ENTEleveAutoriteParentale" if item is duplicate if (value.size() > 2) { final Map<String, String> tmp = new HashMap<>(); for (Object o : value) { final String[] s = ((String) o).split("\\$", 2); final String v = tmp.get(s[0]); if (v == null || "1$1$1$1$0".equals(v)) { tmp.put(s[0], s[1]);/*from ww w. j a va 2 s . com*/ } } JsonArray tmpArray = new fr.wseduc.webutils.collections.JsonArray(); for (Map.Entry<String, String> e : tmp.entrySet()) { tmpArray.add(e.getKey() + "$" + e.getValue()); } value = tmpArray; } for (Object o : value) { String[] s = ((String) o).split("\\$"); if ("1".equals(s[1]) || "2".equals(s[1]) || "10".equals(s[1]) || "20".equals(s[1])) { if (!ENTEleveParents.contains(s[0])) { ENTEleveParents.add(s[0]); } } else if ("1".equals(s[2]) || "1".equals(s[4]) || "1".equals(s[5])) { if ("1".equals(s[2])) { if (ENTElevePersRelEleve1 == null || ENTElevePersRelEleve1.isEmpty()) { ENTElevePersRelEleve1 = s[0]; ENTEleveQualitePersRelEleve1 = "FINANCIER"; } else if (ENTElevePersRelEleve2 == null || ENTElevePersRelEleve2.isEmpty()) { ENTElevePersRelEleve2 = s[0]; ENTEleveQualitePersRelEleve2 = "FINANCIER"; } else if ("PAIEMENT".equals(ENTEleveQualitePersRelEleve1)) { ENTElevePersRelEleve1 = s[0]; ENTEleveQualitePersRelEleve1 = "FINANCIER"; } else if ("PAIEMENT".equals(ENTEleveQualitePersRelEleve2)) { ENTElevePersRelEleve2 = s[0]; ENTEleveQualitePersRelEleve2 = "FINANCIER"; } } else if ("1".equals(s[4])) { if (ENTElevePersRelEleve1 == null || ENTElevePersRelEleve1.isEmpty()) { ENTElevePersRelEleve1 = s[0]; ENTEleveQualitePersRelEleve1 = "CONTACT"; } else if (ENTElevePersRelEleve2 == null || ENTElevePersRelEleve2.isEmpty()) { ENTElevePersRelEleve2 = s[0]; ENTEleveQualitePersRelEleve2 = "CONTACT"; } else if ("PAIEMENT".equals(ENTEleveQualitePersRelEleve1)) { ENTElevePersRelEleve1 = s[0]; ENTEleveQualitePersRelEleve1 = "CONTACT"; } else if ("PAIEMENT".equals(ENTEleveQualitePersRelEleve2)) { ENTElevePersRelEleve2 = s[0]; ENTEleveQualitePersRelEleve2 = "CONTACT"; } } else if ("1".equals(s[5])) { if (ENTElevePersRelEleve1 == null || ENTElevePersRelEleve1.isEmpty()) { ENTElevePersRelEleve1 = s[0]; ENTEleveQualitePersRelEleve1 = "PAIEMENT"; } else if (ENTElevePersRelEleve2 == null || ENTElevePersRelEleve2.isEmpty()) { ENTElevePersRelEleve2 = s[0]; ENTEleveQualitePersRelEleve2 = "PAIEMENT"; } } } if ("1".equals(s[3])) { if (isEmpty(ENTEleveAutoriteParentale1)) { ENTEleveAutoriteParentale1 = s[0]; } ENTEleveAutoriteParentale.add(s[0]); } if (isEmpty(ENTEleveAutoriteParentale2) && "2".equals(s[3])) { ENTEleveAutoriteParentale2 = s[0]; } } if (!ENTEleveAutoriteParentale1.isEmpty() && !ENTEleveAutoriteParentale.contains(ENTEleveAutoriteParentale1)) { ENTEleveAutoriteParentale.add(ENTEleveAutoriteParentale1); } if (!ENTEleveAutoriteParentale2.isEmpty() && !ENTEleveAutoriteParentale.contains(ENTEleveAutoriteParentale2)) { ENTEleveAutoriteParentale.add(ENTEleveAutoriteParentale2); } res.put("ENTEleveParents", ENTEleveParents); res.put("ENTEleveAutoriteParentale", new fr.wseduc.webutils.collections.JsonArray(new ArrayList<>(ENTEleveAutoriteParentale))); res.put("ENTElevePersRelEleve1", ENTElevePersRelEleve1); res.put("ENTEleveQualitePersRelEleve1", ENTEleveQualitePersRelEleve1); res.put("ENTElevePersRelEleve2", ENTElevePersRelEleve2); res.put("ENTEleveQualitePersRelEleve2", ENTEleveQualitePersRelEleve2); res.put("ENTElevePersRelEleve", value); return res; }
From source file:org.entcore.workspace.service.WorkspaceService.java
License:Open Source License
private void deleteAllRevisions(final String documentId, final JsonArray alreadyDeleted) { final QueryBuilder builder = QueryBuilder.start("documentId").is(documentId); JsonObject keys = new JsonObject(); mongo.find(DOCUMENT_REVISION_COLLECTION, MongoQueryBuilder.build(builder), new JsonObject(), keys, MongoDbResult.validResultsHandler(new Handler<Either<String, JsonArray>>() { public void handle(Either<String, JsonArray> event) { if (event.isRight()) { final JsonArray results = event.right().getValue(); final JsonArray ids = new fr.wseduc.webutils.collections.JsonArray(); for (Object obj : results) { JsonObject json = (JsonObject) obj; String id = json.getString("file"); if (id != null && !alreadyDeleted.contains(id)) { ids.add(id); }/*from w ww . j a va2 s . c o m*/ } storage.removeFiles(ids, new Handler<JsonObject>() { public void handle(JsonObject event) { if (event != null && "ok".equals(event.getString("status"))) { //Delete revisions mongo.delete(DOCUMENT_REVISION_COLLECTION, MongoQueryBuilder.build(builder), MongoDbResult.validResultHandler( new Handler<Either<String, JsonObject>>() { public void handle(Either<String, JsonObject> event) { if (event.isLeft()) { log.error( "[Workspace] Error deleting revisions for document " + documentId + " - " + event.left().getValue()); } else { for (Object obj : results) { JsonObject result = (JsonObject) obj; if (!alreadyDeleted .contains(result.getString("file"))) decrementStorage(result); } } } })); } else { log.error("[Workspace] Error deleting revision storage files for document " + documentId + " " + ids + " - " + event.getString("message")); } } }); } else { log.error("[Workspace] Error finding revision for document " + documentId + " - " + event.left().getValue()); } } })); }
From source file:org.folio.auth.permissions_module.impl.MongoPermissionsStore.java
@Override public Future<Boolean> addPermissionToUser(String user, String permission, String tenant) { logger.debug("Permissions> Adding permission '" + permission + "' to user '" + user + "'"); JsonObject query = new JsonObject().put("username", user).put("tenant", tenant); Future<Boolean> future = Future.future(); mongoClient.find("users", query, res -> { if (res.failed()) { future.fail(res.cause().getMessage()); } else {//from w w w . ja va 2 s .co m logger.debug("Permissions> Found user successfully"); JsonArray currentPermissions = res.result().get(0).getJsonArray("permissions"); if (res.result().size() < 0) { future.complete(false); } else { this.getPermissionsForUser(user, tenant, false).setHandler(res2 -> { if (res2.failed()) { future.fail("Error querying current permissions: " + res2.cause().getMessage()); } else { JsonArray currentPerms = res2.result(); if (currentPerms.contains(permission)) { future.fail("Permission already exists in user"); } else { JsonObject push = new JsonObject().put("$push", new JsonObject().put("permissions", permission)); logger.debug("Permissions> Using user query '" + query.encode() + "' and update query '" + push.encode() + "'"); mongoClient.updateCollection("users", query, push, res3 -> { if (res3.failed()) { future.fail("Unable to add permission:" + res3.cause().getMessage()); } else { logger.debug("Permissions> Permission '" + permission + "' added to user '" + user + "'"); future.complete(true); } }); } } }); } } }); return future; }
From source file:org.folio.auth.permissions_module.impl.MongoPermissionsStore.java
@Override public Future<Boolean> removePermissionFromUser(String user, String permission, String tenant) { JsonObject query = new JsonObject().put("username", user).put("tenant", tenant); Future<Boolean> future = Future.future(); mongoClient.find("users", query, res -> { if (res.failed() || res.result().size() < 1) { future.complete(false);//from w w w . ja v a2 s . c o m } else { getPermissionsForUser(user, tenant, false).setHandler(res2 -> { if (res2.failed()) { future.fail("Unable to retrieve initial permissions: " + res2.cause().getMessage()); } else { JsonArray permissions = res2.result(); logger.debug("PERMISSIONS: " + permissions.encode()); if (!permissions.contains(permission)) { future.complete(true); } else { permissions.remove(permission); JsonObject update = new JsonObject().put("$set", new JsonObject().put("permissions", permissions)); mongoClient.updateCollection("users", query, update, res3 -> { if (res3.failed()) { future.fail("Unable to remove permission:" + res3.cause().getMessage()); } else { logger.debug("Permissions> Permission '" + permission + "' removed"); future.complete(true); } }); } } }); } }); return future; }
From source file:org.folio.auth.permissions_module.impl.MongoPermissionsStore.java
public Future<JsonArray> getPermissionsForUser(String user, String tenant, Boolean expand) { JsonObject query = new JsonObject().put("username", user).put("tenant", tenant); Future<JsonArray> future = Future.future(); mongoClient.find("users", query, (AsyncResult<List<JsonObject>> res) -> { if (res.result().size() < 1) { future.fail("No such user"); } else {//w ww . ja va 2s. c om JsonObject userObject = res.result().get(0); logger.debug("Permissions> Permissions for user " + user + ": " + userObject.encode()); JsonArray permissions = userObject.getJsonArray("permissions"); if (expand) { ArrayList<Future> futureList = new ArrayList<>(); for (Object o : permissions) { String permissionName = (String) o; Future<JsonArray> expandPermissionFuture = this.getExpandedPermissions(permissionName, tenant); futureList.add(expandPermissionFuture); } logger.debug("Permissions> Assembling CompositeFuture of " + futureList.size() + " permissions to expand"); CompositeFuture compositeFuture = CompositeFuture.all(futureList); compositeFuture.setHandler(res2 -> { if (res2.failed()) { future.fail(res2.cause()); } else { JsonArray allPermissions = new JsonArray(); for (Future f : futureList) { JsonArray arr = (JsonArray) f.result(); for (Object o : arr) { String perm = (String) o; if (!allPermissions.contains(perm)) { allPermissions.add(perm); } } } logger.debug( "Permissions> Returning list of " + allPermissions.size() + " permissions"); future.complete(allPermissions); } }); } else { future.complete(permissions); } } }); return future; }
From source file:org.politrons.auth.impl.MongoUser.java
License:Open Source License
/** * check wether the current user has the given role * //from w w w.j av a2 s . co m * @param role * the role to be checked * @param resultHandler * resultHandler gets true, if role is valid, otherwise false */ protected void doHasRole(String role, Handler<AsyncResult<Boolean>> resultHandler) { try { JsonArray roles = principal.getJsonArray(mongoAuth.getRoleField()); resultHandler.handle(Future.succeededFuture(roles != null && roles.contains(role))); } catch (Throwable e) { resultHandler.handle(Future.failedFuture(e)); } }