package ameba.db.ebean;
import ameba.db.model.Model;
import ameba.db.model.Updater;
import io.ebean.Ebean;
import io.ebean.EbeanServer;
import io.ebean.SqlUpdate;
import io.ebean.Update;
/**
* <p>EbeanUpdater class.</p>
*
* @author icode
* @since 0.1.6e
*
*/
public class EbeanUpdater<M extends Model> extends Updater<M> {
private Update<M> update;
private EbeanServer server;
/**
* <p>Constructor for EbeanUpdater.</p>
*
* @param serverName a {@link java.lang.String} object.
* @param modelType a {@link java.lang.Class} object.
* @param sql a {@link java.lang.String} object.
*/
public EbeanUpdater(String serverName, Class<M> modelType, String sql) {
super(serverName, modelType, sql);
server = Ebean.getServer(getServerName());
}
/**
* <p>Getter for the field <code>update</code>.</p>
*
* @return a {@link io.ebean.Update} object.
*/
public Update<M> getUpdate() {
if (update == null)
update = createUpdate();
return update;
}
/**
* <p>createUpdate.</p>
*
* @return a {@link io.ebean.Update} object.
*/
public Update<M> createUpdate() {
return server.createUpdate(getModelType(), getSqlOrName());
}
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings("unchecked")
public <E extends M> Updater<E> on(String server) {
return new EbeanUpdater(server, getModelType(), getSqlOrName());
}
/** {@inheritDoc} */
@Override
public String getName() {
return getUpdate().getName();
}
/** {@inheritDoc} */
@Override
public SqlUpdate sqlUpdate() {
return server.createSqlUpdate(getSqlOrName());
}
/** {@inheritDoc} */
@Override
public Update<M> setNotifyCache(boolean notifyCache) {
return getUpdate().setNotifyCache(notifyCache);
}
/** {@inheritDoc} */
@Override
public Update<M> setTimeout(int secs) {
return getUpdate().setTimeout(secs);
}
/** {@inheritDoc} */
@Override
public int execute() {
return getUpdate().execute();
}
/** {@inheritDoc} */
@Override
public Update<M> set(int position, Object value) {
return getUpdate().set(position, value);
}
/** {@inheritDoc} */
@Override
public Update<M> setParameter(int position, Object value) {
return getUpdate().setParameter(position, value);
}
/** {@inheritDoc} */
@Override
public Update<M> setNull(int position, int jdbcType) {
return getUpdate().setNull(position, jdbcType);
}
/** {@inheritDoc} */
@Override
public Update<M> setNullParameter(int position, int jdbcType) {
return getUpdate().setNullParameter(position, jdbcType);
}
/** {@inheritDoc} */
@Override
public Update<M> set(String name, Object value) {
return getUpdate().set(name, value);
}
/** {@inheritDoc} */
@Override
public Update<M> setParameter(String name, Object param) {
return getUpdate().setParameter(name, param);
}
/** {@inheritDoc} */
@Override
public Update<M> setNull(String name, int jdbcType) {
return getUpdate().setNull(name, jdbcType);
}
/** {@inheritDoc} */
@Override
public Update<M> setNullParameter(String name, int jdbcType) {
return getUpdate().setNullParameter(name, jdbcType);
}
/** {@inheritDoc} */
@Override
public String getGeneratedSql() {
return getUpdate().getGeneratedSql();
}
}