3 * Copyright © 2014 František Kučera (frantovo.cz)
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 package cz.frantovo.copyImageResizer;
21 import java.util.ArrayList;
22 import java.util.Collection;
26 * @author Ing. František Kučera (frantovo.cz)
28 public class RecursiveOptions {
39 * Image resolutions to create
41 private final Collection<SizeSpecification> sizes = new ArrayList<>();
43 * Whether errors (while resizing/copying particular images) should be just logged and skipped.
45 private ERROR_MODE errorMode;
47 public File getInput() {
51 public void setInput(File input) {
55 public File getOutput() {
59 public void setOutput(File output) {
63 public Collection<SizeSpecification> getSizes() {
67 public void addSize(SizeSpecification size) {
71 public ERROR_MODE getErrorMode() {
75 public void setErrorMode(ERROR_MODE errorMode) {
76 this.errorMode = errorMode;
79 public void validate() throws InvalidOptionsException {
80 InvalidOptionsException e = new InvalidOptionsException();
83 e.addProblem(new InvalidOptionsException.OptionProblem("input directory must be specified"));
84 } else if (!input.isDirectory()) {
85 e.addProblem(new InvalidOptionsException.OptionProblem("input directory must exist and be a directory: " + input));
89 e.addProblem(new InvalidOptionsException.OptionProblem("output directory must be specified"));
92 if (sizes.isEmpty()) {
93 e.addProblem(new InvalidOptionsException.OptionProblem("at least one size (output resolution) must be specified"));
96 if (e.hasProblems()) {
101 public static enum ERROR_MODE {
104 * fail on first error
108 * just log errors, skip them and fail at the end
112 * just log errors, skip them and report success