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.SimpleJdbcTemplate; import org.ovirt.engine.core.common.businessentities.VmPoolType; import org.ovirt.engine.core.common.businessentities.time_lease_vm_pool_map; import org.ovirt.engine.core.common.businessentities.vm_pool_map; import org.ovirt.engine.core.common.businessentities.vm_pools; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils; /** * <code>VmPoolDAODbFacadeImpl</code> provides an implementation of {@link VmPoolDAO} based on implementation code from * {@link DbFacade}. * */ public class VmPoolDAODbFacadeImpl extends BaseDAODbFacade implements VmPoolDAO { private class TimeLeaseVmPoolRowMapper implements ParameterizedRowMapper<time_lease_vm_pool_map> { @Override public time_lease_vm_pool_map mapRow(ResultSet rs, int rowNum) throws SQLException { time_lease_vm_pool_map entity = new time_lease_vm_pool_map(); entity.setend_time(DbFacadeUtils.fromDate(rs.getTimestamp("end_time"))); entity.setid(Guid.createGuidFromString(rs.getString("id"))); entity.setstart_time(DbFacadeUtils.fromDate(rs.getTimestamp("start_time"))); entity.settype(rs.getInt("type")); entity.setvm_pool_id(Guid.createGuidFromString(rs.getString("vm_pool_id"))); return entity; } } @Override public void removeVmFromVmPool(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vm_guid", id); getCallsHandler().executeModification("DeleteVm_pool_map", parameterSource); } @Override public vm_pools get(NGuid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vm_pool_id", id); ParameterizedRowMapper<vm_pools> mapper = new ParameterizedRowMapper<vm_pools>() { @Override public vm_pools mapRow(ResultSet rs, int rowNum) throws SQLException { vm_pools entity = new vm_pools(); entity.setvm_pool_description(rs .getString("vm_pool_description")); entity.setvm_pool_id(Guid.createGuidFromString(rs .getString("vm_pool_id"))); entity.setvm_pool_name(rs.getString("vm_pool_name")); entity.setvm_pool_type(VmPoolType.forValue(rs .getInt("vm_pool_type"))); entity.setparameters(rs.getString("parameters")); entity.setvds_group_id(Guid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs.getString("vds_group_name")); entity.setvm_assigned_count(rs.getInt("assigned_vm_count")); entity.setvm_running_count(rs.getInt("vm_running_count")); return entity; } }; return getCallsHandler().executeRead("GetVm_poolsByvm_pool_id", mapper, parameterSource); } @Override public vm_pools getByName(String name) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vm_pool_name", name); ParameterizedRowMapper<vm_pools> mapper = new ParameterizedRowMapper<vm_pools>() { @Override public vm_pools mapRow(ResultSet rs, int rowNum) throws SQLException { vm_pools entity = new vm_pools(); entity.setvm_pool_description(rs .getString("vm_pool_description")); entity.setvm_pool_id(Guid.createGuidFromString(rs .getString("vm_pool_id"))); entity.setvm_pool_name(rs.getString("vm_pool_name")); entity.setvm_pool_type(VmPoolType.forValue(rs .getInt("vm_pool_type"))); entity.setparameters(rs.getString("parameters")); entity.setvds_group_id(Guid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs.getString("vds_group_name")); return entity; } }; return getCallsHandler().executeRead("GetVm_poolsByvm_pool_name", mapper, parameterSource); } @SuppressWarnings("unchecked") @Override public List<vm_pools> getAll() { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource(); ParameterizedRowMapper<vm_pools> mapper = new ParameterizedRowMapper<vm_pools>() { @Override public vm_pools mapRow(ResultSet rs, int rowNum) throws SQLException { vm_pools entity = new vm_pools(); entity.setvm_pool_description(rs .getString("vm_pool_description")); entity.setvm_pool_id(Guid.createGuidFromString(rs .getString("vm_pool_id"))); entity.setvm_pool_name(rs.getString("vm_pool_name")); entity.setvm_pool_type(VmPoolType.forValue(rs .getInt("vm_pool_type"))); entity.setparameters(rs.getString("parameters")); entity.setvm_assigned_count(rs.getInt("assigned_vm_count")); entity.setvm_running_count(rs.getInt("vm_running_count")); entity.setvds_group_id(Guid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs.getString("vds_group_name")); return entity; } }; return getCallsHandler().executeReadList("GetAllFromVm_pools", mapper, parameterSource); } @SuppressWarnings("unchecked") @Override public List<vm_pools> getAllForUser(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("user_id", id); ParameterizedRowMapper<vm_pools> mapper = new ParameterizedRowMapper<vm_pools>() { @Override public vm_pools mapRow(ResultSet rs, int rowNum) throws SQLException { vm_pools entity = new vm_pools(); entity.setvm_pool_id(Guid.createGuidFromString(rs .getString("vm_pool_id"))); entity.setvm_pool_name(rs.getString("vm_pool_name")); entity.setvm_pool_description(rs .getString("vm_pool_description")); entity.setvm_pool_type(VmPoolType.forValue(rs .getInt("vm_pool_type"))); entity.setparameters(rs.getString("parameters")); entity.setvds_group_id(Guid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs.getString("vds_group_name")); return entity; } }; return getCallsHandler().executeReadList("GetAllVm_poolsByUser_id_with_groups_and_UserRoles", mapper, parameterSource); } @SuppressWarnings("unchecked") @Override public List<vm_pools> getAllForAdGroup(Guid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("ad_group_id", id); ParameterizedRowMapper<vm_pools> mapper = new ParameterizedRowMapper<vm_pools>() { @Override public vm_pools mapRow(ResultSet rs, int rowNum) throws SQLException { vm_pools entity = new vm_pools(); entity.setvm_pool_id(Guid.createGuidFromString(rs .getString("vm_pool_id"))); entity.setvm_pool_name(rs.getString("vm_pool_name")); entity.setvm_pool_description(rs .getString("vm_pool_description")); entity.setvm_pool_type(VmPoolType.forValue(rs .getInt("vm_pool_type"))); entity.setparameters(rs.getString("parameters")); entity.setvds_group_id(Guid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs.getString("vds_group_name")); return entity; } }; return getCallsHandler().executeReadList("GetVm_poolsByAdGroup_id", mapper, parameterSource); } @Override public List<vm_pools> getAllWithQuery(String query) { ParameterizedRowMapper<vm_pools> mapper = new ParameterizedRowMapper<vm_pools>() { @Override public vm_pools mapRow(ResultSet rs, int rowNum) throws SQLException { vm_pools entity = new vm_pools(); entity.setvm_pool_description(rs .getString("vm_pool_description")); entity.setvm_pool_id(Guid.createGuidFromString(rs .getString("vm_pool_id"))); entity.setvm_pool_name(rs.getString("vm_pool_name")); entity.setvm_pool_type(VmPoolType.forValue(rs .getInt("vm_pool_type"))); entity.setparameters(rs.getString("parameters")); entity.setvm_assigned_count(rs.getInt("assigned_vm_count")); entity.setvm_running_count(rs.getInt("vm_running_count")); entity.setvds_group_id(Guid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs.getString("vds_group_name")); return entity; } }; return new SimpleJdbcTemplate(jdbcTemplate).query(query, mapper); } @Override public void save(vm_pools pool) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vm_pool_description", pool.getvm_pool_description()) .addValue("vm_pool_id", pool.getvm_pool_id()) .addValue("vm_pool_name", pool.getvm_pool_name()) .addValue("vm_pool_type", pool.getvm_pool_type()) .addValue("parameters", pool.getparameters()) .addValue("vds_group_id", pool.getvds_group_id()); Map<String, Object> result = getCallsHandler().executeModification("InsertVm_pools", parameterSource); pool.setvm_pool_id(new Guid(result.get("vm_pool_id").toString())); } @Override public void update(vm_pools pool) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vm_pool_description", pool.getvm_pool_description()) .addValue("vm_pool_id", pool.getvm_pool_id()) .addValue("vm_pool_name", pool.getvm_pool_name()) .addValue("vm_pool_type", pool.getvm_pool_type()) .addValue("parameters", pool.getparameters()) .addValue("vds_group_id", pool.getvds_group_id()); getCallsHandler().executeModification("UpdateVm_pools", parameterSource); } @Override public void remove(NGuid id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vm_pool_id", id); getCallsHandler().executeModification("DeleteVm_pools", parameterSource); } @Override public vm_pool_map getVmPoolMapByVmGuid(Guid vmId) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("vm_guid", vmId); ParameterizedRowMapper<vm_pool_map> mapper = new ParameterizedRowMapper<vm_pool_map>() { @Override public vm_pool_map mapRow(ResultSet rs, int rowNum) throws SQLException { vm_pool_map entity = new vm_pool_map(); entity.setvm_guid(Guid.createGuidFromString(rs.getString("vm_guid"))); entity.setvm_pool_id(Guid.createGuidFromString(rs.getString("vm_pool_id"))); return entity; } }; return getCallsHandler().executeRead("GetVm_pool_mapByvm_guid", mapper, parameterSource); } @Override public void addVmToPool(vm_pool_map map) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("vm_guid", map.getvm_guid()) .addValue("vm_pool_id", map.getvm_pool_id()); getCallsHandler().executeModification("InsertVm_pool_map", parameterSource); } @SuppressWarnings("unchecked") @Override public List<vm_pool_map> getVmPoolsMapByVmPoolId(NGuid vmPoolId) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("vm_pool_id", vmPoolId); ParameterizedRowMapper<vm_pool_map> mapper = new ParameterizedRowMapper<vm_pool_map>() { @Override public vm_pool_map mapRow(ResultSet rs, int rowNum) throws SQLException { vm_pool_map entity = new vm_pool_map(); entity.setvm_guid(Guid.createGuidFromString(rs.getString("vm_guid"))); entity.setvm_pool_id(Guid.createGuidFromString(rs.getString("vm_pool_id"))); return entity; } }; return getCallsHandler().executeReadList("GetVm_pool_mapByvm_pool_id", mapper, parameterSource); } @Override public time_lease_vm_pool_map getTimeLeasedVmPoolMapByIdForVmPool(Guid id, NGuid vmPoolId) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("id", id).addValue( "vm_pool_id", vmPoolId); return getCallsHandler().executeRead("Gettime_lease_vm_pool_mapByidAndByvm_pool_id", new TimeLeaseVmPoolRowMapper(), parameterSource); } @Override public void addTimeLeasedVmPoolMap(time_lease_vm_pool_map map) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("end_time", map.getend_time()) .addValue("id", map.getid()) .addValue("start_time", map.getstart_time()) .addValue("type", map.gettype()) .addValue("vm_pool_id", map.getvm_pool_id()); getCallsHandler().executeModification("Inserttime_lease_vm_pool_map", parameterSource); } @Override public void updateTimeLeasedVmPoolMap(time_lease_vm_pool_map map) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("end_time", map.getend_time()).addValue("id", map.getid()).addValue("start_time", map.getstart_time()).addValue( "type", map.gettype()).addValue("vm_pool_id", map.getvm_pool_id()); getCallsHandler().executeModification("Updatetime_lease_vm_pool_map", parameterSource); } @Override public void removeTimeLeasedVmPoolMap(Guid id, Guid vmPoolId) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("id", id).addValue( "vm_pool_id", vmPoolId); getCallsHandler().executeModification("Deletetime_lease_vm_pool_map", parameterSource); } @SuppressWarnings("unchecked") @Override public List<time_lease_vm_pool_map> getAllTimeLeasedVmPoolMaps() { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource(); return getCallsHandler().executeReadList("GetAllFromtime_lease_vm_pool_map", new TimeLeaseVmPoolRowMapper(), parameterSource); } }