package de.unigoettingen.sub.ocr.controller;
import de.unigoettingen.sub.commons.ocr.util.BeanProvider;
import de.unigoettingen.sub.commons.ocr.util.FileAccess;
public class Validator {
private BeanProvider beanProvider = new BeanProvider();
private FileAccess fileAccess;
// for unit tests
void setBeanProvider(BeanProvider newProvider) {
beanProvider = newProvider;
}
public String validateParameters(OcrParameters params) {
fileAccess = beanProvider.getFileAccess();
String validationMessage = "";
if (!isReadable(params.inputFolder)) {
validationMessage += inputFolderError();
}
if (isEmpty(params.inputTextType)) {
validationMessage += noInputTextType();
}
if (isEmpty(params.inputLanguages)) {
validationMessage += noInputLanguages();
}
if (!isWritable(params.outputFolder)) {
validationMessage += outputFolderError();
}
if (isEmpty(params.outputFormats)) {
validationMessage += noOutputFormats();
}
if (isEmpty(params.inputFormats)) {
validationMessage += noInputFormats();
}
if (isEmpty(params.priority)) {
validationMessage += noPriority();
}
if (isEmpty(params.ocrEngine)) {
validationMessage += noOcrEngine();
}
if (params.props == null) {
validationMessage += nullProperties();
}
if (validationMessage.isEmpty()) {
return "OK";
} else {
return validationMessage;
}
}
private boolean isReadable(String inputFolder) {
return fileAccess.isReadableFolder(inputFolder);
}
private boolean isWritable(String outputFolder) {
return fileAccess.isWritableFolder(outputFolder);
}
private boolean isEmpty(String[] array) {
return array == null || array.length == 0;
}
private boolean isEmpty(String string) {
return string == null || string.trim().isEmpty();
}
protected String inputFolderError() {
return "Input folder not found or it is not readable. ";
}
protected String outputFolderError() {
return "Output folder not found or it is not writable. ";
}
protected String noInputFormats() {
return "No input formats. ";
}
protected String noInputTextType() {
return "No input text type. ";
}
protected String noInputLanguages() {
return "No input languages. ";
}
protected String noOutputFormats() {
return "No output formats. ";
}
protected String noPriority() {
return "No priority. ";
}
protected String noOcrEngine() {
return "No OCR engine. ";
}
protected String nullProperties() {
return "Properties may not be null. ";
}
}