import java.util.Map;
import java.util.Vector;
+import mir.config.MirPropertiesConfiguration;
import mir.log.LoggerToWriterAdapter;
import mir.log.LoggerWrapper;
import mir.producer.Producer;
import mir.producer.ProducerFactory;
-import mir.util.*;
-import mir.config.*;
+import mir.util.GeneratorFormatAdapters;
import mir.util.StringRoutines;
import multex.Exc;
import multex.Failure;
+import mircoders.localizer.MirLocalizerExc;
public class ProducerEngine {
-// private Map producers;
private JobQueue producerJobQueue;
private LoggerWrapper logger;
producerJobQueue = new JobQueue(new LoggerWrapper("Producer.Queue"));
}
- public void addJob(String aProducerFactory, String aVerb) {
- producerJobQueue.appendJob(new ProducerJob(aProducerFactory, aVerb), aProducerFactory+"."+aVerb);
+ public void addJob(String aProducerFactory, String aVerb) throws ProducerEngineExc, ProducerEngineFailure {
+ ProducerFactory factory;
+
+ try {
+ factory = MirGlobal.localizer().producers().getFactoryForName( aProducerFactory );
+ }
+ catch (MirLocalizerExc e) {
+ throw new ProducerEngineFailure(e);
+ }
+
+ if (factory==null)
+ throw new ProducerEngineExc("Unknown producer: " + aProducerFactory);
+
+ if (!factory.allowVerb(aVerb))
+ throw new ProducerEngineExc("illegal producer/verb combination: " + aProducerFactory+"::"+aVerb);
+
+ producerJobQueue.appendJob(
+ new ProducerJob(aProducerFactory, aVerb), aProducerFactory+"."+aVerb);
}
public void cancelJobs(List aJobs) {
producerJobQueue.cancelJobs(aJobs);
};
- public void addTask(ProducerTask aTask) {
- addJob(aTask.getProducer(), aTask.getVerb());
- }
-
- public void addTasks(List aTasks) {
- Iterator i = aTasks.iterator();
+ public void cancelAllJobs() {
+ producerJobQueue.cancelAllJobs();
+ };
- while (i.hasNext()) {
- addTask((ProducerTask) i.next());
- }
+ public void addTask(ProducerTask aTask) throws ProducerEngineExc, ProducerEngineFailure {
+ addJob(aTask.getProducer(), aTask.getVerb());
}
private String convertStatus(JobQueue.JobInfo aJob) {
long endTime;
boolean result = false;
Map startingMap = new HashMap();
+ Map mirMap = new HashMap();
+ mirMap.put("producer", factoryName);
+ mirMap.put("verb", verb);
+
+ startingMap.put("Mir", mirMap);
startTime = System.currentTimeMillis();
logger.info("Producing job: "+factoryName+"."+verb);
}
}
- public static class ProducerEngineRuntimeExc extends Failure {
- public ProducerEngineRuntimeExc(String msg, Exception cause){
+ public static class ProducerEngineFailure extends Failure {
+ public ProducerEngineFailure(Throwable aCause){
+ super(aCause.getMessage(), aCause);
+ }
+
+ public ProducerEngineFailure(String msg, Exception cause){
super(msg,cause);
}
}