/* * Created on 15 gen 2017 * Copyright 2015 by Andrea Vacondio (andrea.vacondio@gmail.com). * This file is part of Sejda. * * Sejda is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Sejda is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Sejda. If not, see <http://www.gnu.org/licenses/>. */ package org.sejda.cli.command; import org.sejda.cli.CommandLineTestBuilder; import org.sejda.cli.DefaultsProvider; /** * {@link TestableTask} available in the standard sejda console * * @author Andrea Vacondio */ public enum StandardTestableTask implements TestableTask { DECRYPT(StandardCliCommand.DECRYPT), ENCRYPT(StandardCliCommand.ENCRYPT), ROTATE(StandardCliCommand.ROTATE, new RotateDefaultsProvider()), SET_VIEWER_PREFERENCES(StandardCliCommand.SET_VIEWER_PREFERENCES), ALTERNATE_MIX(StandardCliCommand.ALTERNATE_MIX, new MultipleInputsAndFileOutputDefaultsProvider()), UNPACK(StandardCliCommand.UNPACK), MERGE(StandardCliCommand.MERGE, new MultipleInputsAndFileOutputDefaultsProvider()), SPLIT_BY_BOOKMARKS(StandardCliCommand.SPLIT_BY_BOOKMARKS, new SplitByBookmarksDefaultsProvider()), SPLIT_BY_SIZE(StandardCliCommand.SPLIT_BY_SIZE, new SplitBySizeDefaultsProvider()), SPLIT_BY_PAGES(StandardCliCommand.SPLIT_BY_PAGES, new SplitByPagesDefaultsProvider()), SPLIT_BY_EVERY(StandardCliCommand.SPLIT_BY_EVERY, new SplitByEveryXPagesDefaultsProvider()), SIMPLE_SPLIT(StandardCliCommand.SIMPLE_SPLIT, new SimpleSplitDefaultsProvider()), EXTRACT_BY_BOOKMARKS(StandardCliCommand.EXTRACT_BY_BOOKMARKS, new SplitByBookmarksDefaultsProvider()), EXTRACT_PAGES(StandardCliCommand.EXTRACT_PAGES, new ExtractPagesDefaultsProvider()), SET_METADATA(StandardCliCommand.SET_METADATA, new SetMetadataDefaultsProvider()), SET_PAGE_LABELS(StandardCliCommand.SET_PAGE_LABELS, new SetPageLabelsDefaultsProvider()), SET_PAGE_TRANSITIONS(StandardCliCommand.SET_PAGE_TRANSITIONS, new SetPageTransitionsDefaultsProvider()), PDF_TO_SINGLE_TIFF(StandardCliCommand.PDF_TO_SINGLE_TIFF, new PdfToSingleTiffDefaultsProvider()), PDF_TO_MULTIPLE_TIFF(StandardCliCommand.PDF_TO_MULTIPLE_TIFF, new PdfToMultipleTiffDefaultsProvider()), PDF_TO_JPEG(StandardCliCommand.PDF_TO_JPEG, new MultipleInputsAndFolderOutputDefaultsProvider()), PDF_TO_PNG(StandardCliCommand.PDF_TO_PNG, new MultipleInputsAndFolderOutputDefaultsProvider()), SET_HEADER_FOOTER(StandardCliCommand.SET_HEADER_FOOTER, new SetHeaderFooterDefaultsProvider()), COMBINE_REORDER(StandardCliCommand.COMBINE_REORDER, new CombineReorderDefaultsProvider()), ADD_BACK_PAGES(StandardCliCommand.ADD_BACK_PAGES, new AddBackPagesDefaultsProvider()), PORTFOLIO(StandardCliCommand.PORTFOLIO, taskName -> new CommandLineTestBuilder(taskName) .defaultMultipleNonPdfInputs().defaultFileOutput()), WATERMARK(StandardCliCommand.WATERMARK, new WatermarkDefaultsProvider()), SCALE(StandardCliCommand.SCALE, new ScaleDefaultsProvider()); private final DefaultsProvider defaultsProvider; private final CliCommand command; private StandardTestableTask(CliCommand command) { this(command, new DefaultDefaultsProvider()); } private StandardTestableTask(CliCommand command, DefaultsProvider defaultsProvider) { this.command = command; this.defaultsProvider = defaultsProvider; } @Override public DefaultsProvider getDefaultsProvider() { return defaultsProvider; } @Override public CliCommand getCommand() { return command; } } class RotateDefaultsProvider extends DefaultDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-r", "90").with("-m", "all"); } } class SplitByBookmarksDefaultsProvider extends SingleInputAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-l", "1"); } } class SplitBySizeDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-s", "1234567890123456789"); } } class SplitByPagesDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-n", "1 2 3 9 23 78"); } } class SplitByEveryXPagesDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-n", "5"); } } class ExtractByBookmarksDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-l", "1"); } } class SimpleSplitDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-s", "all"); } } class ExtractPagesDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-m", "all"); } } class SetMetadataDefaultsProvider extends SingleInputAndFileOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-t", "\"Tales from a test\""); } } class SetPageLabelsDefaultsProvider extends SingleInputAndFileOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-l", "99:uroman:1:Chapter"); } } class SetHeaderFooterDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-l", "\"Page [PAGE_OF_TOTAL]\"").with("-s", "all"); } } class SetPageTransitionsDefaultsProvider extends SingleInputAndFileOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("--transitions", "dissolve:6:9:55"); } } class PdfToSingleTiffDefaultsProvider extends SingleInputAndFileOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("--colorType", "gray_scale"); } } class PdfToMultipleTiffDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("--colorType", "gray_scale"); } } class CombineReorderDefaultsProvider extends MultipleInputsAndFileOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-n", "0:1 1:1 0:2 1:3"); } } class AddBackPagesDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-b", "inputs/back.pdf"); } } class WatermarkDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-w", "inputs/logo.png").with("-c", "50,30"); } } class ScaleDefaultsProvider extends MultipleInputsAndFolderOutputDefaultsProvider { @Override public CommandLineTestBuilder provideDefaults(String taskName) { return super.provideDefaults(taskName).with("-s", "1.1"); } }