package ch.elexis.core.scheduler.internal;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.elexis.core.constants.Preferences;
import ch.elexis.core.data.activator.CoreHub;
import ch.elexis.core.scheduler.ElexisScheduler;
public class Activator implements BundleActivator {
public static final String PLUGIN_ID = "ch.elexis.core.scheduler";
private static BundleContext context;
private static Logger log = LoggerFactory.getLogger(Activator.class);
private String connPref = null;
@Override
public void start(BundleContext context) throws Exception{
Activator.context = context;
// only start if we have a db connection configured
connPref = CoreHub.localCfg.get(Preferences.CFG_FOLDED_CONNECTION, null);
if (connPref != null) {
ElexisScheduler.getInstance().startScheduler();
} else {
log.error("No database configuration found, stopping startup");
stop(context);
}
}
@Override
public void stop(BundleContext context) throws Exception{
if (connPref != null) {
ElexisScheduler.getInstance().shutdownScheduler();
}
Activator.context = null;
}
/**
* @return the <code>quartz.properties</code> file as {@link Properties} object
*/
public static Properties getQuartzProperties(){
Properties properties = new Properties();
try {
URL resource = context.getBundle().getEntry("quartz.properties");
InputStream openStream = resource.openStream();
properties.load(openStream);
openStream.close();
} catch (IOException e) {
log.error("Error loading properties", e);
}
return properties;
}
public static URL getResource(String resource){
return context.getBundle().getEntry(resource);
}
}