package org.openiam.base.id;
// Generated Dec 2, 2007 5:41:38 PM by Hibernate Tools 3.2.0.b11
import java.util.List;
import javax.naming.InitialContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Example;
import org.openiam.exception.data.DataException;
import org.openiam.idm.srvc.audit.dto.IdmAuditLog;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateTemplate;
/**
* Home object for domain model class SequenceGen.
* @see org.openidm.srvc.dto.SequenceGen
* @author Hibernate Tools
*/
public class SequenceGenDAOImpl implements SequenceGenDAO {
private static final Log log = LogFactory.getLog(SequenceGenDAOImpl.class);
private HibernateTemplate hibernateTemplate;
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory session) {
hibernateTemplate = new HibernateTemplate(session);
}
protected SessionFactory getSessionFactory() {
try {
return (SessionFactory) new InitialContext()
.lookup("SessionFactory");
} catch (Exception e) {
log.error("Could not locate SessionFactory in JNDI", e);
throw new IllegalStateException(
"Could not locate SessionFactory in JNDI");
}
}
public synchronized String getNextId(String key) throws DataException {
try{
SequenceGen seq = this.findById(key);
//SequenceGen seq = findIdForUpdate(key);
if (seq == null) {
return null;
}
seq.incrementId();
hibernateTemplate.saveOrUpdate(seq);
return String.valueOf( seq.getNextId() );
}catch(DataAccessException dae) {
dae.printStackTrace();
log.error("Add operation failed.", dae);
throw new DataException( dae.getMessage(), dae.getCause() );
}
}
public SequenceGen findById( java.lang.String id) throws DataException {
log.debug("getting SequenceGen instance with id: " + id);
try {
SequenceGen s = new SequenceGen(id);
SequenceGen seq = (SequenceGen)hibernateTemplate
.get(org.openiam.base.id.SequenceGen.class, id, LockMode.UPGRADE);
//hibernateTemplate.lock(seq, LockMode.UPGRADE);
return seq;
}catch(DataAccessException dae) {
log.error("Find operation failed.", dae);
throw new DataException( dae.getMessage(), dae.getCause() );
}
}
}