Example usage for io.vertx.core.eventbus Message body

List of usage examples for io.vertx.core.eventbus Message body

Introduction

In this page you can find the example usage for io.vertx.core.eventbus Message body.

Prototype

@CacheReturn
T body();

Source Link

Document

The body of the message.

Usage

From source file:org.entcore.workspace.service.impl.DefaultFolderService.java

License:Open Source License

public void rename(String id, final String newName, final UserInfos owner,
        final Handler<Either<String, JsonObject>> result) {
    if (owner == null) {
        result.handle(new Either.Left<String, JsonObject>("workspace.invalid.user"));
        return;/*www  .j ava2  s.c o  m*/
    }
    if (id == null || id.trim().isEmpty()) {
        result.handle(new Either.Left<String, JsonObject>("workspace.folder.not.found"));
        return;
    }

    final QueryBuilder query = QueryBuilder.start("_id").is(id).put("owner").is(owner.getUserId()).and("file")
            .exists(false);
    final JsonObject keys = new JsonObject().put("folder", 1).put("name", 1);

    Handler<Message<JsonObject>> folderHandler = new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            final String folder = event.body().getJsonObject("result", new JsonObject()).getString("folder");
            final String newFolderPath = folder.lastIndexOf("_") < 0 ? newName
                    : folder.substring(0, folder.lastIndexOf("_") + 1) + newName;

            //3 - Find & rename children
            final Handler<Message<JsonObject>> renameChildren = new Handler<Message<JsonObject>>() {
                public void handle(Message<JsonObject> event) {

                    if (!"ok".equals(event.body().getString("status"))) {
                        result.handle(Utils.validResult(event));
                        return;
                    }

                    QueryBuilder targetQuery = QueryBuilder.start("owner").is(owner.getUserId());
                    targetQuery.or(
                            QueryBuilder.start("folder")
                                    .regex(Pattern.compile("^" + Pattern.quote(folder) + "($|_)")).get(),
                            QueryBuilder.start("old-folder")
                                    .regex(Pattern.compile("^" + Pattern.quote(folder) + "($|_)")).get());

                    mongo.find(DOCUMENTS_COLLECTION, MongoQueryBuilder.build(targetQuery),
                            new Handler<Message<JsonObject>>() {
                                @Override
                                public void handle(Message<JsonObject> d) {
                                    JsonArray children = d.body().getJsonArray("results",
                                            new fr.wseduc.webutils.collections.JsonArray());
                                    if ("ok".equals(d.body().getString("status")) && children.size() > 0) {
                                        final AtomicInteger remaining = new AtomicInteger(children.size());
                                        final AtomicInteger count = new AtomicInteger(0);

                                        Handler<Message<JsonObject>> recursiveHandler = new Handler<Message<JsonObject>>() {
                                            @Override
                                            public void handle(Message<JsonObject> res) {
                                                count.getAndAdd(res.body().getInteger("number", 0));
                                                if (remaining.decrementAndGet() == 0) {
                                                    res.body().put("number", count.get());
                                                    result.handle(Utils.validResult(res));
                                                }
                                            }
                                        };

                                        for (Object o : children) {
                                            if (!(o instanceof JsonObject)) {
                                                remaining.decrementAndGet();
                                                continue;
                                            }
                                            JsonObject child = (JsonObject) o;

                                            String childFolder = child.getString("folder");
                                            String childOldFolder = child.getString("old-folder");
                                            String id = child.getString("_id");

                                            JsonObject updateMatcher = MongoQueryBuilder
                                                    .build(QueryBuilder.start("_id").is(id));
                                            MongoUpdateBuilder updateModifier = new MongoUpdateBuilder();
                                            if (childOldFolder != null || childFolder.equals("Trash")) {
                                                String newPath = childOldFolder.lastIndexOf("_") < 0 ? newName
                                                        : childOldFolder.replaceFirst(Pattern.quote(folder),
                                                                Matcher.quoteReplacement(newFolderPath));
                                                updateModifier.set("old-folder", newPath);
                                            } else {
                                                String newPath = childFolder.lastIndexOf("_") < 0 ? newName
                                                        : childFolder.replaceFirst(Pattern.quote(folder),
                                                                Matcher.quoteReplacement(newFolderPath));
                                                updateModifier.set("folder", newPath);
                                            }

                                            mongo.update(DOCUMENTS_COLLECTION, updateMatcher,
                                                    updateModifier.build(), recursiveHandler);
                                        }

                                    } else {
                                        result.handle(Utils.validResult(d));
                                    }
                                }
                            });
                }
            };

            //2 - Rename target folder
            mongo.update(DOCUMENTS_COLLECTION, MongoQueryBuilder.build(query), new JsonObject(
                    "{ \"$set\": { \"folder\": \"" + newFolderPath + "\", \"name\": \"" + newName + "\" }}"),
                    renameChildren);
        }
    };

    //1 - Find the folder
    mongo.findOne(DOCUMENTS_COLLECTION, MongoQueryBuilder.build(query), keys, folderHandler);
}

From source file:org.entcore.workspace.service.impl.DefaultQuotaService.java

License:Open Source License

@Override
public void incrementStorage(String userId, Long size, int threshold,
        final Handler<Either<String, JsonObject>> handler) {
    JsonObject params = new JsonObject().put("size", size).put("threshold", threshold);
    if (!neo4jPlugin) {
        String query = "MATCH (u:UserBook { userid : {userId}}) " + "SET u.storage = u.storage + {size} "
                + "WITH u, u.alertSize as oldAlert "
                + "SET u.alertSize = ((100.0 * u.storage / u.quota) > {threshold}) "
                + "RETURN u.storage as storage, (u.alertSize = true AND oldAlert <> u.alertSize) as notify ";
        params.put("userId", userId);
        neo4j.execute(query, params, validUniqueResultHandler(handler));
    } else {/*from www.j a  va 2 s . c o m*/
        neo4j.unmanagedExtension("put", "/entcore/quota/storage/" + userId, params.encode(),
                new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> event) {
                        if ("ok".equals(event.body().getString("status"))) {
                            handler.handle(new Either.Right<String, JsonObject>(
                                    new JsonObject(event.body().getString("result"))));
                        } else {
                            handler.handle(
                                    new Either.Left<String, JsonObject>(event.body().getString("message")));
                        }
                    }
                });
    }
}

From source file:org.entcore.workspace.service.impl.DefaultQuotaService.java

License:Open Source License

@Override
public void init(final String userId) {
    String query = "MATCH (n:User {id : {userId}})-[:IN]->(:ProfileGroup)-[:HAS_PROFILE]->(p:Profile) "
            + "WITH n, sum(CASE WHEN has(p.defaultQuota) THEN p.defaultQuota ELSE 104857600 END) as quota "
            + "MERGE (m:UserBook { userid : {userId}}) "
            + "SET m.quota = quota, m.storage = 0, m.alertSize = false " + "WITH m, n "
            + "CREATE UNIQUE n-[:USERBOOK]->m";
    JsonObject params = new JsonObject().put("userId", userId);
    neo4j.execute(query, params, new Handler<Message<JsonObject>>() {
        @Override/*from   w  w w. j  av  a  2s  . co m*/
        public void handle(Message<JsonObject> message) {
            if (!"ok".equals(message.body().getString("status"))) {
                log.error("Error initializing quota for user " + userId + " : "
                        + message.body().getString("message"));
            }
        }
    });
}

From source file:org.entcore.workspace.service.impl.WorkspaceRepositoryEvents.java

License:Open Source License

@Override
public void exportResources(final String exportId, final String userId, JsonArray g, final String exportPath,
        final String locale, String host, final Handler<Boolean> handler) {
    log.debug("Workspace export resources.");
    List<DBObject> groups = new ArrayList<>();
    groups.add(QueryBuilder.start("userId").is(userId).get());
    for (Object o : g) {
        if (!(o instanceof String))
            continue;
        String gpId = (String) o;
        groups.add(QueryBuilder.start("groupId").is(gpId).get());
    }/*  w  w  w . j  a va2  s.  co  m*/
    QueryBuilder b = new QueryBuilder().or(QueryBuilder.start("owner").is(userId).get(),
            QueryBuilder.start("shared")
                    .elemMatch(new QueryBuilder().or(groups.toArray(new DBObject[groups.size()])).get()).get(),
            QueryBuilder.start("old_shared")
                    .elemMatch(new QueryBuilder().or(groups.toArray(new DBObject[groups.size()])).get()).get())
            .put("file").exists(true);
    final JsonObject keys = new JsonObject().put("file", 1).put("name", 1);
    final JsonObject query = MongoQueryBuilder.build(b);
    mongo.find(DocumentDao.DOCUMENTS_COLLECTION, query, null, keys, new Handler<Message<JsonObject>>() {
        @Override
        public void handle(Message<JsonObject> event) {
            final AtomicBoolean exported = new AtomicBoolean(false);
            final JsonArray documents = event.body().getJsonArray("results");
            if ("ok".equals(event.body().getString("status")) && documents != null) {
                QueryBuilder b = QueryBuilder.start("to").is(userId).put("file").exists(true);
                final JsonObject q = MongoQueryBuilder.build(b);
                mongo.find(RackDao.RACKS_COLLECTION, q, null, keys, new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> event) {
                        JsonArray racks = event.body().getJsonArray("results");
                        if ("ok".equals(event.body().getString("status")) && racks != null) {
                            final Set<String> usedFileName = new HashSet<>();
                            final JsonObject alias = new JsonObject();
                            final String[] ids = new String[racks.size() + documents.size()];
                            for (int i = 0; i < documents.size(); i++) {
                                JsonObject j = documents.getJsonObject(i);
                                ids[i] = j.getString("file");
                                String fileName = j.getString("name");
                                if (fileName != null && fileName.contains("/")) {
                                    fileName = fileName.replaceAll("/", "-");
                                }
                                if (usedFileName.add(fileName)) {
                                    alias.put(ids[i], fileName);
                                } else {
                                    alias.put(ids[i], ids[i] + "_" + fileName);
                                }
                            }
                            for (int i = 0; i < racks.size(); i++) {
                                JsonObject j = racks.getJsonObject(i);
                                ids[i] = j.getString("file");
                                String fileName = j.getString("name");
                                if (fileName != null && fileName.contains("/")) {
                                    fileName = fileName.replaceAll("/", "-");
                                }
                                if (usedFileName.add(fileName)) {
                                    alias.put(ids[i], fileName);
                                } else {
                                    alias.put(ids[i], ids[i] + "_" + fileName);
                                }
                            }
                            exportFiles(alias, ids, exportPath, locale, exported, handler);
                        } else {
                            log.error("Rack " + q.encode() + " - " + event.body().getString("message"));
                            handler.handle(exported.get());
                        }
                    }
                });
            } else {
                log.error("Documents " + query.encode() + " - " + event.body().getString("message"));
                handler.handle(exported.get());
            }
        }
    });
}

From source file:org.entcore.workspace.service.impl.WorkspaceRepositoryEvents.java

License:Open Source License

@Override
public void deleteGroups(JsonArray groups) {
    for (Object o : groups) {
        if (!(o instanceof JsonObject))
            continue;
        final JsonObject j = (JsonObject) o;
        final JsonObject query = MongoQueryBuilder
                .build(QueryBuilder.start("shared.groupId").is(j.getString("group")));
        final Handler<Message<JsonObject>> handler = new Handler<Message<JsonObject>>() {
            @Override// w  w w .j ava2  s.c om
            public void handle(Message<JsonObject> event) {
                if (!"ok".equals(event.body().getString("status"))) {
                    log.error("Error updating documents with group " + j.getString("group") + " : "
                            + event.body().encode());
                } else {
                    log.info("Documents with group " + j.getString("group") + " updated : "
                            + event.body().getInteger("number"));
                }
            }
        };
        if (shareOldGroupsToUsers) {
            JsonArray userShare = new fr.wseduc.webutils.collections.JsonArray();
            for (Object u : j.getJsonArray("users")) {
                JsonObject share = new JsonObject().put("userId", u.toString())
                        .put("org-entcore-workspace-service-WorkspaceService|copyDocuments", true)
                        .put("org-entcore-workspace-service-WorkspaceService|getDocument", true);
                userShare.add(share);
            }
            JsonObject update = new JsonObject().put("$addToSet",
                    new JsonObject().put("shared", new JsonObject().put("$each", userShare)));
            mongo.update(DocumentDao.DOCUMENTS_COLLECTION, query, update, false, true, handler);
        } else {
            final MongoUpdateBuilder update = new MongoUpdateBuilder()
                    .pull("shared", new JsonObject().put("groupId", j.getString("group")))
                    .addToSet("old_shared", new JsonObject().put("groupId", j.getString("group")));
            mongo.update(DocumentDao.DOCUMENTS_COLLECTION, query, update.build(), false, true, handler);
        }
    }
}

From source file:org.entcore.workspace.service.impl.WorkspaceRepositoryEvents.java

License:Open Source License

@Override
public void deleteUsers(JsonArray users) {
    String[] userIds = new String[users.size()];
    for (int i = 0; i < users.size(); i++) {
        JsonObject j = users.getJsonObject(i);
        String id = j.getString("id");
        userIds[i] = id;//from   ww  w . java  2  s .co  m
    }
    final JsonObject queryDocuments = MongoQueryBuilder.build(QueryBuilder.start("owner").in(userIds));
    deleteFiles(queryDocuments, DocumentDao.DOCUMENTS_COLLECTION);
    final JsonObject queryRacks = MongoQueryBuilder.build(QueryBuilder.start("to").in(userIds));
    deleteFiles(queryRacks, RackDao.RACKS_COLLECTION);
    deleteFiles(queryDocuments, Workspace.REVISIONS_COLLECTION);

    final JsonObject query = MongoQueryBuilder.build(QueryBuilder.start("shared.userId").in(userIds));
    JsonObject update = new JsonObject().put("$pull",
            new JsonObject().put("shared", MongoQueryBuilder.build(QueryBuilder.start("userId").in(userIds))));
    mongo.update(DocumentDao.DOCUMENTS_COLLECTION, query, update, false, true,
            new Handler<Message<JsonObject>>() {
                @Override
                public void handle(Message<JsonObject> event) {
                    if (!"ok".equals(event.body().getString("status"))) {
                        log.error(event.body().getString("message"));
                    }
                }
            });
}

From source file:org.entcore.workspace.service.impl.WorkspaceRepositoryEvents.java

License:Open Source License

private void deleteFiles(final JsonObject query, final String collection) {
    mongo.find(collection, query, null, new JsonObject().put("file", 1), new Handler<Message<JsonObject>>() {
        @Override/*from  w ww. j av  a2 s. c o m*/
        public void handle(Message<JsonObject> res) {
            String status = res.body().getString("status");
            JsonArray results = res.body().getJsonArray("results");
            if ("ok".equals(status) && results != null && results.size() > 0) {
                JsonArray fileIds = new fr.wseduc.webutils.collections.JsonArray();
                for (Object o : results) {
                    if (o instanceof JsonObject) {
                        fileIds.add(((JsonObject) o).getString("file"));
                    }
                }
                storage.removeFiles(fileIds, new Handler<JsonObject>() {
                    @Override
                    public void handle(JsonObject event) {
                        if (event == null) {
                            log.error("Error deleting files ");
                        } else if (!"ok".equals(event.getString("status"))) {
                            log.error("Error deleting files : " + event.encode());
                        }
                    }
                });
                mongo.delete(collection, query, new Handler<Message<JsonObject>>() {
                    @Override
                    public void handle(Message<JsonObject> event) {
                        if (!"ok".equals(event.body().getString("status"))) {
                            log.error("Error deleting documents : " + event.body().encode());
                        } else {
                            log.info("Documents deleted : " + event.body().getInteger("number"));
                        }
                    }
                });
            }
        }
    });
}

From source file:org.entcore.workspace.service.WorkspaceService.java

License:Open Source License

@Put("/share/json/:id")
@SecuredAction(value = "workspace.manager", type = ActionType.RESOURCE)
public void shareJsonSubmit(final HttpServerRequest request) {
    final String id = request.params().get("id");
    if (id == null || id.trim().isEmpty()) {
        badRequest(request);/*from   w w w .j a  v  a2s .  c o m*/
        return;
    }
    request.setExpectMultipart(true);
    request.endHandler(new Handler<Void>() {
        @Override
        public void handle(Void v) {
            final List<String> actions = request.formAttributes().getAll("actions");
            final String groupId = request.formAttributes().get("groupId");
            final String userId = request.formAttributes().get("userId");
            if (actions == null || actions.isEmpty()) {
                badRequest(request);
                return;
            }
            getUserInfos(eb, request, new Handler<UserInfos>() {
                @Override
                public void handle(final UserInfos user) {
                    mongo.findOne(DocumentDao.DOCUMENTS_COLLECTION, new JsonObject().put("_id", id),
                            new Handler<Message<JsonObject>>() {
                                @Override
                                public void handle(Message<JsonObject> event) {
                                    if ("ok".equals(event.body().getString("status"))
                                            && event.body().getJsonObject("result") != null) {
                                        final boolean isFolder = !event.body().getJsonObject("result")
                                                .containsKey("file");
                                        if (isFolder)
                                            shareFolderAction(request, id, user, actions, groupId, userId,
                                                    false);
                                        else
                                            shareFileAction(request, id, user, actions, groupId, userId, false);
                                    } else {
                                        unauthorized(request);
                                    }
                                }
                            });
                }
            });
        }
    });
}

From source file:org.entcore.workspace.service.WorkspaceService.java

License:Open Source License

@Put("/share/remove/:id")
@SecuredAction(value = "workspace.manager", type = ActionType.RESOURCE)
public void removeShare(final HttpServerRequest request) {
    final String id = request.params().get("id");
    if (id == null || id.trim().isEmpty()) {
        badRequest(request);//from   www.  j a va2s .  c  o  m
        return;
    }

    request.setExpectMultipart(true);
    request.endHandler(new Handler<Void>() {
        @Override
        public void handle(Void v) {
            final List<String> actions = request.formAttributes().getAll("actions");
            final String groupId = request.formAttributes().get("groupId");
            final String userId = request.formAttributes().get("userId");
            getUserInfos(eb, request, new Handler<UserInfos>() {
                @Override
                public void handle(final UserInfos user) {
                    if (user != null) {
                        mongo.findOne(DocumentDao.DOCUMENTS_COLLECTION, new JsonObject().put("_id", id),
                                new Handler<Message<JsonObject>>() {
                                    @Override
                                    public void handle(Message<JsonObject> event) {
                                        if ("ok".equals(event.body().getString("status"))
                                                && event.body().getJsonObject("result") != null) {
                                            final boolean isFolder = !event.body().getJsonObject("result")
                                                    .containsKey("file");
                                            if (isFolder)
                                                shareFolderAction(request, id, user, actions, groupId, userId,
                                                        true);
                                            else
                                                shareFileAction(request, id, user, actions, groupId, userId,
                                                        true);
                                        } else {
                                            unauthorized(request);
                                        }
                                    }
                                });
                    } else {
                        unauthorized(request);
                    }
                }
            });
        }
    });
}

From source file:org.entcore.workspace.service.WorkspaceService.java

License:Open Source License

@Put("/share/resource/:id")
@SecuredAction(value = "workspace.manager", type = ActionType.RESOURCE)
public void shareResource(final HttpServerRequest request) {
    final String id = request.params().get("id");
    request.pause();/*from w w  w . j  ava  2s.  com*/
    getUserInfos(eb, request, user -> {
        if (user != null) {
            mongo.findOne(DocumentDao.DOCUMENTS_COLLECTION, new JsonObject().put("_id", id),
                    new Handler<Message<JsonObject>>() {
                        @Override
                        public void handle(Message<JsonObject> event) {
                            if ("ok".equals(event.body().getString("status"))
                                    && event.body().getJsonObject("result") != null) {
                                request.resume();
                                final JsonObject res = event.body().getJsonObject("result");
                                final boolean isFolder = !res.containsKey("file");
                                if (isFolder)
                                    shareFolderAction(request, id, user, res);
                                else
                                    shareFileAction(request, id, user, res);
                            } else {
                                unauthorized(request);
                            }
                        }
                    });
        } else {
            badRequest(request, "invalid.user");
        }
    });

}