package org.ovirt.engine.core.dao.gluster; import java.util.Collection; import java.util.List; import javax.inject.Named; import javax.inject.Singleton; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeOptionEntity; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.MassOperationsGenericDao; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @Named @Singleton public class GlusterOptionDaoImpl extends MassOperationsGenericDao<GlusterVolumeOptionEntity, Guid> implements GlusterOptionDao { private static final RowMapper<GlusterVolumeOptionEntity> optionRowMapper = (rs, rowNum) -> { GlusterVolumeOptionEntity option = new GlusterVolumeOptionEntity(); option.setId(getGuidDefaultEmpty(rs, "id")); option.setVolumeId(getGuidDefaultEmpty(rs, "volume_id")); option.setKey(rs.getString("option_key")); option.setValue(rs.getString("option_val")); return option; }; public GlusterOptionDaoImpl() { super("GlusterOption"); setProcedureNameForGet("GetGlusterOptionById"); } @Override public void save(GlusterVolumeOptionEntity option) { getCallsHandler().executeModification("InsertGlusterVolumeOption", createVolumeOptionParams(option)); } @Override public void updateVolumeOption(Guid optionId, String optionValue) { getCallsHandler().executeModification("UpdateGlusterVolumeOption", getCustomMapSqlParameterSource() .addValue("id", optionId) .addValue("option_val", optionValue)); } @Override public void removeVolumeOption(Guid optionId) { getCallsHandler().executeModification("DeleteGlusterVolumeOption", getCustomMapSqlParameterSource().addValue("id", optionId)); } @Override public void removeAll(Collection<Guid> ids) { getCallsHandler().executeModification("DeleteGlusterVolumeOptions", getCustomMapSqlParameterSource().addValue("ids", StringUtils.join(ids, ','))); } @Override public GlusterVolumeOptionEntity getById(Guid id) { return getCallsHandler().executeRead("GetGlusterOptionById", optionRowMapper, createIdParameterMapper(id)); } @Override public List<GlusterVolumeOptionEntity> getOptionsOfVolume(Guid volumeId) { return getCallsHandler().executeReadList( "GetOptionsByGlusterVolumeGuid", optionRowMapper, getCustomMapSqlParameterSource().addValue("volume_id", volumeId)); } private MapSqlParameterSource createVolumeOptionParams(GlusterVolumeOptionEntity option) { return getCustomMapSqlParameterSource() .addValue("id", option.getId()) .addValue("volume_id", option.getVolumeId()) .addValue("option_key", option.getKey()) .addValue("option_val", option.getValue()); } @Override protected MapSqlParameterSource createFullParametersMapper(GlusterVolumeOptionEntity option) { return createVolumeOptionParams(option); } @Override protected MapSqlParameterSource createIdParameterMapper(Guid id) { return getCustomMapSqlParameterSource().addValue("id", id); } @Override protected RowMapper<GlusterVolumeOptionEntity> createEntityRowMapper() { return optionRowMapper; } }