/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.dataprocess.server.kernel; import net.codjo.dataprocess.common.Log; import net.codjo.dataprocess.common.context.DataProcessContext; import net.codjo.dataprocess.common.exception.TreatmentException; import net.codjo.dataprocess.common.model.ArgList; import net.codjo.dataprocess.common.model.ArgModel; import net.codjo.dataprocess.common.model.ExecutionListModel; import net.codjo.dataprocess.common.model.TreatmentModel; import net.codjo.dataprocess.common.report.TreatmentReport; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; /** * */ abstract class AbstractTreatment implements Treatment { private Map<String, Argument> args; private int repositoryId = 0; private Connection con; private TreatmentModel treatmentModel; private ExecutionListModel executionListModel; private TreatmentResultSender treatmentResultSender; private Exception error; private Object result; public TreatmentModel getTreatmentModel() { return treatmentModel; } public void setTreatmentModel(TreatmentModel treatmentModel) { this.treatmentModel = treatmentModel; } public void setExecutionListModel(ExecutionListModel executionListModel) { this.executionListModel = executionListModel; } public ExecutionListModel getExecutionListModel() { return executionListModel; } public int getRepositoryId() { return repositoryId; } public void setRepositoryId(int repositoryId) { this.repositoryId = repositoryId; } public Connection getConnection() { return con; } public void setConnection(Connection con) { this.con = con; } public void setArgs(Map<String, Argument> args) { this.args = args; } public Map<String, Argument> getArgs() { return args; } public void configure(DataProcessContext context) throws TreatmentException { if (args != null && !args.isEmpty()) { for (Entry<String, Argument> entry : args.entrySet()) { Argument arg = entry.getValue(); arg.computeValue(con, context, repositoryId, executionListModel == null ? null : executionListModel.getName()); } } } public List<String> getNotResolvableArguments(DataProcessContext context) { List<String> parametersList = new ArrayList<String>(); if (args != null && !args.isEmpty()) { for (Entry<String, Argument> entry : args.entrySet()) { Argument arg = entry.getValue(); parametersList.addAll(arg.getNotResolvableValue(con, context, repositoryId, executionListModel == null ? null : executionListModel.getName())); } } return parametersList; } public String getArgument(String key) { if (args != null) { Argument argument = args.get(key); if (argument != null) { return argument.getValue(); } } return null; } protected void buildArgument() { Log.debug(getClass(), "************* DEFAULT BUILD ARGUMENTS"); args = new HashMap<String, Argument>(); ArgList arglist = treatmentModel.getArguments(); if (arglist.getArgs() != null) { for (ArgModel argModel : arglist.getArgs()) { args.put(argModel.getName(), new Argument(argModel)); } } else { args = null; } } public void sendInformationToClient(String message) { if (treatmentResultSender != null) { treatmentResultSender.sendInformationMessage(treatmentModel, message); } else { if (Log.isInfoEnabled()) { Log.info(getClass(), "[SEND INFORMATION(treatment : " + treatmentModel.getId() + ")] : " + message); } } } public void setTreatmentResultSender(TreatmentResultSender treatmentResultSender) { this.treatmentResultSender = treatmentResultSender; } public Object executeTreatment(String treatmentId, DataProcessContext context, String[] repositoryPath, Object... param) throws TreatmentException, SQLException { return new TreatmentLauncher().proceedTreatment(con, repositoryPath, treatmentId, context, param); } public void setError(Exception error) { this.error = error; } public Exception getError() { return error; } public void setResult(Object result) { this.result = result; } public Object getResult() { return result; } public TreatmentReport getTreatmentReport() { return new TreatmentReport(treatmentModel.getId(), result != null ? result.toString() : null, error != null ? error.getLocalizedMessage() : null); } }