1 ${database.allClassCopyright}package ${glPackageBaseCommonS2DaoInternalSqlCommand};
\r
3 import javax.sql.DataSource;
\r
5 import org.seasar.dao.SqlCommand;
\r
6 import org.seasar.extension.jdbc.ResultSetHandler;
\r
7 import org.seasar.extension.jdbc.StatementFactory;
\r
9 import ${glPackageBaseCommonCBeanOutsidesql}.${glOutsideSqlContextName};
\r
10 import ${glPackageBaseCommonS2DaoInternalSqlHandler}.${glInternalProcedureHandler};
\r
11 import ${glPackageBaseCommonS2DaoInternalVarious}.${glInternalProcedureMetaData};
\r
14 * @author ${database.ClassAuthor}
\r
16 public class ${glInternalProcedureCommand} implements SqlCommand {
\r
18 // ===================================================================================
\r
21 protected DataSource dataSource;
\r
22 protected ResultSetHandler resultSetHandler;
\r
23 protected StatementFactory statementFactory;
\r
24 protected ${glInternalProcedureMetaData} procedureMetaData;
\r
26 // ===================================================================================
\r
29 public ${glInternalProcedureCommand}(DataSource dataSource, ResultSetHandler resultSetHandler,
\r
30 StatementFactory statementFactory, ${glInternalProcedureMetaData} procedureMetaData) {
\r
31 this.dataSource = dataSource;
\r
32 this.resultSetHandler = resultSetHandler;
\r
33 this.statementFactory = statementFactory;
\r
34 this.procedureMetaData = procedureMetaData;
\r
37 // ===================================================================================
\r
40 public Object execute(final Object[] args) {
\r
41 final ${glInternalProcedureHandler} handler = newArgumentDtoProcedureHandler();
\r
42 final ${glOutsideSqlContextName} outsideSqlContext = ${glOutsideSqlContextName}.getOutsideSqlContextOnThread();
\r
43 final Object pmb = outsideSqlContext.getParameterBean();
\r
44 // The logging message SQL of procedure is unnecessary.
\r
45 // handler.setLoggingMessageSqlArgs(...);
\r
46 return handler.execute(new Object[]{pmb});
\r
48 protected ${glInternalProcedureHandler} newArgumentDtoProcedureHandler() {
\r
49 return new ${glInternalProcedureHandler}(dataSource, createSql(procedureMetaData), resultSetHandler,
\r
50 statementFactory, procedureMetaData);
\r
52 protected String createSql(final ${glInternalProcedureMetaData} procedureMetaData) {
\r
53 final StringBuilder sb = new StringBuilder();
\r
55 int size = procedureMetaData.parameterTypes().size();
\r
56 if (procedureMetaData.hasReturnParameterType()) {
\r
60 sb.append("call ").append(procedureMetaData.getProcedureName()).append("(");
\r
61 for (int i = 0; i < size; i++) {
\r
65 sb.setLength(sb.length() - 2);
\r
68 return sb.toString();
\r