package com.robonobo.midas.dao; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.Expression; import org.springframework.stereotype.Repository; import com.robonobo.midas.model.MidasUser; @Repository("userDao") public class UserDaoImpl extends MidasDao implements UserDao { @Override public MidasUser getById(long id) { return (MidasUser) getSession().get(MidasUser.class, id); } @Override public MidasUser getByEmail(String email) { Criteria c = getSession().createCriteria(MidasUser.class); c.add(Expression.eq("email", email)); List<MidasUser> list = c.list(); MidasUser user = null; if(list.size() > 0) user = list.get(0); return user; } @SuppressWarnings("unchecked") @Override public List<MidasUser> getAll() { return getSession().createCriteria(MidasUser.class).list(); } @Override public MidasUser create(MidasUser user) { MidasUser currentU = getByEmail(user.getEmail()); if(currentU != null) throw new IllegalArgumentException("User with email "+user.getEmail()+" already exists"); save(user); return user; } @Override public void save(MidasUser user) { getSession().saveOrUpdate(user); } @Override public void delete(MidasUser user) { getSession().delete(user); } @Override public Long getUserCount() { Query q = getSession().createQuery("select count(*) from MidasUser"); return (Long) q.uniqueResult(); } }