private MultiplePdfMergeInputAdapter extractPdfMergeInputs( MergeTaskCliArguments taskCliArguments) { // input files can be specified in 3 ways: explicitly, via a folder or via a config file List<PdfFileSource> inputFiles = null; if (taskCliArguments.isDirectory()) { if (taskCliArguments.isMatchingRegEx()) { inputFiles = taskCliArguments .getDirectory() .filter(taskCliArguments.getMatchingRegEx()) .getFileSourceList(); } else { inputFiles = taskCliArguments.getDirectory().getFileSourceList(); } } else if (taskCliArguments.isFiles()) { inputFiles = extractFiles(taskCliArguments.getFiles()); } else if (taskCliArguments.isFilesListConfig()) { inputFiles = taskCliArguments.getFilesListConfig().getFileSourceList(); } if (!BooleanUtils.xor( new boolean[] { taskCliArguments.isDirectory(), taskCliArguments.isFiles(), taskCliArguments.isFilesListConfig() })) { throw new SejdaRuntimeException( "Too many options given for input. Please use only one of the following options: --directory --filesListConfig --file"); } if (inputFiles == null) { throw new SejdaRuntimeException("No input files specified"); } MultiplePdfMergeInputAdapter mergeInputsAdapter = new MultiplePdfMergeInputAdapter(inputFiles, taskCliArguments.getPageSelection().ranges()); return mergeInputsAdapter; }