package io.ebeaninternal.server.core;

import io.ebean.CallableSql;
import io.ebean.EbeanServer;
import io.ebeaninternal.api.BindParams;
import io.ebeaninternal.api.BindParams.Param;
import io.ebeaninternal.api.SpiCallableSql;
import io.ebeaninternal.api.TransactionEventTable;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.SQLException;


public class DefaultCallableSql implements Serializable, SpiCallableSql {

  private static final long serialVersionUID = 8984272253185424701L;

  private transient final EbeanServer server;

  
The callable sql.
/** * The callable sql. */
private String sql;
To display in the transaction log to help identify the procedure.
/** * To display in the transaction log to help identify the procedure. */
private String label; private int timeout;
Holds the table modification information. On commit this information is used to manage the cache etc.
/** * Holds the table modification information. On commit this information is * used to manage the cache etc. */
private final TransactionEventTable transactionEvent = new TransactionEventTable(); private final BindParams bindParameters = new BindParams();
Create with callable sql.
/** * Create with callable sql. */
public DefaultCallableSql(EbeanServer server, String sql) { this.server = server; this.sql = sql; } public void execute() { server.execute(this, null); } @Override public String getLabel() { return label; } @Override public CallableSql setLabel(String label) { this.label = label; return this; } @Override public int getTimeout() { return timeout; } @Override public String getSql() { return sql; } @Override public CallableSql setTimeout(int secs) { this.timeout = secs; return this; } @Override public CallableSql setSql(String sql) { this.sql = sql; return this; } @Override public CallableSql bind(int position, Object value) { bindParameters.setParameter(position, value); return this; } @Override public CallableSql setParameter(int position, Object value) { bindParameters.setParameter(position, value); return this; } @Override public CallableSql registerOut(int position, int type) { bindParameters.registerOut(position, type); return this; } @Override public Object getObject(int position) { Param p = bindParameters.getParameter(position); return p.getOutValue(); } @Override public boolean executeOverride(CallableStatement cstmt) throws SQLException { return false; } @Override public CallableSql addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { transactionEvent.add(tableName, inserts, updates, deletes); return this; }
Return the TransactionEvent which holds the table modification information for this CallableSql. This information is merged into the transaction after the transaction is commited.
/** * Return the TransactionEvent which holds the table modification * information for this CallableSql. This information is merged into the * transaction after the transaction is commited. */
@Override public TransactionEventTable getTransactionEventTable() { return transactionEvent; } @Override public BindParams getBindParams() { return bindParameters; } }