List of usage examples for io.vertx.core.file FileSystem mkdirs
Future<Void> mkdirs(String path, String perms);
From source file:org.entcore.conversation.controllers.ConversationController.java
License:Open Source License
private void zipAllAttachments(final HttpServerRequest request, JsonArray files) { JsonObject tmp;// www .j av 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 . j av a2 s .c o m 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."); } } }); }