List of usage examples for io.vertx.core.eventbus Message body
@CacheReturn T body();
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"); } }); }