package com.ppfold.algo;
/**
* Asynchronous job execution, blocking class. Jobs are executed sequentially.
*
* @author M.Vaerum
*/
public class AsynchronousJobExecutorBlocking extends AsynchronousJobExecutor {
@Override
public String getDescription() {
return "Serial (blocking) execution";
}
@Override
public void startExecution(CYKJob cYKJob, JobListener listener) {
if (cYKJob.isType() == 0) {
JobResults res = Inside.buildInside(cYKJob);
listener.jobFinished(res);
} else if (cYKJob.isType() == 1) {
JobResults res = Outside.buildOutside(cYKJob);
listener.jobFinished(res);
} else {
JobResults res = ExpectationMatrixCalc.buildExpectation(cYKJob);
listener.jobFinished(res);
}
}
@Override
public void startExecution(PhyloJob job, JobListener listener) {
if (job.isType() == false) {
double[][] res = PhyloCalc.calcSingleColumn(job);
listener.jobFinished(res);
} else {
double[][] res = PhyloCalc.calcDoubleColumn(job);
listener.jobFinished(res);
}
}
@Override
public void startExecution(PhyloJobFuzzy job, JobListener listener) {
if (job.isType() == false) {
double[][] res = PhyloCalcFuzzy.calcSingleColumn(job);
listener.jobFinished(res);
} else {
double[][] res = PhyloCalcFuzzy.calcDoubleColumn(job);
listener.jobFinished(res);
}
}
@Override
public String getId() {
return this.getClass().getName();
}
public void shutDown(){
//Nothing happens here as we only have one thread.
}
public boolean isTerminated() {
return false;
}
// @Override
// public AsynchronousJobExecutor createJobExecutor(AlgoParameters param) {
// //We have no state
// return this;
// }
}