Example usage for io.vertx.core.json JsonObject getString

List of usage examples for io.vertx.core.json JsonObject getString

Introduction

In this page you can find the example usage for io.vertx.core.json JsonObject getString.

Prototype

public String getString(String key, String def) 

Source Link

Document

Like #getString(String) but specifying a default value to return if there is no entry.

Usage

From source file:org.entcore.conversation.service.impl.ConversationRepositoryEvents.java

License:Open Source License

@Override
public void deleteUsers(JsonArray users) {
    JsonArray userIds = new fr.wseduc.webutils.collections.JsonArray();
    for (Object o : users) {
        if (!(o instanceof JsonObject))
            continue;
        userIds.add(((JsonObject) o).getString("id"));
    }//from  w w  w  . j av  a2s  .  co  m

    SqlStatementsBuilder builder = new SqlStatementsBuilder();

    String unusedAttachments = "WITH unusedAtts AS ("
            + "SELECT DISTINCT attachment_id AS id FROM conversation.usermessagesattachments uma "
            + "GROUP BY attachment_id " + "HAVING every(user_id IN " + Sql.listPrepared(userIds.getList())
            + ") " + ") SELECT "
            + "CASE WHEN COUNT(id) = 0 THEN '[]' ELSE json_agg(distinct id) END AS attachmentIds "
            + "FROM unusedAtts u";
    builder.prepared(unusedAttachments, userIds);

    String deleteFolder = "DELETE FROM conversation.folders f " + "WHERE f.user_id IN "
            + Sql.listPrepared(userIds.getList());
    builder.prepared(deleteFolder, userIds);

    String deleteUserMessages = "DELETE FROM conversation.usermessages um " + "WHERE um.user_id IN "
            + Sql.listPrepared(userIds.getList());
    builder.prepared(deleteUserMessages, userIds);

    String setFrom = "UPDATE conversation.messages " + "SET " + "\"from\" = '', " + "\"fromName\" = ?, "
            + "\"displayNames\" = \"displayNames\" - (? || '$' || ? || '$ $ ') " + "WHERE \"from\" = ?";

    String setTO = "UPDATE conversation.messages " + "SET " + "\"to\" = \"to\" - ?, "
            + "\"toName\" = COALESCE(\"toName\", '[]')::jsonb || (?)::jsonb, "
            + "\"displayNames\" = \"displayNames\" - (? || '$' || ? || '$ $ ') " + "WHERE \"to\" @> (?)::jsonb";

    String setCC = "UPDATE conversation.messages " + "SET " + "\"cc\" = \"cc\" - ?, "
            + "\"ccName\" = COALESCE(\"ccName\", '[]')::jsonb || (?)::jsonb, "
            + "\"displayNames\" = \"displayNames\" - (? || '$' || ? || '$ $ ') " + "WHERE \"cc\" @> (?)::jsonb";

    for (Object o : users) {
        if (!(o instanceof JsonObject))
            continue;
        JsonObject user = (JsonObject) o;
        JsonArray paramsToCc = new fr.wseduc.webutils.collections.JsonArray();
        JsonArray paramsFrom = new fr.wseduc.webutils.collections.JsonArray();

        paramsToCc.add(user.getString("id", ""));
        paramsToCc.add(new fr.wseduc.webutils.collections.JsonArray().add(user.getString("displayName", ""))
                .toString());
        paramsToCc.add(user.getString("id", ""));
        paramsToCc.add(user.getString("displayName", ""));
        paramsToCc.add(new fr.wseduc.webutils.collections.JsonArray().add(user.getString("id", "")).toString());

        paramsFrom.add(user.getString("displayName", ""));
        paramsFrom.add(user.getString("id", ""));
        paramsFrom.add(user.getString("displayName", ""));
        paramsFrom.add(user.getString("id", ""));

        builder.prepared(setTO, paramsToCc);
        builder.prepared(setCC, paramsToCc);
        builder.prepared(setFrom, paramsFrom);
    }
    sql.transaction(builder.build(), new DeliveryOptions().setSendTimeout(timeout),
            SqlResult.validResultsHandler(new Handler<Either<String, JsonArray>>() {
                public void handle(Either<String, JsonArray> event) {
                    if (event.isLeft()) {
                        log.error("Error deleting conversation data : " + event.left().getValue());
                        return;
                    }

                    JsonArray results = event.right().getValue();
                    JsonArray attachmentIds = results.getJsonArray(0).size() > 0
                            ? new fr.wseduc.webutils.collections.JsonArray(
                                    results.getJsonArray(0).getJsonObject(0).getString("attachmentIds", "[]"))
                            : new fr.wseduc.webutils.collections.JsonArray();

                    for (Object attachmentObj : attachmentIds) {
                        final String attachmentId = (String) attachmentObj;
                        storage.removeFile(attachmentId, new Handler<JsonObject>() {
                            @Override
                            public void handle(JsonObject event) {
                                if (!"ok".equals(event.getString("status"))) {
                                    log.error("[" + ConversationRepositoryEvents.class.getSimpleName()
                                            + "] Error while tying to delete attachment file (_id: {"
                                            + attachmentId + "})");
                                }
                            }
                        });
                    }
                }
            }, "attachmentIds"));
}

From source file:org.entcore.directory.controllers.StructureController.java

License:Open Source License

@Get("/structures")
@SecuredAction("structure.list.all")
public void listStructures(final HttpServerRequest request) {
    String format = request.params().get("format");
    JsonArray fields = new fr.wseduc.webutils.collections.JsonArray().add("id").add("externalId").add("name")
            .add("UAI").add("address").add("zipCode").add("city").add("phone").add("academy");
    if ("XML".equalsIgnoreCase(format)) {
        structureService.list(fields, new Handler<Either<String, JsonArray>>() {
            @Override/*  w w w .  jav  a2s .  com*/
            public void handle(Either<String, JsonArray> event) {
                if (event.isRight()) {
                    JsonArray r = event.right().getValue();
                    Ent ent = new Ent();
                    for (Object o : r) {
                        if (!(o instanceof JsonObject))
                            continue;
                        JsonObject j = (JsonObject) o;
                        Ent.Etablissement etablissement = new Ent.Etablissement();
                        etablissement.setEtablissementId(j.getString("UAI", ""));
                        etablissement.setEtablissementUid(j.getString("UAI", ""));
                        etablissement.setCodePorteur(j.getString("academy", ""));
                        etablissement.setNomCourant(j.getString("name", ""));
                        etablissement.setAdressePlus(j.getString("address", ""));
                        etablissement.setCodePostal(j.getString("zipCode", ""));
                        etablissement.setVille(j.getString("city", ""));
                        etablissement.setTelephone(j.getString("phone", ""));
                        etablissement.setFax("");
                        ent.getEtablissement().add(etablissement);
                    }
                    try {
                        StringWriter response = new StringWriter();
                        JAXBContext context = JAXBContext.newInstance(Ent.class);
                        Marshaller marshaller = context.createMarshaller();
                        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
                        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
                        marshaller.marshal(ent, response);
                        request.response().putHeader("content-type", "application/xml");
                        request.response().end(response.toString());
                    } catch (JAXBException e) {
                        log.error(e.toString(), e);
                        request.response().setStatusCode(500);
                        request.response().end(e.getMessage());
                    }
                } else {
                    leftToResponse(request, event.left());
                }
            }
        });
    } else {
        structureService.list(fields, arrayResponseHandler(request));
    }
}

From source file:org.entcore.directory.security.AddFunctionFilter.java

License:Open Source License

@Override
protected void additionnalsChecks(HttpServerRequest resourceRequest, Binding binding, UserInfos user,
        UserInfos.Function adminLocal, final Handler<Boolean> handler) {
    bodyToJson(resourceRequest, new Handler<JsonObject>() {
        @Override/*from   w  ww . j  av a 2 s.  c o m*/
        public void handle(JsonObject event) {
            String function = event.getString("functionCode", "").trim();
            handler.handle(!function.isEmpty() && !"SUPER_ADMIN".equals(function));
        }
    });
    resourceRequest.resume();
}

From source file:org.entcore.directory.services.impl.DefaultSchoolService.java

License:Open Source License

@Override
public void massmailUsers(String structureId, JsonObject filterObj, boolean groupClasses, boolean groupChildren,
        Boolean hasMail, UserInfos userInfos, Handler<Either<String, JsonArray>> results) {

    String filter = "MATCH (s:Structure {id: {structureId}})<-[:DEPENDS]-(g:ProfileGroup)<-[:IN]-(u:User), "
            + "(g)-[:HAS_PROFILE]-(p: Profile) ";
    String condition = "";
    String optional = "OPTIONAL MATCH (s)<-[:BELONGS]-(c:Class)<-[:DEPENDS]-(:ProfileGroup)<-[:IN]-(u) "
            + "OPTIONAL MATCH (u)<-[:RELATED]-(child: User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(c) ";

    JsonObject params = new JsonObject().put("structureId", structureId);

    //Activation/*from   www . ja  v a 2  s  .c  o  m*/
    if (filterObj.containsKey("activated")) {
        String activated = filterObj.getString("activated", "false");
        if ("false".equals(activated.toLowerCase())) {
            condition = "WHERE NOT(u.activationCode IS NULL) ";
        } else if ("true".equals(activated.toLowerCase())) {
            condition = "WHERE (u.activationCode IS NULL) ";
        } else {
            condition = "WHERE 1 = 1 ";
        }
    } else {
        condition = "WHERE NOT(u.activationCode IS NULL) ";
    }

    //Profiles
    if (filterObj.getJsonArray("profiles").size() > 0) {
        condition += "AND p.name IN {profilesArray} ";
        params.put("profilesArray", filterObj.getJsonArray("profiles"));
    }

    //Levels
    if (filterObj.getJsonArray("levels").size() > 0) {
        condition += " AND u.level IN {levelsArray} ";
        params.put("levelsArray", filterObj.getJsonArray("levels"));
    }

    //Classes
    if (filterObj.getJsonArray("classes").size() > 0) {
        filter += ", (c:Class)<-[:DEPENDS]-(:ProfileGroup)<-[:IN]-(u) ";
        optional = "OPTIONAL MATCH (u)<-[:RELATED]-(child: User)-[:IN]->(:ProfileGroup)-[:DEPENDS]->(c) ";
        condition += " AND c.id IN {classesArray} ";
        params.put("classesArray", filterObj.getJsonArray("classes"));
    }

    //Email
    if (hasMail != null) {
        if (hasMail) {
            condition += " AND COALESCE(u.email, \"\") <> \"\" ";
        } else {
            condition += " AND COALESCE(u.email, \"\") = \"\" ";
        }

    }

    //Admin check
    if (!userInfos.getFunctions().containsKey(SUPER_ADMIN) && !userInfos.getFunctions().containsKey(ADMIN_LOCAL)
            && !userInfos.getFunctions().containsKey(CLASS_ADMIN)) {
        results.handle(new Either.Left<String, JsonArray>("forbidden"));
        return;
    } else if (userInfos.getFunctions().containsKey(ADMIN_LOCAL)) {
        UserInfos.Function f = userInfos.getFunctions().get(ADMIN_LOCAL);
        List<String> scope = f.getScope();
        if (scope != null && !scope.isEmpty()) {
            condition += "AND s.id IN {scope} ";
            params.put("scope", new fr.wseduc.webutils.collections.JsonArray(scope));
        }
    } else if (userInfos.getFunctions().containsKey(CLASS_ADMIN)) {
        if (filterObj.getJsonArray("classes").size() < 1) {
            results.handle(new Either.Left<String, JsonArray>("forbidden"));
            return;
        }

        UserInfos.Function f = userInfos.getFunctions().get(CLASS_ADMIN);
        List<String> scope = f.getScope();
        if (scope != null && !scope.isEmpty()) {
            condition = "AND c.id IN {scope} ";
            params.put("scope", new fr.wseduc.webutils.collections.JsonArray(scope));
        }
    }

    //With clause
    String withStr = "WITH u, p ";

    //Return clause
    String returnStr = "RETURN distinct collect(p.name)[0] as profile, "
            + "u.id as id, u.firstName as firstName, u.lastName as lastName, "
            + "u.email as email, CASE WHEN u.loginAlias IS NOT NULL THEN u.loginAlias ELSE u.login END as login, u.activationCode as activationCode ";

    if (groupClasses) {
        withStr += ", collect(distinct c.name) as classes, min(c.name) as classname, CASE count(c) WHEN 0 THEN false ELSE true END as isInClass ";
        returnStr += ", classes, classname, isInClass ";
    } else {
        withStr += ", c.name as classname, CASE count(c) WHEN 0 THEN false ELSE true END as isInClass ";
        returnStr += ", classname, isInClass ";
    }

    if (groupChildren) {
        withStr += ", CASE count(child) WHEN 0 THEN null ELSE collect(distinct {firstName: child.firstName, lastName: child.lastName, classname: c.name}) END as children ";
        returnStr += ", filter(c IN children WHERE not(c.firstName is null)) as children ";
    } else {
        if (groupClasses) {
            withStr = "WITH u, p, c, " + "CASE count(child) WHEN 0 THEN null "
                    + "ELSE {firstName: child.firstName, lastName: child.lastName, classname: c.name} "
                    + "END as child " + withStr + ", child ";
        } else {
            withStr += ", CASE count(child) WHEN 0 THEN null ELSE {firstName: child.firstName, lastName: child.lastName } END as child ";
        }
        returnStr += ", child ";
    }

    //Order by
    String sort = "ORDER BY ";
    for (Object sortObj : filterObj.getJsonArray("sort")) {
        String sortstr = (String) sortObj;
        sort += sortstr + ",";
    }
    sort += "lastName";

    String query = filter + condition + optional + withStr + returnStr + sort;

    neo.execute(query.toString(), params, validResultHandler(results));
}

From source file:org.entcore.directory.services.impl.DefaultUserBookService.java

License:Open Source License

@Override
public void update(String userId, JsonObject userBook, final Handler<Either<String, JsonObject>> result) {
    JsonObject u = Utils.validAndGet(userBook, UPDATE_USERBOOK_FIELDS, Collections.<String>emptyList());
    if (Utils.defaultValidationError(u, result, userId))
        return;//from  w  ww.  j a  v  a 2 s. c  o  m
    // OVERRIDE AVATAR URL
    Optional<String> pictureId = getPictureIdForUserbook(userBook);
    if (pictureId.isPresent()) {
        String fileId = avatarFileNameFromUserId(userId, Optional.empty());
        u.put("picture", "/userbook/avatar/" + fileId);
    }

    StatementsBuilder b = new StatementsBuilder();
    String query = "MATCH (u:`User` { id : {id}})-[:USERBOOK]->(ub:UserBook) WITH ub.picture as oldpic,ub,u SET "
            + nodeSetPropertiesFromJson("ub", u);
    query += " RETURN oldpic,ub.picture as picture";
    boolean updateUserBook = u.size() > 0;
    if (updateUserBook) {
        b.add(query, u.put("id", userId));
    }
    String q2 = "MATCH (u:`User` { id : {id}})-[:USERBOOK]->(ub:UserBook)"
            + "-[:PUBLIC|PRIVE]->(h:`Hobby` { category : {category}}) " + "SET h.values = {values} ";
    JsonArray hobbies = userBook.getJsonArray("hobbies");
    if (hobbies != null) {
        for (Object o : hobbies) {
            if (!(o instanceof JsonObject))
                continue;
            JsonObject j = (JsonObject) o;
            b.add(q2, j.put("id", userId));
        }
    }
    neo.executeTransaction(b.build(), null, true, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> r) {
            if ("ok".equals(r.body().getString("status"))) {
                if (updateUserBook) {
                    JsonArray results = r.body().getJsonArray("results", new JsonArray());
                    JsonArray firstStatement = results.getJsonArray(0);
                    if (firstStatement != null && firstStatement.size() > 0) {
                        JsonObject object = firstStatement.getJsonObject(0);
                        String picture = object.getString("picture", "");
                        cacheAvatarFromUserBook(userId, pictureId, StringUtils.isEmpty(picture))
                                .setHandler(e -> {
                                    if (e.succeeded()) {
                                        result.handle(new Either.Right<String, JsonObject>(new JsonObject()));
                                    } else {
                                        result.handle(new Either.Left<String, JsonObject>(
                                                r.body().getString("message", "update.error")));
                                    }
                                });
                    }
                } else {
                    result.handle(new Either.Right<String, JsonObject>(new JsonObject()));
                }
            } else {
                result.handle(
                        new Either.Left<String, JsonObject>(r.body().getString("message", "update.error")));
            }
        }
    });
}

From source file:org.entcore.feeder.csv.CsvFeeder.java

License:Open Source License

protected static String getHashMapping(JsonObject props, String c, Structure structure, long seed) {
    String mapping = structure.getExternalId() + props.getString("surname", "")
            + props.getString("lastName", "") + props.getString("firstName", "") + props.getString("email", "")
            + props.getString("title", "") + props.getString("homePhone", "") + props.getString("mobile", "")
            + c + seed;//w  ww .  ja v  a  2s .c  om
    try {
        return Hash.sha1(mapping.getBytes("UTF-8"));
    } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
        log.error(e.getMessage(), e);
    }
    return null;
}