package de.uni_goettingen.sub.commons.ocr.abbyy.server;
import java.util.Properties;
import de.uni_goettingen.sub.commons.ocr.api.OcrEngine;
import de.uni_goettingen.sub.commons.ocr.api.OcrProcess;
import de.uni_goettingen.sub.commons.ocr.api.OcrFactoryWithProperties;
import de.unigoettingen.sub.commons.ocr.util.BeanProvider;
import de.unigoettingen.sub.commons.ocr.util.FileAccess;
public class AbbyyFactory extends OcrFactoryWithProperties {
private BeanProvider beanProvider = new BeanProvider();
public AbbyyFactory(Properties userProperties) {
super(userProperties);
}
// for unit tests
void setBeanProvider(BeanProvider newProvider) {
beanProvider = newProvider;
}
@Override
public OcrEngine createEngine() {
AbbyyEngine engine = new AbbyyEngine();
engine.initialize(getCombinedProps());
return engine;
}
@Override
public OcrProcess createProcess() {
AbbyyProcess process = new AbbyyProcess();
process.initialize(getCombinedProps());
return process;
}
// TODO: check for all necessary file props and normalize serverUrl to /
protected Properties getCombinedProps() {
String configFile = userProperties.getProperty("abbyy.config", "gbv-antiqua.properties");
FileAccess fileAccess = beanProvider.getFileAccess();
Properties fileProps = fileAccess.getPropertiesFromFile(configFile);
Properties combinedProps = new Properties(fileProps);
for (String userKey : userProperties.stringPropertyNames()) {
combinedProps.setProperty(userKey, userProperties.getProperty(userKey));
}
return combinedProps;
}
}