package mobac.mapsources.loader;
import java.io.File;
import javax.swing.JOptionPane;
import mobac.mapsources.MapSourcesManager;
import mobac.mapsources.custom.BeanShellHttpMapSource;
import mobac.program.model.MapSourceLoaderInfo;
import mobac.program.model.MapSourceLoaderInfo.LoaderType;
import mobac.utilities.file.FileExtFilter;
import org.apache.log4j.Logger;
public class BeanShellMapSourceLoader {
private final Logger log = Logger.getLogger(BeanShellMapSourceLoader.class);
private final MapSourcesManager mapSourcesManager;
private final File mapSourcesDir;
public BeanShellMapSourceLoader(MapSourcesManager mapSourceManager, File mapSourcesDir) {
this.mapSourcesManager = mapSourceManager;
this.mapSourcesDir = mapSourcesDir;
}
public void loadBeanShellMapSources() {
File[] customMapSourceFiles = mapSourcesDir.listFiles(new FileExtFilter(".bsh"));
for (File f : customMapSourceFiles) {
try {
BeanShellHttpMapSource mapSource = BeanShellHttpMapSource.load(f);
log.trace("BeanShell map source loaded: " + mapSource + " from file \"" + f.getName() + "\"");
mapSource.setLoaderInfo(new MapSourceLoaderInfo(LoaderType.BSH, f));
mapSourcesManager.addMapSource(mapSource);
} catch (Exception e) {
String errorMsg = "Failed to load custom BeanShell map source \"" + f.getName() + "\": "
+ e.getMessage();
log.error(errorMsg, e);
JOptionPane.showMessageDialog(null, errorMsg, "Failed to load custom BeanShell map source",
JOptionPane.ERROR_MESSAGE);
}
}
}
}