package org.ovirt.engine.core.dao; import java.util.List; import java.util.Map; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.user_sessions; import org.ovirt.engine.core.dal.dbbroker.user_sessions_id; import org.ovirt.engine.core.dao.users.SessionDAOHibernateImpl; import org.ovirt.engine.core.dao.users.UserDAOHibernateImpl; /** * <code>DbUserDAOWrapperImpl</code> provides an implementation of {@link DbUserDAO} using child DAOs. * */ public class DbUserDAOWrapperImpl extends BaseDAOWrapperImpl implements DbUserDAO { private UserDAOHibernateImpl userDAO = new UserDAOHibernateImpl(); private SessionDAOHibernateImpl sessionDAO = new SessionDAOHibernateImpl(); @Override public void setSession(Session session) { super.setSession(session); userDAO.setSession(session); sessionDAO.setSession(session); } @Override public DbUser get(Guid id) { return userDAO.get(id); } @Override public DbUser getByUsername(String username) { return userDAO.findOneByCriteria(Restrictions.eq("username", username)); } @SuppressWarnings("unchecked") @Override public List<DbUser> getAllForVm(Guid id) { Session session = getSession(); Query query = session.createQuery("select user from DbUser user, permissions perms " + "where user.id = perms.adElementId " + "and perms.objectType = 2 " + "and perms.objectId = :vm_id"); query.setParameter("vm_id", id); return (List<DbUser>) query.list(); } @Override public List<DbUser> getAllTimeLeasedUsersForVm(int vmid) { // TODO this API is broken return null; } @Override public List<DbUser> getAllWithQuery(String query) { return userDAO.findAllWithSQL(query); } @Override public List<DbUser> getAll() { return userDAO.getAll(); } @Override public List<user_sessions> getAllUserSessions() { return sessionDAO.getAll(); } @Override public void save(DbUser user) { userDAO.save(user); } @Override public void saveSession(user_sessions session) { sessionDAO.save(session); } @Override public void update(DbUser user) { save(user); } @Override public void remove(Guid user) { userDAO.remove(user); } @Override public void removeUserSession(String session, Guid user) { sessionDAO.remove(new user_sessions_id(user, session)); } @Override public void removeUserSessions(Map<String, Guid> sessionmap) { for (Map.Entry<String, Guid> entry : sessionmap.entrySet()) { sessionDAO.remove(new user_sessions_id(entry.getValue(), entry.getKey())); } } @Override public void removeAllSessions() { // List<user_sessions> all = sessionDAO.getAll(); // user_sessions[] sessions = new user_sessions[all.size()]; // all.toArray(sessions); for (user_sessions session : sessionDAO.getAll()) { sessionDAO.remove(new user_sessions_id(session.getuser_id(), session.getsession_id())); } } }