package com.ibatis.jpetstore.persistence.sqlmapdao;
import com.ibatis.dao.client.DaoException;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.jpetstore.domain.Sequence;
import com.ibatis.jpetstore.persistence.iface.SequenceDao;
public class SequenceSqlMapDao extends BaseSqlMapDao implements SequenceDao {
public SequenceSqlMapDao(DaoManager daoManager) {
super(daoManager);
}
/**
* This is a generic sequence ID generator that is based on a database
* table called 'SEQUENCE', which contains two columns (NAME, NEXTID).
* <p/>
* This approach should work with any database.
*
* @param name The name of the sequence.
* @return The Next ID
* @
*/
public synchronized int getNextId(String name) {
Sequence sequence = new Sequence(name, -1);
sequence = (Sequence) queryForObject("getSequence", sequence);
if (sequence == null) {
throw new DaoException("Error: A null sequence was returned from the database (could not get next " + name + " sequence).");
}
Object parameterObject = new Sequence(name, sequence.getNextId() + 1);
update("updateSequence", parameterObject);
return sequence.getNextId();
}
}