import mir.util.StringRoutines;
import multex.Exc;
import multex.Failure;
+import mircoders.localizer.MirLocalizerExc;
public class ProducerEngine {
private JobQueue producerJobQueue;
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.cancelAllJobs();
};
- public void addTask(ProducerTask aTask) {
+ public void addTask(ProducerTask aTask) throws ProducerEngineExc, ProducerEngineFailure {
addJob(aTask.getProducer(), aTask.getVerb());
}
- public void addTasks(List aTasks) {
- Iterator i = aTasks.iterator();
-
- while (i.hasNext()) {
- addTask((ProducerTask) i.next());
- }
- }
-
private String convertStatus(JobQueue.JobInfo aJob) {
switch (aJob.getStatus()) {
case JobQueue.STATUS_ABORTED:
}
}
- 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);
}
}