franta-hg@3: /** franta-hg@3: * copy-image-resizer franta-hg@3: * Copyright © 2014 František Kučera (frantovo.cz) franta-hg@3: * franta-hg@3: * This program is free software: you can redistribute it and/or modify franta-hg@3: * it under the terms of the GNU General Public License as published by franta-hg@3: * the Free Software Foundation, either version 3 of the License, or franta-hg@3: * (at your option) any later version. franta-hg@3: * franta-hg@3: * This program is distributed in the hope that it will be useful, franta-hg@3: * but WITHOUT ANY WARRANTY; without even the implied warranty of franta-hg@3: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the franta-hg@3: * GNU General Public License for more details. franta-hg@3: * franta-hg@3: * You should have received a copy of the GNU General Public License franta-hg@3: * along with this program. If not, see . franta-hg@3: */ franta-hg@5: package cz.frantovo.copyImageResizer; franta-hg@3: franta-hg@3: import java.io.File; franta-hg@3: import java.util.ArrayList; franta-hg@3: import java.util.Collection; franta-hg@3: franta-hg@3: /** franta-hg@6: * franta-hg@3: * @author Ing. František Kučera (frantovo.cz) franta-hg@3: */ franta-hg@5: public class RecursiveOptions { franta-hg@3: franta-hg@3: /** franta-hg@3: * Source directory franta-hg@3: */ franta-hg@3: private File input; franta-hg@3: /** franta-hg@3: * Output directory franta-hg@3: */ franta-hg@3: private File output; franta-hg@3: /** franta-hg@3: * Image resolutions to create franta-hg@3: */ franta-hg@3: private final Collection sizes = new ArrayList<>(); franta-hg@14: /** franta-hg@14: * Whether errors (while resizing/copying particular images) should be just logged and skipped. franta-hg@14: */ franta-hg@14: private boolean skipErrors; franta-hg@3: franta-hg@6: public File getInput() { franta-hg@3: return input; franta-hg@3: } franta-hg@3: franta-hg@3: public void setInput(File input) { franta-hg@3: this.input = input; franta-hg@3: } franta-hg@3: franta-hg@6: public File getOutput() { franta-hg@3: return output; franta-hg@3: } franta-hg@3: franta-hg@3: public void setOutput(File output) { franta-hg@3: this.output = output; franta-hg@3: } franta-hg@3: franta-hg@3: public Collection getSizes() { franta-hg@3: return sizes; franta-hg@3: } franta-hg@3: franta-hg@3: public void addSize(SizeSpecification size) { franta-hg@3: sizes.add(size); franta-hg@3: } franta-hg@12: franta-hg@14: public boolean isSkipErrors() { franta-hg@14: return skipErrors; franta-hg@14: } franta-hg@14: franta-hg@14: public void setSkipErrors(boolean skipErrors) { franta-hg@14: this.skipErrors = skipErrors; franta-hg@14: } franta-hg@14: franta-hg@12: public void validate() throws InvalidOptionsException { franta-hg@12: InvalidOptionsException e = new InvalidOptionsException(); franta-hg@12: franta-hg@12: if (input == null) { franta-hg@12: e.addProblem(new InvalidOptionsException.OptionProblem("input directory must be specified")); franta-hg@12: } else if (!input.isDirectory()) { franta-hg@12: e.addProblem(new InvalidOptionsException.OptionProblem("input directory must exist and be a directory: " + input)); franta-hg@12: } franta-hg@12: franta-hg@12: if (output == null) { franta-hg@12: e.addProblem(new InvalidOptionsException.OptionProblem("output directory must be specified")); franta-hg@12: } franta-hg@12: franta-hg@12: if (sizes.isEmpty()) { franta-hg@12: e.addProblem(new InvalidOptionsException.OptionProblem("at least one size (output resolution) must be specified")); franta-hg@12: } franta-hg@12: franta-hg@12: if (e.hasProblems()) { franta-hg@12: throw e; franta-hg@12: } franta-hg@12: } franta-hg@3: }