package net.codjo.dataprocess.server.plugin;
import net.codjo.dataprocess.common.DataProcessConstants;
import net.codjo.dataprocess.common.Log;
import net.codjo.dataprocess.common.codec.ExecutionListModelCodec;
import net.codjo.dataprocess.common.context.DataProcessContext;
import net.codjo.dataprocess.common.context.DataProcessContextCodec;
import net.codjo.dataprocess.common.exception.TreatmentException;
import net.codjo.dataprocess.common.message.DataProcessJobRequest;
import net.codjo.dataprocess.common.model.ExecutionListModel;
import net.codjo.dataprocess.common.report.OperationReport;
import net.codjo.dataprocess.server.kernel.TreatmentLauncher;
import net.codjo.workflow.common.message.Arguments;
import net.codjo.workflow.common.message.JobAudit;
import net.codjo.workflow.common.protocol.JobProtocolParticipant;
import java.sql.Connection;
import java.sql.SQLException;
/**
*
*/
public class DPExecutionListJobLauncher implements DataProcessJobLauncher {
private static final String OPERATION_REPORT_XML = "operationReportXml";
public void proceed(Connection con,
JobProtocolParticipant jobProtocolParticipant,
DataProcessJobRequest request,
TreatmentLauncher treatmentLauncher)
throws TreatmentException, SQLException {
Log.debug(getClass(), ">>> D�but ex�cution du job data-process (mode liste de traitements)");
DataProcessContext context = DataProcessContextCodec.decode(request.getContext());
ExecutionListModel executionListModel =
new ExecutionListModelCodec().decode(request.getExecutionListModel());
OperationReport report =
treatmentLauncher.proceedTreatmentList(con,
Integer.parseInt(request.getRepositoryId()),
executionListModel,
context,
jobProtocolParticipant);
JobAudit audit = new JobAudit(JobAudit.Type.MID);
Arguments arguments = new Arguments();
arguments.put(DataProcessConstants.OPERATION_REPORT, getResult(report));
arguments.put(OPERATION_REPORT_XML, OperationReport.encode(report));
audit.setArguments(arguments);
jobProtocolParticipant.sendAudit(audit);
Log.debug(getClass(), ">>> Fin d'ex�cution du job data-process (mode liste de traitements)");
}
private static String getResult(OperationReport report) {
if (report.isError()) {
return DataProcessConstants.TRT_WARNING;
}
else {
return DataProcessConstants.TRT_OK;
}
}
}