List of usage examples for io.vertx.core.json JsonObject getLong
public Long getLong(String key, Long def)
From source file:org.entcore.workspace.service.WorkspaceService.java
License:Open Source License
private void emptySize(final String userId, final Handler<Long> emptySizeHandler) { quotaService.quotaAndUsage(userId, new Handler<Either<String, JsonObject>>() { @Override/*from w w w. j a v a 2 s.co m*/ public void handle(Either<String, JsonObject> r) { if (r.isRight()) { JsonObject j = r.right().getValue(); if (j != null) { long quota = j.getLong("quota", 0l); long storage = j.getLong("storage", 0l); for (String attr : j.fieldNames()) { UserUtils.addSessionAttribute(eb, userId, attr, j.getLong(attr), null); } emptySizeHandler.handle(quota - storage); } } } }); }
From source file:org.entcore.workspace.service.WorkspaceService.java
License:Open Source License
private void copyFiles(final HttpServerRequest request, final String collection, final String owner, final UserInfos user) { String ids = request.params().get("ids"); // TODO refactor with json in request body String folder2 = getOrElse(request.params().get("folder"), ""); try {/*from ww w.ja v a2 s.c om*/ folder2 = URLDecoder.decode(folder2, "UTF-8"); } catch (UnsupportedEncodingException e) { log.warn(e.getMessage(), e); } final String folder = folder2; if (ids != null && !ids.trim().isEmpty()) { JsonArray idsArray = new fr.wseduc.webutils.collections.JsonArray(Arrays.asList(ids.split(","))); String criteria = "{ \"_id\" : { \"$in\" : " + idsArray.encode() + "}"; if (owner != null) { criteria += ", \"to\" : \"" + owner + "\""; } criteria += "}"; mongo.find(collection, new JsonObject(criteria), new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> r) { JsonObject src = r.body(); if ("ok".equals(src.getString("status")) && src.getJsonArray("results") != null) { final JsonArray origs = src.getJsonArray("results"); final JsonArray insert = new fr.wseduc.webutils.collections.JsonArray(); final AtomicInteger number = new AtomicInteger(origs.size()); emptySize(user, new Handler<Long>() { @Override public void handle(Long emptySize) { long size = 0; for (Object o : origs) { if (!(o instanceof JsonObject)) continue; JsonObject metadata = ((JsonObject) o).getJsonObject("metadata"); if (metadata != null) { size += metadata.getLong("size", 0l); } } if (size > emptySize) { badRequest(request, "files.too.large"); return; } for (Object o : origs) { JsonObject orig = (JsonObject) o; final JsonObject dest = orig.copy(); String now = MongoDb.formatDate(new Date()); dest.remove("_id"); dest.remove("protected"); dest.remove("comments"); dest.put("application", WORKSPACE_NAME); if (owner != null) { dest.put("owner", owner); dest.put("ownerName", dest.getString("toName")); dest.remove("to"); dest.remove("from"); dest.remove("toName"); dest.remove("fromName"); } else if (user != null) { dest.put("owner", user.getUserId()); dest.put("ownerName", user.getUsername()); dest.put("shared", new fr.wseduc.webutils.collections.JsonArray()); } dest.put("_id", UUID.randomUUID().toString()); dest.put("created", now); dest.put("modified", now); if (folder != null && !folder.trim().isEmpty()) { dest.put("folder", folder); } else { dest.remove("folder"); } insert.add(dest); final String filePath = orig.getString("file"); if ((owner != null || user != null) && folder != null && !folder.trim().isEmpty()) { //If the document has a new parent folder, replicate sharing rights String parentName, parentFolder; if (folder.lastIndexOf('_') < 0) { parentName = folder; parentFolder = folder; } else if (filePath != null) { String[] splittedPath = folder.split("_"); parentName = splittedPath[splittedPath.length - 1]; parentFolder = folder; } else { String[] splittedPath = folder.split("_"); parentName = splittedPath[splittedPath.length - 2]; parentFolder = folder.substring(0, folder.lastIndexOf("_")); } folderService.getParentRights(parentName, parentFolder, owner, new Handler<Either<String, JsonArray>>() { public void handle(Either<String, JsonArray> event) { final JsonArray parentSharedRights = event.right() == null || event.isLeft() ? null : event.right().getValue(); if (parentSharedRights != null && parentSharedRights.size() > 0) dest.put("shared", parentSharedRights); if (filePath != null) { storage.copyFile(filePath, new Handler<JsonObject>() { @Override public void handle(JsonObject event) { if (event != null && "ok" .equals(event.getString("status"))) { dest.put("file", event.getString("_id")); persist(insert, number.decrementAndGet()); } } }); } else { persist(insert, number.decrementAndGet()); } } }); } else if (filePath != null) { storage.copyFile(filePath, new Handler<JsonObject>() { @Override public void handle(JsonObject event) { if (event != null && "ok".equals(event.getString("status"))) { dest.put("file", event.getString("_id")); persist(insert, number.decrementAndGet()); } } }); } else { persist(insert, number.decrementAndGet()); } } } }); } else { renderJson(request, src, 404); } } private void persist(final JsonArray insert, int remains) { if (remains == 0) { mongo.insert(DocumentDao.DOCUMENTS_COLLECTION, insert, new Handler<Message<JsonObject>>() { @Override public void handle(Message<JsonObject> inserted) { if ("ok".equals(inserted.body().getString("status"))) { incrementStorage(insert); for (Object obj : insert) { JsonObject json = (JsonObject) obj; createRevision(json.getString("_id"), json.getString("file"), json.getString("name"), json.getString("owner"), json.getString("owner"), json.getString("ownerName"), json.getJsonObject("metadata")); } renderJson(request, inserted.body()); } else { renderError(request, inserted.body()); } } }); } } }); } else { badRequest(request); } }