using System;
using NPetshop.Domain;
using NPetshop.Persistence.Interfaces;
using IBatisNet.DataMapper.Exceptions;
namespace NPetshop.Persistence.MapperDao
{
///
/// Summary description for SequenceSqlMapDao.
///
public class SequenceSqlMapDao : BaseSqlMapDao, ISequenceDao
{
#region ISequenceDao Members
///
/// This is a generic sequence ID generator that is based on a database
/// table called 'SEQUENCE', which contains two columns (NAME, NEXTID).
///
/// name The name of the sequence.
/// The Next ID
public int GetNextId(string name)
{
Sequence sequence = new Sequence(name, -1);
sequence = ExecuteQueryForObject("GetSequence", sequence) as Sequence;
if (sequence == null)
{
throw new DataMapperException("Error: A null sequence was returned from the database (could not get next " + name + " sequence).");
}
object parameterObject = new Sequence(name, sequence.NextId + 1);
ExecuteUpdate("UpdateSequence", parameterObject);
return sequence.NextId;
}
#endregion
}
}