package org.ovirt.engine.core.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcCall; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.core.dal.dbbroker.CustomMapSqlParameterSource; import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils; import org.ovirt.engine.core.dal.dbbroker.user_sessions; /** * <code>DBUserDAODbFacadeImpl</code> provides an implementation of {@link DbUserDAO} with the previously developed * {@link DbFacade} code. * */ public class DbUserDAODbFacadeImpl extends BaseDAODbFacade implements DbUserDAO { private class DbUserRowMapper implements ParameterizedRowMapper<DbUser> { @Override public DbUser mapRow(ResultSet rs, int rowNum) throws SQLException { DbUser entity = new DbUser(); entity.setdepartment(rs.getString("department")); entity.setdesktop_device(rs.getString("desktop_device")); entity.setdomain(rs.getString("domain")); entity.setemail(rs.getString("email")); entity.setgroups(rs.getString("groups")); entity.setname(rs.getString("name")); entity.setnote(rs.getString("note")); entity.setnote(rs.getString("note")); entity.setrole(rs.getString("role")); entity.setstatus(rs.getInt("status")); entity.setsurname(rs.getString("surname")); entity.setuser_icon_path(rs.getString("user_icon_path")); entity.setuser_id(Guid.createGuidFromString(rs.getString("user_id"))); entity.setsession_count(rs.getInt("session_count")); entity.setusername(rs.getString("username")); entity.setLastAdminCheckStatus(rs.getBoolean("last_admin_check_status")); entity.setGroupIds(rs.getString("group_ids")); return entity; } } private class DbUserMapSqlParameterSource extends CustomMapSqlParameterSource { public DbUserMapSqlParameterSource(DbUser user) { super(dialect); addValue("department", user.getdepartment()); addValue("desktop_device", user.getdesktop_device()); addValue("domain", user.getdomain()); addValue("email", user.getemail()); addValue("groups", user.getgroups()); addValue("name", user.getname()); addValue("note", user.getnote()); addValue("role", user.getrole()); addValue("status", user.getstatus()); addValue("surname", user.getsurname()); addValue("user_icon_path", user.getuser_icon_path()); addValue("user_id", user.getuser_id()); addValue("session_count", user.getsession_count()); addValue("username", user.getusername()); addValue("last_admin_check_status", user.getLastAdminCheckStatus()); addValue("group_ids", user.getGroupIds()); } } @Override public DbUser get(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("user_id", id); return getCallsHandler().executeRead("GetUserByUserId", new DbUserRowMapper(), parameterSource); } @Override public DbUser getByUsername(String username) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("username", username); return getCallsHandler().executeRead("GetUserByUserName", new DbUserRowMapper(), parameterSource); } @SuppressWarnings("unchecked") @Override public List<DbUser> getAllForVm(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vm_guid", id); return getCallsHandler().executeReadList("GetUsersByVmGuid", new DbUserRowMapper(), parameterSource); } @SuppressWarnings("unchecked") @Override public List<DbUser> getAllTimeLeasedUsersForVm(int vmid) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vm_pool_id", vmid); return getCallsHandler().executeReadList("Gettime_leasedusers_by_vm_pool_id", new DbUserRowMapper(), parameterSource); } @Override public List<DbUser> getAllWithQuery(String query) { return new SimpleJdbcTemplate(jdbcTemplate).query(query, new DbUserRowMapper()); } @SuppressWarnings("unchecked") @Override public List<user_sessions> getAllUserSessions() { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource(); ParameterizedRowMapper<user_sessions> mapper = new ParameterizedRowMapper<user_sessions>() { @Override public user_sessions mapRow(ResultSet rs, int rowNum) throws SQLException { user_sessions entity = new user_sessions(); entity.setbrowser(rs.getString("browser")); entity.setclient_type(rs.getString("client_type")); entity.setlogin_time(DbFacadeUtils.fromDate(rs .getTimestamp("login_time"))); entity.setos(rs.getString("os")); entity.setsession_id(rs.getString("session_id")); entity.setuser_id(Guid.createGuidFromString(rs .getString("user_id"))); return entity; } }; return getCallsHandler().executeReadList("GetAllFromuser_sessions", mapper, parameterSource); } @SuppressWarnings("unchecked") @Override public List<DbUser> getAll() { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource(); return getCallsHandler().executeReadList("GetAllFromUsers", new DbUserRowMapper(), parameterSource); } @Override public void save(DbUser user) { new SimpleJdbcCall(jdbcTemplate).withProcedureName("InsertUser").execute(new DbUserMapSqlParameterSource(user)); } @Override public void saveSession(user_sessions session) { if (!StringHelper.EqOp(session.getsession_id(), "")) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("browser", session.getbrowser()) .addValue("client_type", session.getclient_type()) .addValue("login_time", session.getlogin_time()) .addValue("os", session.getos()) .addValue("session_id", session.getsession_id()) .addValue("user_id", session.getuser_id()); getCallsHandler().executeModification("Insertuser_sessions", parameterSource); } } @Override public void update(DbUser user) { getCallsHandler().executeModification("UpdateUser", new DbUserMapSqlParameterSource(user)); } @Override public void remove(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("user_id", id); getCallsHandler().executeModification("DeleteUser", parameterSource); } @Override public void removeUserSession(String sessionid, Guid userid) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("session_id", sessionid).addValue("user_id", userid); new SimpleJdbcCall(jdbcTemplate).withProcedureName("Deleteuser_sessions").execute(parameterSource); } @Override public void removeUserSessions(Map<String, Guid> sessionmap) { for (Map.Entry<String, Guid> entry : sessionmap.entrySet()) { removeUserSession(entry.getKey(), entry.getValue()); } } @Override public void removeAllSessions() { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource(); new SimpleJdbcCall(jdbcTemplate).withProcedureName("DeleteAlluser_sessions").execute(parameterSource); } }