package org.jboss.ejb.plugins.cmp.jdbc.bridge;
import org.jboss.deployment.DeploymentException;
import org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCCMPFieldMetaData;
import org.jboss.ejb.EntityEnterpriseContext;
import java.sql.PreparedStatement;
public abstract class JDBCCMP2xAutoUpdatedFieldBridge extends JDBCCMP2xFieldBridge
{
public JDBCCMP2xAutoUpdatedFieldBridge(JDBCStoreManager manager,
JDBCCMPFieldMetaData metadata)
throws DeploymentException
{
super(manager, metadata);
defaultFlags |= JDBCEntityBridge.ADD_TO_SET_ON_UPDATE;
}
public JDBCCMP2xAutoUpdatedFieldBridge(JDBCCMP2xFieldBridge cmpField)
throws DeploymentException
{
super(
(JDBCStoreManager) cmpField.getManager(),
cmpField.getFieldName(),
cmpField.getFieldType(),
cmpField.getJDBCType(),
cmpField.isReadOnly(), cmpField.getReadTimeOut(),
cmpField.getPrimaryKeyClass(),
cmpField.getPrimaryKeyField(),
cmpField,
null, cmpField.getColumnName()
);
defaultFlags |= JDBCEntityBridge.ADD_TO_SET_ON_UPDATE; cmpField.addDefaultFlag(JDBCEntityBridge.ADD_TO_SET_ON_UPDATE);
}
public void initInstance(EntityEnterpriseContext ctx)
{
setFirstVersion(ctx);
}
public int setInstanceParameters(PreparedStatement ps,
int parameterIndex,
EntityEnterpriseContext ctx)
{
Object value;
if(ctx.isValid())
{
value = isDirty(ctx) ? getInstanceValue(ctx) : updateVersion(ctx);
}
else
{
value = getInstanceValue(ctx);
}
return setArgumentParameters(ps, parameterIndex, value);
}
public abstract void setFirstVersion(EntityEnterpriseContext ctx);
public abstract Object updateVersion(EntityEnterpriseContext ctx);
}