List of usage examples for io.vertx.core.json JsonArray add
public JsonArray add(Object value)
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("\\.", "-")); } } }