package org.geoserver.python.datastore;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import org.apache.commons.io.FilenameUtils;
import org.geoserver.data.DataAccessFactoryProducer;
import org.geoserver.python.Python;
import org.geotools.data.DataAccessFactory;
import static org.geoserver.python.Python.LOGGER;
public class PythonDataStoreFactoryProducer implements DataAccessFactoryProducer {
Python py;
public PythonDataStoreFactoryProducer(Python py) {
this.py = py;
}
public List<DataAccessFactory> getDataStoreFactories() {
List<DataAccessFactory> factories = new ArrayList();
try {
File dir = py.getDataStoreRoot();
for (File f : dir.listFiles()) {
if ("py".equals(FilenameUtils.getExtension(f.getName()))) {
try {
factories.add(new PythonDataStoreFactory(new PythonDataStoreAdapter(f, py)));
}
catch(Exception e) {
LOGGER.log(Level.WARNING, "Unable to load data store from "
+ f.getAbsolutePath(), e);
}
}
}
}
catch (IOException e) {
LOGGER.log(Level.WARNING, "", e);
}
return factories;
}
}