/** * Creates a {@link FileOrDirectoryTaskOutput} making sure the input file is a valid directory instance * * @param directory * @return */ public static FileOrDirectoryTaskOutput directory(File directory) { if (directory == null || !directory.isDirectory()) { throw new IllegalArgumentException("A not null directory instance is expected. Path: " + directory); } return new FileOrDirectoryTaskOutput(directory); } }
@Override public void dispatch(FileOrDirectoryTaskOutput output) { onDirectory(params, output.getDestination()); }
@Override public void apply(MultipleOutputTaskParametersBuilder<? extends SingleOrMultipleOutputTaskParameters> builder, Consumer<String> onError) { getTextField().validate(); if (getTextField().getValidationState() == ValidationState.VALID) { Path output = Paths.get(getTextField().getText()); if (!Files.exists(output)) { eventStudio().broadcast(new NonExistingOutputDirectoryEvent(output)); } if (Files.isDirectory(output)) { builder.output(directory(output.toFile())); } else { onError.accept(DefaultI18nContext.getInstance().i18n("An existing output directory is required")); } } else { onError.accept(DefaultI18nContext.getInstance().i18n("The output directory is required")); } } }
@Test(expected = TaskOutputVisitException.class) public void failOnFileOrDir() throws TaskOutputVisitException, IOException { DefaultSingleOutputWriter victim = new DefaultSingleOutputWriter(ExistingOutputPolicy.OVERWRITE, context); new FileOrDirectoryTaskOutput(folder.newFolder()).accept(victim); }
@Test(expected = IllegalArgumentException.class) public void fileFactoryInvalidFile() { when(file.isFile()).thenReturn(Boolean.FALSE); FileOrDirectoryTaskOutput.file(file); }
@Test(expected = TaskOutputVisitException.class) public void moveToFileDirExsisting() throws TaskOutputVisitException, IOException { File outFile = folder.newFile(); DefaultMultipleOutputWriter victim = new DefaultMultipleOutputWriter(ExistingOutputPolicy.FAIL, context); victim.addOutput(FileOutput.file(outFile).name(outFile.getName())); new FileOrDirectoryTaskOutput(outFile.getParentFile()).accept(victim); }
@Test(expected = IllegalArgumentException.class) public void fileFactoryNullFile() { FileOrDirectoryTaskOutput.file(null); }
/** * Creates a {@link FileOrDirectoryTaskOutput} making sure the input file is a valid file instance * * @param file * @return */ public static FileOrDirectoryTaskOutput file(File file) { if (file == null || (file.exists() && !file.isFile())) { throw new IllegalArgumentException("A valid instance is expected (not null or existing file)."); } return new FileOrDirectoryTaskOutput(file); }
@Test public void moveToFileOrDirSingleFile() throws TaskOutputVisitException, IOException { File out = folder.newFile(); assertEquals(0, out.length()); Path outFile = Files.createTempFile("sejda", ".tmp"); Files.write(outFile, new byte[] { 0, 1, 1, 1 }); DefaultMultipleOutputWriter victim = new DefaultMultipleOutputWriter(ExistingOutputPolicy.OVERWRITE, context); victim.addOutput(FileOutput.file(outFile.toFile()).name("out.pdf")); new FileOrDirectoryTaskOutput(out).accept(victim); assertEquals(4, out.length()); Files.deleteIfExists(outFile); } }
@Override public void dispatch(FileOrDirectoryTaskOutput output) { destination = output.getDestination(); setGraphic(MaterialDesignIconFactory.get().createIcon(MaterialDesignIcon.FOLDER_OUTLINE, "1.6em")); }
@Test(expected = IllegalArgumentException.class) public void dirFactoryInvalidDirectory() { when(directory.isDirectory()).thenReturn(Boolean.FALSE); FileOrDirectoryTaskOutput.directory(directory); }
@Test public void fileFactoryValidFile_doesntExist() { when(file.isFile()).thenReturn(Boolean.FALSE); when(file.exists()).thenReturn(Boolean.FALSE); FileOrDirectoryTaskOutput instance = FileOrDirectoryTaskOutput.file(file); assertNotNull(instance); }
/** * Creates a {@link FileOrDirectoryTaskOutput} making sure the input file is a valid file instance * * @param file * @return */ public static FileOrDirectoryTaskOutput file(File file) { if (file == null || (file.exists() && !file.isFile())) { throw new IllegalArgumentException("A valid instance is expected (not null or existing file)."); } return new FileOrDirectoryTaskOutput(file); }
@Test public void moveToFileOrDirExsistingRenamed() throws TaskOutputVisitException, IOException { File outFile = folder.newFile(); DefaultMultipleOutputWriter victim = new DefaultMultipleOutputWriter(ExistingOutputPolicy.RENAME, context); victim.addOutput(FileOutput.file(folder.newFile()).name(outFile.getName())); new FileOrDirectoryTaskOutput(outFile.getParentFile()).accept(victim); assertEquals(2, outFile.getParentFile().list().length); }
@Override public void dispatch(FileOrDirectoryTaskOutput output) { Path dest = output.getDestination().toPath(); if (Files.exists(dest)) { if (Files.isDirectory(dest)) { bufferLocation = dest; } else { bufferLocation = dest.getParent(); } } } }
@Test(expected = IllegalArgumentException.class) public void dirFactoryNullFile() { FileOrDirectoryTaskOutput.directory(null); }
/** * Creates a {@link FileOrDirectoryTaskOutput} making sure the input file is a valid directory instance * * @param directory * @return */ public static FileOrDirectoryTaskOutput directory(File directory) { if (directory == null || !directory.isDirectory()) { throw new IllegalArgumentException("A not null directory instance is expected. Path: " + directory); } return new FileOrDirectoryTaskOutput(directory); } }
@Test public void moveToFileOrDir() throws TaskOutputVisitException, IOException { File out = folder.newFolder(); DefaultMultipleOutputWriter victim = new DefaultMultipleOutputWriter(ExistingOutputPolicy.OVERWRITE, context); victim.addOutput(FileOutput.file(folder.newFile()).name("out.pdf")); new FileOrDirectoryTaskOutput(out).accept(victim); assertEquals(1, out.list().length); }
@Override public void dispatch(FileOrDirectoryTaskOutput output) { Path dest = output.getDestination().toPath(); if (Files.exists(dest)) { if (Files.isDirectory(dest)) { bufferLocation = dest; } else { bufferLocation = dest.getParent(); } } } }
@Test public void dirFactoryValidDirectory() { when(directory.isDirectory()).thenReturn(Boolean.TRUE); FileOrDirectoryTaskOutput instance = FileOrDirectoryTaskOutput.directory(directory); assertNotNull(instance); }