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

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

Introduction

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

Prototype

public JsonArray add(Object value) 

Source Link

Document

Add an Object to the JSON array.

Usage

From source file:org.entcore.auth.security.SamlValidator.java

License:Open Source License

/**
 * Build vector(s) representating user according to this profile
 *
 * @param userId userId neo4j//from www.j a  va 2  s.  co  m
 * @param handler handler containing results
 */
private void createVectors(String userId, final String host, final Handler<Either<String, JsonArray>> handler) {
    debug("create user Vector(s)");
    // browse supported type vector required by the service provider
    logger.info("createVectors init ");

    List<AttributeConsumingService> AttributesCS = spSSODescriptor.getAttributeConsumingServices();
    if (AttributesCS.size() > 0) {
        HashMap<String, List<String>> attributes = new HashMap<String, List<String>>();
        final JsonArray jsonArrayResult = new fr.wseduc.webutils.collections.JsonArray();

        for (final AttributeConsumingService attributeConsumingService : AttributesCS) {
            for (RequestedAttribute requestedAttribute : attributeConsumingService.getRequestAttributes()) {
                String vectorName = requestedAttribute.getName();
                if (vectorName.equals("FrEduVecteur")) {
                    samlVectorService = new FrEduVecteurService(neo4j);
                    samlVectorService.getVectors(userId, new Handler<Either<String, JsonArray>>() {
                        @Override
                        public void handle(Either<String, JsonArray> stringJsonArrayEither) {
                            if (stringJsonArrayEither.isRight()) {
                                JsonArray jsonArrayResultTemp = ((JsonArray) stringJsonArrayEither.right()
                                        .getValue());
                                for (int i = 0; i < jsonArrayResultTemp.size(); i++) {
                                    jsonArrayResult.add(jsonArrayResultTemp.getValue(i));
                                }
                                // add FrEduUrlRetour vector
                                for (RequestedAttribute requestedAttribute : attributeConsumingService
                                        .getRequestAttributes()) {
                                    String vectorName = requestedAttribute.getName();
                                    if (vectorName.equals("FrEduUrlRetour")) {
                                        JsonObject vectorRetour = new JsonObject().put("FrEduUrlRetour", host);
                                        jsonArrayResult.add(vectorRetour);
                                    }
                                }
                                handler.handle(new Either.Right<String, JsonArray>(jsonArrayResult));
                            }

                        }
                    });

                } else if (requestedAttribute.isRequired() && vectorName.equals("FrEduUrlRetour")) {
                    String error = "vector " + vectorName + " not implemented yet";
                    logger.error(error);
                    handler.handle(new Either.Left<String, JsonArray>(error));
                } else if (vectorName.equals("mail")) {
                    String error = "vector " + vectorName + " not implemented yet";
                    logger.error(error);
                    handler.handle(new Either.Left<String, JsonArray>(error));
                } else {
                    if (requestedAttribute.isRequired()) {
                        String error = "vector " + vectorName + " not supported for user " + userId;
                        logger.error(error);
                        handler.handle(new Either.Left<String, JsonArray>(error));
                    } else {
                        logger.debug("vector " + vectorName + " don't have to be supported.");
                    }
                }
            }
        }
    } else {
        String SPid = ((EntityDescriptor) spSSODescriptor.getParent()).getEntityID();
        if (SPid.isEmpty() || SPid == null) {
            logger.error("Service Providor ID is null or empty");
            handler.handle(new Either.Left<String, JsonArray>("Service Providor ID is null or empty"));
        } else {
            SamlServiceProvider sp = spFactory.serviceProvider(SPid);
            sp.generate(eb, userId, handler);
        }
    }
}

From source file:org.entcore.auth.services.impl.AbstractSSOProvider.java

License:Open Source License

protected void executeMultiVectorQuery(String query, JsonObject params, final Assertion assertion,
        final Handler<Either<String, Object>> handler) {
    query += (RETURN_QUERY + ", s.name as structureName");
    Neo4j.getInstance().execute(query, params,
            Neo4jResult.validResultHandler(new Handler<Either<String, JsonArray>>() {
                @Override/*from  w  w w  .  ja  v  a2  s . c om*/
                public void handle(final Either<String, JsonArray> event) {
                    if (event.isRight()) {
                        JsonArray ids = new fr.wseduc.webutils.collections.JsonArray();
                        final Set<String> userIds = new HashSet<>();
                        final JsonArray users = event.right().getValue();
                        for (Object o : users) {
                            if (!(o instanceof JsonObject))
                                continue;
                            JsonObject j = (JsonObject) o;
                            if (j.getBoolean("blockedProfile", false)) {
                                handler.handle(new Either.Left<String, Object>("blocked.profile"));
                                return;
                            }
                            userIds.add(j.getString("id"));
                            if (Utils.isNotEmpty(j.getString("id")) && !j.getBoolean("federated", false)) {
                                ids.add(j.getString("id"));
                            }
                        }
                        if (ids.size() > 0) {
                            String query = "MATCH (u:User) WHERE u.id IN {ids} SET u.federated = true ";
                            JsonObject params = new JsonObject().put("ids", ids);
                            if (assertion != null && assertion.getIssuer() != null
                                    && assertion.getIssuer().getValue() != null
                                    && !assertion.getIssuer().getValue().trim().isEmpty()) {
                                query += ", u.federatedIDP = {idp} ";
                                params.put("idp", assertion.getIssuer().getValue());
                            }
                            Neo4j.getInstance().execute(query, params, new Handler<Message<JsonObject>>() {
                                @Override
                                public void handle(Message<JsonObject> event2) {
                                    if (userIds.size() == 1) {
                                        handler.handle(
                                                new Either.Right<String, Object>(users.getJsonObject(0)));
                                    } else {
                                        handler.handle(new Either.Right<String, Object>(users));
                                    }
                                }
                            });
                        } else {
                            if (userIds.size() == 1) {
                                handler.handle(new Either.Right<String, Object>(users.getJsonObject(0)));
                            } else {
                                handler.handle(new Either.Right<String, Object>(users));
                            }
                        }
                    } else {
                        handler.handle(new Either.Left<String, Object>(event.left().getValue()));
                    }
                }
            }));
}

From source file:org.entcore.auth.services.impl.SSOAten.java

License:Open Source License

@Override
public void execute(Assertion assertion, Handler<Either<String, Object>> handler) {
    if (!validConditions(assertion, handler))
        return;//from   w ww. ja v a  2s  . co m

    List<String> vectors = getAttributes(assertion, "FrEduVecteur");
    if (vectors == null || vectors.isEmpty()) {
        handler.handle(new Either.Left<String, Object>("invalid.vector"));
        return;
    }

    if (vectors.size() > 1) {
        JsonArray uais = new fr.wseduc.webutils.collections.JsonArray();
        JsonArray attachmentId = new fr.wseduc.webutils.collections.JsonArray();
        JsonArray firstName = new fr.wseduc.webutils.collections.JsonArray();
        JsonArray lastName = new fr.wseduc.webutils.collections.JsonArray();
        for (String vector : vectors) {
            String values[] = vector.split("\\|");
            if (values.length < 5 || values[3].trim().isEmpty() || values[4].trim().isEmpty()
                    || (!"1".equals(values[0]) && !"2".equals(values[0]))) {
                handler.handle(new Either.Left<String, Object>("invalid.vector"));
                return;
            }
            uais.add(values[4]);
            attachmentId.add(values[3]);
            firstName.add(values[2]);
            lastName.add(values[1]);
        }
        String query = "MATCH (student:User)-[:RELATED]->(u:User)-[:IN]->(:ProfileGroup)"
                + "-[:DEPENDS]->(s:Structure) "
                + "WHERE HEAD(u.profiles) = 'Relative' AND s.UAI IN {UAI} AND student.attachmentId IN {attachmentId} "
                + "AND u.firstName IN {firstName} AND u.lastName IN {lastName} AND NOT(HAS(u.mergedWith)) ";
        JsonObject params = new JsonObject().put("attachmentId", attachmentId).put("UAI", uais)
                .put("firstName", firstName).put("lastName", lastName);
        executeMultiVectorQuery(query, params, assertion, handler);
    } else {
        String values[] = vectors.get(0).split("\\|");
        if (values.length > 4 && !values[3].trim().isEmpty() && !values[4].trim().isEmpty()) { // Eleve, PersRelEleve
            JsonObject params = new JsonObject().put("attachmentId", values[3]).put("UAI", values[4]);
            String query;
            switch (values[0]) {
            case "1": // PersRelEleve 1d
            case "2": // PersRelEleve 2d
                query = "MATCH (:User {attachmentId: {attachmentId}})-[:RELATED]->(u:User)-[:IN]->(:ProfileGroup)"
                        + "-[:DEPENDS]->(s:Structure) "
                        + "WHERE HEAD(u.profiles) = 'Relative' AND s.UAI = {UAI} "
                        + "AND u.firstName = {firstName} AND u.lastName = {lastName} ";
                params.put("firstName", values[2]).put("lastName", values[1]);
                break;
            case "3": // Eleve 1d
            case "4": // Eleve 2d
                query = "MATCH (u:User {attachmentId: {attachmentId}})-[:IN]->(:ProfileGroup)-[:DEPENDS]->(s:Structure) "
                        + "WHERE HEAD(u.profiles) = 'Student' AND s.UAI = {UAI} ";
                break;
            default:
                handler.handle(new Either.Left<String, Object>("invalid.user.profile"));
                return;
            }
            executeQuery(query, params, assertion, handler);
        } else {
            handler.handle(new Either.Left<String, Object>("invalid.vector"));
        }
    }
}

From source file:org.entcore.blog.events.BlogSearchingEvents.java

License:Open Source License

private JsonArray formatSearchResult(final JsonArray results, final JsonArray columnsHeader,
        final List<String> words) {
    final List<String> aHeader = columnsHeader.getList();
    final JsonArray traity = new JsonArray();

    for (int i = 0; i < results.size(); i++) {
        final JsonObject j = results.getJsonObject(i);
        final JsonObject jr = new JsonObject();
        if (j != null) {
            final String blogId = j.getJsonObject("blog").getString("$id");
            jr.put(aHeader.get(0), j.getString("title"));
            jr.put(aHeader.get(1), j.getString("content", ""));
            jr.put(aHeader.get(2), j.getJsonObject("modified"));
            jr.put(aHeader.get(3), j.getJsonObject("author").getString("username"));
            jr.put(aHeader.get(4), j.getJsonObject("author").getString("userId"));
            jr.put(aHeader.get(5), "/blog#/view/" + blogId + "/" + j.getString("_id"));
            traity.add(jr);
        }/*from   www.  j av a 2 s  . c o  m*/
    }
    return traity;
}

From source file:org.entcore.blog.services.impl.DefaultBlogTimelineService.java

License:Open Source License

private void findRecipiants(String collection, QueryBuilder query, JsonObject keys, final JsonArray fetch,
        final String filterRights, final UserInfos user, final Handler<Map<String, Object>> handler) {
    mongo.findOne(collection, MongoQueryBuilder.build(query), keys, fetch, new Handler<Message<JsonObject>>() {
        @Override//w  w  w. j  a  v  a 2s  .c  om
        public void handle(Message<JsonObject> event) {
            if ("ok".equals(event.body().getString("status"))) {
                final JsonObject blog = event.body().getJsonObject("result", new JsonObject());
                JsonArray shared;
                if (fetch == null) {
                    shared = blog.getJsonArray("shared");
                } else {
                    shared = blog.getJsonObject("blog", new JsonObject()).getJsonArray("shared");
                }
                if (shared != null) {
                    shared.add(blog.getJsonObject("blog", new JsonObject()).getJsonObject("author")); //Allows owner to get notified for contributors posts
                    List<String> shareIds = getSharedIds(shared, filterRights);
                    if (!shareIds.isEmpty()) {
                        Map<String, Object> params = new HashMap<>();
                        params.put("userId", user.getUserId());
                        neo.send(neoQuery(shareIds), params, new Handler<Message<JsonObject>>() {
                            @Override
                            public void handle(Message<JsonObject> res) {
                                if ("ok".equals(res.body().getString("status"))) {
                                    JsonObject r = res.body().getJsonObject("result");
                                    List<String> recipients = new ArrayList<>();
                                    for (String attr : r.fieldNames()) {
                                        String id = r.getJsonObject(attr).getString("id");
                                        if (id != null) {
                                            recipients.add(id);
                                        }
                                    }
                                    Map<String, Object> t = new HashMap<>();
                                    t.put("recipients", recipients);
                                    t.put("blog", blog);
                                    handler.handle(t);
                                } else {
                                    handler.handle(null);
                                }
                            }
                        });
                    } else {
                        handler.handle(null);
                    }
                } else {
                    handler.handle(null);
                }
            } else {
                handler.handle(null);
            }
        }
    });
}

From source file:org.entcore.blog.services.impl.DefaultPostService.java

License:Open Source License

@Override
public void listComment(String blogId, String postId, final UserInfos user,
        final Handler<Either<String, JsonArray>> result) {
    final QueryBuilder query = QueryBuilder.start("_id").is(postId).put("blog.$id").is(blogId);
    JsonObject keys = new JsonObject().put("comments", 1).put("blog", 1);
    JsonArray fetch = new JsonArray().add("blog");
    mongo.findOne(POST_COLLECTION, MongoQueryBuilder.build(query), keys, fetch,
            new Handler<Message<JsonObject>>() {
                @Override// w  w w  .j a  v  a2  s.c  om
                public void handle(Message<JsonObject> event) {
                    JsonArray comments = new JsonArray();
                    if ("ok".equals(event.body().getString("status"))
                            && event.body().getJsonObject("result", new JsonObject()).size() > 0) {
                        JsonObject res = event.body().getJsonObject("result");
                        boolean userIsManager = userIsManager(user, res.getJsonObject("blog"));
                        for (Object o : res.getJsonArray("comments", new JsonArray())) {
                            if (!(o instanceof JsonObject))
                                continue;
                            JsonObject j = (JsonObject) o;
                            if (userIsManager || StateType.PUBLISHED.name().equals(j.getString("state"))
                                    || user.getUserId().equals(
                                            j.getJsonObject("author", new JsonObject()).getString("userId"))) {
                                comments.add(j);
                            }
                        }
                    }
                    result.handle(new Either.Right<String, JsonArray>(comments));
                }
            });
}

From source file:org.entcore.cas.services.RegisteredServices.java

License:Open Source License

public JsonArray getInfos(String acceptLanguage) {
    JsonArray infos = new fr.wseduc.webutils.collections.JsonArray();
    for (RegisteredService registeredService : services) {
        infos.add(registeredService.getInfos(acceptLanguage));
    }/*from   w w w.  ja  v  a 2  s.  com*/
    return infos;
}

From source file:org.entcore.common.aggregation.indicators.mongo.IndicatorMongoImpl.java

License:Open Source License

private void addUnwindPipeline(JsonArray pipeline, IndicatorGroup group) {
    if (group == null)
        return;//from w ww  .  j av  a  2  s .  c om

    addUnwindPipeline(pipeline, group.getParent());
    if (group.isArray())
        pipeline.add(new JsonObject().put("$unwind", "$" + group.getKey()));
}

From source file:org.entcore.common.aggregation.indicators.mongo.IndicatorMongoImpl.java

License:Open Source License

private void executeAggregationQuery(final IndicatorGroup group, final Handler<JsonObject> finalHandler) {
    //Filter by trace type + custom filters
    final MongoDBBuilder filteringQuery = (MongoDBBuilder) new MongoDBBuilder().put(TRACE_FIELD_TYPE)
            .is(indicatorKey);//from  w ww .ja va 2 s  . c  o m
    for (IndicatorFilter filter : filters) {
        filter.filter(filteringQuery);
    }

    final JsonObject aggregation = new JsonObject();
    JsonArray pipeline = new fr.wseduc.webutils.collections.JsonArray();
    aggregation.put("aggregate", COLLECTIONS.events.name()).put("allowDiskUse", true).put("pipeline", pipeline);

    pipeline.add(new JsonObject().put("$match", MongoQueryBuilder.build(filteringQuery)));
    addUnwindPipeline(pipeline, group);
    JsonObject groupBy = new JsonObject().put("$group",
            new JsonObject().put("_id", getGroupByObject(new JsonObject(), group)).put("count",
                    new JsonObject().put("$sum", 1)));
    pipeline.add(groupBy);

    //Customize the request if needed
    customizeGroupBy(groupBy);
    customizePipeline(pipeline);

    mongo.command(aggregation.toString(), new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> message) {
            if ("ok".equals(message.body().getString("status"))
                    && message.body().getJsonObject("result", new JsonObject()).getInteger("ok") == 1) {
                JsonArray result = message.body().getJsonObject("result").getJsonArray("result");
                writeStats(result, group, finalHandler);
            } else {
                String groupstr = group == null ? "Global" : group.toString();
                log.error("[Aggregation][Error]{" + writtenIndicatorKey + "} (" + groupstr
                        + ") executeAggregationQuery : " + message.body().toString());
                log.info(aggregation.toString());
                finalHandler.handle(new JsonObject());
            }
        }
    });

    //Recurse
    if (group != null)
        for (IndicatorGroup child : group.getChildren()) {
            executeAggregationQuery(child, finalHandler);
        }
}

From source file:org.entcore.common.controller.RightsController.java

License:Open Source License

private void initRights(Map<String, SecuredAction> securedActions) {
    rights = new JsonObject();
    for (SecuredAction action : securedActions.values()) {
        if (isSharingRight(action)) {
            JsonArray a = rights.getJsonArray(action.getDisplayName());
            if (a == null) {
                a = new fr.wseduc.webutils.collections.JsonArray();
                rights.put(action.getDisplayName(), a);
            }//from  www  .  j  a v a2  s . com
            a.add(action.getName().replaceAll("\\.", "-"));
        }
    }
}