Example usage for io.vertx.core.json JsonArray contains

List of usage examples for io.vertx.core.json JsonArray contains

Introduction

In this page you can find the example usage for io.vertx.core.json JsonArray contains.

Prototype

public boolean contains(Object value) 

Source Link

Document

Does the JSON array contain the specified value?

Usage

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));
    }
}