Example usage for io.vertx.core.file FileSystem deleteRecursive

List of usage examples for io.vertx.core.file FileSystem deleteRecursive

Introduction

In this page you can find the example usage for io.vertx.core.file FileSystem deleteRecursive.

Prototype

@Fluent
FileSystem deleteRecursive(String path, boolean recursive, Handler<AsyncResult<Void>> handler);

Source Link

Document

Deletes the file represented by the specified path , asynchronously.

Usage

From source file:org.entcore.conversation.controllers.ConversationController.java

License:Open Source License

private void zipAllAttachments(final HttpServerRequest request, JsonArray files) {
    JsonObject tmp;//from  w  w  w  . j  a  v  a  2  s.c om
    final FileSystem fs = vertx.fileSystem();
    final List<String> fileIds = new ArrayList<>();
    final JsonObject aliasFileName = new JsonObject();
    final String zipDownloadName = I18n.getInstance().translate("attachments", I18n.DEFAULT_DOMAIN,
            I18n.acceptLanguage(request)) + ".zip";
    final String zipDirectory = exportPath + File.separator + UUID.randomUUID().toString();

    for (Object file : files) {
        tmp = (JsonObject) file;
        fileIds.add(tmp.getString("id"));
        aliasFileName.put(tmp.getString("id"), StringUtils.stripAccents(tmp.getString("filename")));
    }

    fs.mkdirs(zipDirectory, new Handler<AsyncResult<Void>>() {

        private void delete(final String path) {
            fs.deleteRecursive(path, true, new Handler<AsyncResult<Void>>() {
                @Override
                public void handle(AsyncResult<Void> event) {
                    if (event.failed())
                        log.error("[Conversation] Error deleting  : " + path, event.cause());
                }
            });
        }

        @Override
        public void handle(AsyncResult<Void> event) {
            if (event.succeeded()) {
                final String zipfile = zipDirectory + ".zip";

                storage.writeToFileSystem(fileIds.toArray(new String[0]), zipDirectory, aliasFileName,
                        new Handler<JsonObject>() {
                            @Override
                            public void handle(JsonObject event) {
                                if (!"ok".equals(event.getString("status"))) {
                                    log.error("[Conversation] Can't write to zip directory : "
                                            + event.getString("message"));
                                    delete(zipDirectory);
                                    badRequest(request);

                                } else {
                                    Zip.getInstance().zipFolder(zipDirectory, zipfile, true,
                                            Deflater.NO_COMPRESSION, new Handler<Message<JsonObject>>() {
                                                @Override
                                                public void handle(Message<JsonObject> event) {
                                                    if (!"ok".equals(event.body().getString("status"))) {
                                                        log.error("[Conversation] Zip folder " + zipDirectory
                                                                + " error : "
                                                                + event.body().getString("message"));
                                                        delete(zipDirectory);
                                                        badRequest(request);
                                                    } else {
                                                        final HttpServerResponse resp = request.response();
                                                        resp.putHeader("Content-Disposition",
                                                                "attachment; filename=\"" + zipDownloadName
                                                                        + "\"");
                                                        resp.putHeader("Content-Type",
                                                                "application/zip; name=\"\" + zipDownloadName + \"\"");
                                                        resp.sendFile(zipfile,
                                                                new Handler<AsyncResult<Void>>() {
                                                                    public void handle(
                                                                            AsyncResult<Void> event) {
                                                                        if (event.failed())
                                                                            log.error(
                                                                                    "Error can't send  the file: ",
                                                                                    event.cause());
                                                                        delete(zipfile);
                                                                    }
                                                                });
                                                    }
                                                }
                                            });
                                }
                            }
                        });
            }
        }
    });
}

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

License:Open Source License

@Override
public void handle(Long event) {
    final FileSystem fs = vertx.fileSystem();
    fs.readDir(path, ".*.zip", new Handler<AsyncResult<List<String>>>() {
        @Override/*  w w w . jav a 2s  .c  om*/
        public void handle(final AsyncResult<List<String>> event) {
            if (event.succeeded()) {
                Collections.sort(event.result());
                final Handler[] handlers = new Handler[event.result().size() + 1];
                handlers[handlers.length - 1] = new Handler<Void>() {
                    @Override
                    public void handle(Void v) {
                        postImport.execute();
                    }
                };
                for (int i = event.result().size() - 1; i >= 0; i--) {
                    final int j = i;
                    handlers[i] = new Handler<Void>() {
                        @Override
                        public void handle(Void v) {
                            final String file = event.result().get(j);
                            log.info("Importing file : " + file);
                            Matcher matcher;
                            Matcher nameMatcher;
                            if (file != null && (matcher = UAI_PATTERN.matcher(file)).find()
                                    && (nameMatcher = namePattern.matcher(file)).find()) {
                                final String uai = matcher.group(1);
                                final String structureName = nameMatcher.group(1);
                                TransactionManager.getNeo4jHelper().execute(
                                        "MATCH (s:Structure {UAI:{uai}}) return s.externalId as externalId",
                                        new JsonObject().put("uai", uai), new Handler<Message<JsonObject>>() {
                                            @Override
                                            public void handle(Message<JsonObject> event) {
                                                final String structureExternalId;
                                                JsonArray res = event.body().getJsonArray("result");
                                                if ("ok".equals(event.body().getString("status"))
                                                        && res.size() > 0) {
                                                    structureExternalId = res.getJsonObject(0)
                                                            .getString("externalId");
                                                } else {
                                                    structureExternalId = null;
                                                }
                                                final String parentDir = path + File.separator
                                                        + UUID.randomUUID().toString();
                                                final String dirName = parentDir + File.separator
                                                        + structureName
                                                        + (structureExternalId != null
                                                                ? "@" + structureExternalId
                                                                : "")
                                                        + "_" + uai;
                                                fs.mkdirs(dirName, new Handler<AsyncResult<Void>>() {
                                                    @Override
                                                    public void handle(AsyncResult<Void> event) {
                                                        try {
                                                            FileUtils.unzip(file.replaceAll("\\s", "%20"),
                                                                    dirName);
                                                            moveCsvFiles(structureExternalId, fs, dirName,
                                                                    parentDir, handlers, j);
                                                        } catch (IOException e) {
                                                            fs.deleteRecursive(parentDir, true, null);
                                                            log.error("Error unzip : " + file, e);
                                                            handlers[j + 1].handle(null);
                                                        }
                                                    }
                                                });
                                            }
                                        });
                            } else {
                                log.error("UAI not found in filename : " + file);
                                handlers[j + 1].handle(null);
                            }
                        }
                    };
                }
                handlers[0].handle(null);
            } else {
                log.error("Error reading directory.");
            }
        }
    });
}

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

License:Open Source License

private void moveCsvFiles(final String structureExternalId, final FileSystem fs, final String dirName,
        final String parentDir, final Handler<Void>[] handlers, final int j) {
    fs.readDir(dirName, ".*.csv", new Handler<AsyncResult<List<String>>>() {
        @Override//w ww .j  av a 2  s  .  c o  m
        public void handle(final AsyncResult<List<String>> l) {
            if (l.succeeded()) {
                final int size = l.result().size();
                if (!(size > 0)) {
                    emptyDirectory(fs, parentDir, handlers, j);
                    return;
                }

                final AtomicInteger validFilesCount = new AtomicInteger(size);
                final AtomicInteger count = new AtomicInteger(size);
                for (final String f : l.result()) {
                    String profile = null;
                    for (String profilePattern : profiles.fieldNames()) {
                        if (f.contains(profilePattern)) {
                            profile = profiles.getString(profilePattern);
                            break;
                        }
                    }
                    if (profile == null) {
                        validFilesCount.decrementAndGet();
                        fs.delete(f, new Handler<AsyncResult<Void>>() {
                            @Override
                            public void handle(AsyncResult<Void> event) {
                                if (count.decrementAndGet() == 0) {
                                    importFiles(validFilesCount, parentDir, structureExternalId, handlers, j,
                                            fs);
                                }
                            }
                        });
                        continue;
                    }

                    fs.move(f, dirName + File.separator + profile + ".csv", new Handler<AsyncResult<Void>>() {
                        @Override
                        public void handle(AsyncResult<Void> event2) {
                            if (event2.succeeded()) {
                                if (count.decrementAndGet() == 0) {
                                    importFiles(validFilesCount, parentDir, structureExternalId, handlers, j,
                                            fs);
                                }
                            } else {
                                fs.deleteRecursive(parentDir, true, null);
                                log.error("Error mv csv file : " + f, l.cause());
                                handlers[j + 1].handle(null);
                            }
                        }
                    });
                }
            } else {
                fs.deleteRecursive(parentDir, true, null);
                log.error("Error listing csv in directory : " + dirName, l.cause());
                handlers[j + 1].handle(null);
            }
        }
    });
}

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

License:Open Source License

private void importFiles(AtomicInteger validFilesCount, final String dirName, String structureExternalId,
        final Handler<Void>[] handlers, final int j, final FileSystem fs) {
    if (validFilesCount.get() > 0) {
        JsonObject action = new JsonObject().put("action", "import").put("feeder", "CSV").put("path", dirName)
                .put("structureExternalId", structureExternalId).put("postImport", false)
                .put("preDelete", preDelete);
        vertx.eventBus().send("entcore.feeder", action,
                handlerToAsyncHandler(new Handler<Message<JsonObject>>() {
                    @Override/*from  w  w w  .j  ava2s  .  c om*/
                    public void handle(Message<JsonObject> event) {
                        log.info(event.body().encodePrettily());
                        fs.deleteRecursive(dirName, true, new Handler<AsyncResult<Void>>() {
                            @Override
                            public void handle(AsyncResult<Void> event) {
                                handlers[j + 1].handle(null);
                            }
                        });
                    }
                }));
    } else {
        emptyDirectory(fs, dirName, handlers, j);
    }
}

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

License:Open Source License

private void emptyDirectory(FileSystem fs, String dirName, Handler<Void>[] handlers, int j) {
    fs.deleteRecursive(dirName, true, null);
    log.error("Empty directory : " + dirName);
    handlers[j + 1].handle(null);/*from   ww w  .  j ava  2  s  . co m*/
}