// Path: noark-extraction-validator/src/main/java/com/documaster/validator/config/validators/DirectoryValidator.java
// public class DirectoryValidator implements IValueValidator<File> {
// 
// 	@Override
// 	public void validate(String name, File value) throws ParameterException {
// 
// 		if (!value.exists() || !value.isDirectory()) {
// 
// 			String errorMessage = MessageFormat.format(
// 					"{0}: Invalid/missing directory ({1}).", name, value.getAbsolutePath());
// 
// 			throw new ParameterException(errorMessage);
// 		}
// 	}
// }
// 
// Path: noark-extraction-validator/src/main/java/com/documaster/validator/exceptions/ReportingException.java
// public class ReportingException extends RuntimeException {
// 
// 	private static final long serialVersionUID = 1L;
// 
// 	public ReportingException(String message) {
// 
// 		super(message);
// 	}
// 
// 	public ReportingException(Throwable throwable) {
// 
// 		super(throwable);
// 	}
// 
// 	public ReportingException(String message, Throwable throwable) {
// 
// 		super(message, throwable);
// 	}
// }
// 
// Path: noark-extraction-validator/src/main/java/com/documaster/validator/reporting/ReportType.java
// public enum ReportType {
// 
// 	EXCEL_XLS, EXCEL_XLSX, XML
// }


import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException;
import com.beust.jcommander.converters.FileConverter;
import com.documaster.validator.config.validators.DirectoryValidator;
import com.documaster.validator.exceptions.ReportingException;
import com.documaster.validator.reporting.ReportType;
import static com.documaster.validator.reporting.ReportType.EXCEL_XLSX;
	}

	public void setOutputTypes(List<ReportType> outputTypes) {

		this.outputTypes = outputTypes;
	}

	public boolean isInMemoryXlsxReport() {

		return inMemoryXlsxReport;
	}

	public void setInMemoryXlsxReport(boolean inMemoryXlsxReport) {

		this.inMemoryXlsxReport = inMemoryXlsxReport;
	}

	@Override
	public void validate() {

		for (ReportType reportType : outputTypes) {
			switch (reportType) {
				case EXCEL_XLS:
				case EXCEL_XLSX:
				case XML:
					if (outputDir == null) {
						throw new ParameterException(OUTPUT_DIR + " must be specified for " + reportType);
					}
					break;
				default:
// Path: noark-extraction-validator/src/main/java/com/documaster/validator/config/validators/DirectoryValidator.java
// public class DirectoryValidator implements IValueValidator<File> {
// 
// 	@Override
// 	public void validate(String name, File value) throws ParameterException {
// 
// 		if (!value.exists() || !value.isDirectory()) {
// 
// 			String errorMessage = MessageFormat.format(
// 					"{0}: Invalid/missing directory ({1}).", name, value.getAbsolutePath());
// 
// 			throw new ParameterException(errorMessage);
// 		}
// 	}
// }
// 
// Path: noark-extraction-validator/src/main/java/com/documaster/validator/exceptions/ReportingException.java
// public class ReportingException extends RuntimeException {
// 
// 	private static final long serialVersionUID = 1L;
// 
// 	public ReportingException(String message) {
// 
// 		super(message);
// 	}
// 
// 	public ReportingException(Throwable throwable) {
// 
// 		super(throwable);
// 	}
// 
// 	public ReportingException(String message, Throwable throwable) {
// 
// 		super(message, throwable);
// 	}
// }
// 
// Path: noark-extraction-validator/src/main/java/com/documaster/validator/reporting/ReportType.java
// public enum ReportType {
// 
// 	EXCEL_XLS, EXCEL_XLSX, XML
// }


// Path: noark-extraction-validator/src/main/java/com/documaster/validator/config/delegates/ReportConfiguration.java
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException;
import com.beust.jcommander.converters.FileConverter;
import com.documaster.validator.config.validators.DirectoryValidator;
import com.documaster.validator.exceptions.ReportingException;
import com.documaster.validator.reporting.ReportType;
import static com.documaster.validator.reporting.ReportType.EXCEL_XLSX;

	}

	public void setOutputTypes(List<ReportType> outputTypes) {

		this.outputTypes = outputTypes;
	}

	public boolean isInMemoryXlsxReport() {

		return inMemoryXlsxReport;
	}

	public void setInMemoryXlsxReport(boolean inMemoryXlsxReport) {

		this.inMemoryXlsxReport = inMemoryXlsxReport;
	}

	@Override
	public void validate() {

		for (ReportType reportType : outputTypes) {
			switch (reportType) {
				case EXCEL_XLS:
				case EXCEL_XLSX:
				case XML:
					if (outputDir == null) {
						throw new ParameterException(OUTPUT_DIR + " must be specified for " + reportType);
					}
					break;
				default:
					throw new ReportingException("Unknown report type: " + reportType);