package org.ovirt.engine.core.dao; import java.util.List; import javax.inject.Named; import javax.inject.Singleton; import org.ovirt.engine.core.common.businessentities.storage.LUNs; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; /** * {@code LunDaoImpl} provides a concrete implementation of {@link LunDao}. */ @Named @Singleton public class LunDaoImpl extends MassOperationsGenericDao<LUNs, String> implements LunDao { public LunDaoImpl() { super("luns"); setProcedureNameForGet("GetLUNByLUNId"); setProcedureNameForGetAll("GetAllFromLUNs"); setProcedureNameForRemove("DeleteLUN"); } protected static final RowMapper<LUNs> MAPPER = (rs, rowNum) -> { LUNs entity = new LUNs(); entity.setLUNId(rs.getString("lun_id")); entity.setPhysicalVolumeId(rs.getString("physical_volume_id")); entity.setVolumeGroupId(rs.getString("volume_group_id")); entity.setSerial(rs.getString("serial")); Integer lunMapping = (Integer) rs.getObject("lun_mapping"); if (lunMapping != null) { entity.setLunMapping(lunMapping); } entity.setVendorId(rs.getString("vendor_id")); entity.setProductId(rs.getString("product_id")); entity.setDeviceSize(rs.getInt("device_size")); entity.setDiskId(getGuid(rs, "disk_id")); entity.setDiskAlias(rs.getString("disk_alias")); entity.setStorageDomainId(getGuid(rs, "storage_id")); entity.setStorageDomainName(rs.getString("storage_name")); entity.setDiscardMaxSize((Long) rs.getObject("discard_max_size")); entity.setDiscardZeroesData((Boolean) rs.getObject("discard_zeroes_data")); return entity; }; @Override public List<LUNs> getAllForStorageServerConnection(String id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("storage_server_connection", id); return getCallsHandler().executeReadList("GetLUNsBystorage_server_connection", MAPPER, parameterSource); } @Override public List<LUNs> getAllForVolumeGroup(String id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("volume_group_id", id); return getCallsHandler().executeReadList("GetLUNsByVolumeGroupId", MAPPER, parameterSource); } @Override protected MapSqlParameterSource createIdParameterMapper(String id) { return getCustomMapSqlParameterSource().addValue("lun_id", id); } @Override protected RowMapper<LUNs> createEntityRowMapper() { return MAPPER; } @Override protected MapSqlParameterSource createFullParametersMapper(LUNs lun) { return createIdParameterMapper(lun.getId()) .addValue("physical_volume_id", lun.getPhysicalVolumeId()) .addValue("volume_group_id", lun.getVolumeGroupId()) .addValue("serial", lun.getSerial()) .addValue("lun_mapping", lun.getLunMapping()) .addValue("vendor_id", lun.getVendorId()) .addValue("product_id", lun.getProductId()) .addValue("device_size", lun.getDeviceSize()) .addValue("discard_max_size", lun.getDiscardMaxSize()) .addValue("discard_zeroes_data", lun.getDiscardZeroesData()); } }