Example usage for io.vertx.core.json JsonArray add

List of usage examples for io.vertx.core.json JsonArray add

Introduction

In this page you can find the example usage for io.vertx.core.json JsonArray add.

Prototype

public JsonArray add(Object value) 

Source Link

Document

Add an Object to the JSON array.

Usage

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//from  w  w w.j av  a 2s.  co m
            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

private void deleteFiles(final JsonObject query, final String collection) {
    mongo.find(collection, query, null, new JsonObject().put("file", 1), new Handler<Message<JsonObject>>() {
        @Override// w ww.j  av  a  2s  .  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.impl.WorkspaceSearchingEvents.java

License:Open Source License

@SuppressWarnings("unchecked")
private JsonArray formatSearchResult(final JsonArray results, final JsonArray columnsHeader,
        final List<String> words, final String locale, final String userId,
        final Map<String, Map<String, String>> mapOwnerMapNameFolderId) {
    final List<String> aHeader = columnsHeader.getList();
    final JsonArray traity = new fr.wseduc.webutils.collections.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 folder = j.getString("folder", "");

            Date modified = new Date();
            try {
                modified = DateUtils.parse(j.getString("modified"), PATTERN);
            } catch (ParseException e) {
                log.error("Can't parse date from modified", e);
            }/*from www. j ava  2 s . c  o  m*/
            final String owner = j.getString("owner", "");
            final Map<String, Object> map = formatDescription(
                    j.getJsonArray("comments", new fr.wseduc.webutils.collections.JsonArray()), words, modified,
                    locale);
            jr.put(aHeader.get(0), j.getString("name"));
            jr.put(aHeader.get(1), map.get("description").toString());
            jr.put(aHeader.get(2), new JsonObject().put("$date", ((Date) map.get("modified")).getTime()));
            jr.put(aHeader.get(3), j.getString("ownerName", ""));
            jr.put(aHeader.get(4), owner);
            //default front route (no folder and the file belongs to the owner)
            String resourceURI = "/workspace/workspace";

            if (userId.equals(owner)) {
                if (!StringUtils.isEmpty(folder)) {
                    resourceURI += "#/folder/" + mapOwnerMapNameFolderId.get(owner).get(folder);
                }
            } else {
                //if there is a folder on entry file and this folder is shared
                if (!StringUtils.isEmpty(folder) && mapOwnerMapNameFolderId.containsKey(owner)
                        && mapOwnerMapNameFolderId.get(owner).containsKey(folder)) {
                    resourceURI += "#/shared/folder/" + mapOwnerMapNameFolderId.get(owner).get(folder);
                } else {
                    //only the file is shared
                    resourceURI += "#/shared";
                }
            }
            jr.put(aHeader.get(5), resourceURI);
            traity.add(jr);
        }
    }
    return traity;
}

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

License:Open Source License

private void createThumbnails(List<String> thumbs, JsonObject srcFile, final String collection,
        final String documentId, final Handler<Message<JsonObject>> callback) {
    Pattern size = Pattern.compile("([0-9]+)x([0-9]+)");
    JsonArray outputs = new fr.wseduc.webutils.collections.JsonArray();
    for (String thumb : thumbs) {
        Matcher m = size.matcher(thumb);
        if (m.matches()) {
            try {
                int width = Integer.parseInt(m.group(1));
                int height = Integer.parseInt(m.group(2));
                if (width == 0 && height == 0)
                    continue;
                JsonObject j = new JsonObject().put("dest",
                        storage.getProtocol() + "://" + storage.getBucket());
                if (width != 0) {
                    j.put("width", width);
                }/*from www.j a  v a2  s  . com*/
                if (height != 0) {
                    j.put("height", height);
                }
                outputs.add(j);
            } catch (NumberFormatException e) {
                log.error("Invalid thumbnail size.", e);
            }
        }
    }
    if (outputs.size() > 0) {
        JsonObject json = new JsonObject().put("action", "resizeMultiple")
                .put("src",
                        storage.getProtocol() + "://" + storage.getBucket() + ":" + srcFile.getString("_id"))
                .put("destinations", outputs);
        eb.send(imageResizerAddress, json, handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
            @Override
            public void handle(Message<JsonObject> event) {
                JsonObject thumbnails = event.body().getJsonObject("outputs");
                if ("ok".equals(event.body().getString("status")) && thumbnails != null) {
                    mongo.update(collection, new JsonObject().put("_id", documentId),
                            new JsonObject().put("$set", new JsonObject().put("thumbnails", thumbnails)),
                            callback);
                }
            }
        }));
    } else if (callback != null) {
        callback.handle(null);
    }
}

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  w  w w.j  a  v  a  2s .co  m
        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);
    }
}

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

License:Open Source License

private void deleteAllRevisions(final String documentId, final JsonArray alreadyDeleted) {
    final QueryBuilder builder = QueryBuilder.start("documentId").is(documentId);
    JsonObject keys = new JsonObject();

    mongo.find(DOCUMENT_REVISION_COLLECTION, MongoQueryBuilder.build(builder), new JsonObject(), keys,
            MongoDbResult.validResultsHandler(new Handler<Either<String, JsonArray>>() {
                public void handle(Either<String, JsonArray> event) {
                    if (event.isRight()) {
                        final JsonArray results = event.right().getValue();
                        final JsonArray ids = new fr.wseduc.webutils.collections.JsonArray();
                        for (Object obj : results) {
                            JsonObject json = (JsonObject) obj;
                            String id = json.getString("file");
                            if (id != null && !alreadyDeleted.contains(id)) {
                                ids.add(id);
                            }//w  w w.  j ava2 s .co m
                        }
                        storage.removeFiles(ids, new Handler<JsonObject>() {
                            public void handle(JsonObject event) {
                                if (event != null && "ok".equals(event.getString("status"))) {
                                    //Delete revisions
                                    mongo.delete(DOCUMENT_REVISION_COLLECTION, MongoQueryBuilder.build(builder),
                                            MongoDbResult.validResultHandler(
                                                    new Handler<Either<String, JsonObject>>() {
                                                        public void handle(Either<String, JsonObject> event) {
                                                            if (event.isLeft()) {
                                                                log.error(
                                                                        "[Workspace] Error deleting revisions for document "
                                                                                + documentId + " - "
                                                                                + event.left().getValue());
                                                            } else {
                                                                for (Object obj : results) {
                                                                    JsonObject result = (JsonObject) obj;
                                                                    if (!alreadyDeleted
                                                                            .contains(result.getString("file")))
                                                                        decrementStorage(result);
                                                                }
                                                            }
                                                        }
                                                    }));
                                } else {
                                    log.error("[Workspace] Error deleting revision storage files for document "
                                            + documentId + " " + ids + " - " + event.getString("message"));
                                }
                            }
                        });
                    } else {
                        log.error("[Workspace] Error finding revision for document " + documentId + " - "
                                + event.left().getValue());
                    }
                }
            }));
}

From source file:org.etourdot.vertx.marklogic.impl.MarkLogicDocumentImpl.java

License:Open Source License

void readDocuments(JsonArray docIds, List<String> categories, Handler<AsyncResult<JsonArray>> resultHandler) {
    MultiPartRequest marklogicRequest = restService.newMultipartRequest();
    marklogicRequest.get(DOCUMENTS_URL).addParam(FORMAT, "json").addParams(CATEGORY, categories);
    docIds.stream().forEach(docId -> marklogicRequest.addParam(MarkLogicConstants.URI, (String) docId));
    marklogicRequest.execute(response -> {
        SearchResponse searchResponse = new SearchResponse(response);
        searchResponse.endHandler(marklogicResponse -> {
            if (HttpResponseStatus.OK.code() == marklogicResponse.statusCode()) {
                JsonArray documents = new JsonArray();
                for (Document document : ((SearchResponse) marklogicResponse).getDocuments()) {
                    documents.add(document.toJson());
                }/*from  w  w w . j  ava2 s .  c  o m*/
                resultHandler.handle(Future.succeededFuture(documents));
            }
            if (HttpResponseStatus.NOT_FOUND.code() == marklogicResponse.statusCode()) {
                resultHandler.handle(
                        Future.failedFuture(new ResourceNotFoundException(marklogicResponse.statusMessage())));
            }
            resultHandler.handle(Future.succeededFuture());
        });
        searchResponse.process();
    });
}

From source file:org.etourdot.vertx.marklogic.impl.MarkLogicDocumentImpl.java

License:Open Source License

void saveDocuments(Documents documents, TransformOptions transformOptions,
        Handler<AsyncResult<JsonArray>> resultHandler) {
    logger.debug("Start saveDocuments " + this);
    MultiPartRequest marklogicRequest = restService.newMultipartRequest();
    marklogicRequest.post(DOCUMENTS_URL);
    documents.getDocumentsList().stream().forEach(marklogicRequest::addDocument);
    if (transformOptions != null) {
        marklogicRequest.addParam(TRANSFORM, transformOptions.getName());
        if (transformOptions.hasParameters()) {
            for (Map.Entry<String, Object> param : transformOptions.getParameters().getMap().entrySet()) {
                marklogicRequest.addParam("trans:" + param.getKey(), (String) param.getValue());
            }//ww  w.j  a  v  a 2 s .c o  m
        }
    }
    logger.debug("saveDocuments request:" + marklogicRequest);
    marklogicRequest.execute(response -> {
        BulkResponse bulkResponse = new BulkResponse(response);
        bulkResponse.endHandler(marklogicResponse -> {
            logger.debug("saveDocuments request endhandler:" + marklogicRequest);
            if (HttpResponseStatus.OK.code() == marklogicResponse.statusCode()) {
                JsonArray resultDocs = new JsonArray();
                for (Document document : ((BulkResponse) marklogicResponse).getDocuments()) {
                    resultDocs.add(document.getUri());
                }
                resultHandler.handle(Future.succeededFuture(resultDocs));
            }
        });
        bulkResponse.process();
    });
}

From source file:org.etourdot.vertx.marklogic.impl.MarkLogicSearchImpl.java

License:Open Source License

void searchDocuments(SearchOptions searchOptions, Handler<AsyncResult<JsonArray>> resultHandler) {
    requireNonNull(searchOptions, "searchOptions cannot be null");
    requireNonNull(resultHandler, "resultHandler cannot be null");

    doSeachDocPage(searchOptions, marklogicResponse -> {
        JsonArray documents = new JsonArray();
        if (HttpResponseStatus.OK.code() == marklogicResponse.statusCode()) {
            for (Document document : ((MultiPartResponse) marklogicResponse).getDocuments()) {
                documents.add(document.toJson());
            }//  www  . ja  va2 s .  co  m
            resultHandler.handle(Future.succeededFuture(documents));
        }
        if (HttpResponseStatus.NOT_FOUND.code() == marklogicResponse.statusCode()) {
            resultHandler.handle(
                    Future.failedFuture(new ResourceNotFoundException(marklogicResponse.statusMessage())));
        }
        resultHandler.handle(Future.succeededFuture());
    });
}

From source file:org.etourdot.vertx.marklogic.model.options.DatabasesOptions.java

License:Open Source License

/**
 * Range element indexes/*from www. j  av  a 2s.co  m*/
 */
public DatabasesOptions addRangeElementIndex(RangeElementIndex index) {
    if (operation == null) {
        operation = new JsonObject();
    }
    JsonArray indexes = operation.getJsonArray("range-element-indexes");
    if (indexes == null) {
        indexes = new JsonArray();
    }
    indexes.add(index.toJson());
    return this;
}