package com.intrbiz.bergamot.worker; import java.util.Collection; import java.util.Map; import java.util.TreeMap; import java.util.UUID; import org.apache.log4j.Logger; import com.intrbiz.bergamot.config.EngineCfg; import com.intrbiz.bergamot.config.WorkerCfg; import com.intrbiz.bergamot.worker.engine.Engine; public abstract class AbstractWorker implements Worker { private Logger logger = Logger.getLogger(AbstractWorker.class); private Map<String, Engine> engines = new TreeMap<String, Engine>(); private UUID site; private UUID id = UUID.randomUUID(); private String workerPool; private WorkerCfg configuration; public AbstractWorker() { super(); } @Override public final void configure(WorkerCfg cfg) throws Exception { this.configuration = cfg; this.configure(); } @Override public final WorkerCfg getConfiguration() { return this.configuration; } @Override public final UUID getSite() { return this.site; } @Override public final UUID getId() { return this.id; } @Override public final String getWorkerPool() { return this.workerPool; } protected void configure() throws Exception { this.site = this.configuration.getSite(); this.workerPool = this.configuration.getWorkerPool(); // load our runners for (EngineCfg engineCfg : this.configuration.getEngines()) { Engine engine = (Engine) engineCfg.create(); engine.setWorker(this); logger.debug("Adding engine: " + engine); this.engines.put(engine.getName(), engine); } } public Collection<Engine> getEngines() { return this.engines.values(); } @Override public void start() throws Exception { for (Engine engine : this.getEngines()) { engine.start(); } } public abstract String getDaemonName(); }