/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.dataprocess.server.kernel;
import net.codjo.dataprocess.common.DataProcessConstants;
import net.codjo.dataprocess.common.context.DataProcessContext;
import net.codjo.dataprocess.common.exception.TreatmentException;
import net.codjo.dataprocess.common.model.ExecutionListModel;
import net.codjo.dataprocess.common.model.TreatmentModel;
import net.codjo.dataprocess.common.util.CommonUtils;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
*/
class StoredProcTreatmentWithResult extends AbstractSqlTreatment {
private static final String DEFAULT_SEPARATOR = ", ";
private static final String DEFAULT_QUOTE = "\"";
public Object proceedTreatment(DataProcessContext context, Object... param)
throws TreatmentException, SQLException {
return proceedStoredProcTypeWithResult();
}
private String proceedStoredProcTypeWithResult() throws TreatmentException, SQLException {
if (getTreatmentModel().getTarget().trim().length() == 0) {
return "";
}
Boolean bColumn = null;
String separator = getArgument(DataProcessConstants.SEPARATOR);
String quote = getArgument(DataProcessConstants.QUOTE);
String column = getArgument(DataProcessConstants.COLUMN);
if (column != null) {
if ("1".equals(column) || "true".equalsIgnoreCase(column)) {
column = "True";
}
else {
column = "false";
}
bColumn = Boolean.valueOf(column);
}
CallableStatement callStmt = getConnection().prepareCall(buildStoredProcQuery());
try {
configureStatement(callStmt);
ResultSet rs = callStmt.executeQuery();
try {
return CommonUtils.resultSetToStringFormat(rs,
separator == null ? DEFAULT_SEPARATOR : separator,
quote == null ? DEFAULT_QUOTE : quote,
bColumn == null ? false : bColumn);
}
finally {
rs.close();
}
}
finally {
callStmt.close();
}
}
public static StoredProcTreatmentWithResult create(Connection con,
TreatmentModel treatmentModel,
int repositoryId,
ExecutionListModel executionListModel) {
StoredProcTreatmentWithResult treatment = new StoredProcTreatmentWithResult();
treatment.setConnection(con);
treatment.setTreatmentModel(treatmentModel);
treatment.setExecutionListModel(executionListModel);
treatment.setRepositoryId(repositoryId);
treatment.buildArgument();
return treatment;
}
}