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.LibvirtSecret; import org.ovirt.engine.core.common.businessentities.storage.LibvirtSecretUsageType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; /** * {@code LibvirtSecretDaoImpl} provides an implementation of {@link LibvirtSecretDao}. */ @Named @Singleton public class LibvirtSecretDaoImpl extends DefaultGenericDao<LibvirtSecret, Guid> implements LibvirtSecretDao { LibvirtSecretDaoImpl() { super("LibvirtSecret"); } @Override protected MapSqlParameterSource createFullParametersMapper(LibvirtSecret entity) { return createIdParameterMapper(entity.getId()) .addValue("secret_value", DbFacadeUtils.encryptPassword(entity.getValue())) .addValue("secret_usage_type", entity.getUsageType()) .addValue("secret_description", entity.getDescription()) .addValue("provider_id", entity.getProviderId()) .addValue("_create_date", entity.getCreationDate()); } @Override protected MapSqlParameterSource createIdParameterMapper(Guid uuid) { return getCustomMapSqlParameterSource().addValue("secret_id", uuid); } @Override protected RowMapper<LibvirtSecret> createEntityRowMapper() { return libvirtSecretRowMapper; } private static final RowMapper<LibvirtSecret> libvirtSecretRowMapper = (rs, rowNum) -> { LibvirtSecret entity = new LibvirtSecret(); entity.setId(getGuid(rs, "secret_id")); entity.setValue(DbFacadeUtils.decryptPassword(rs.getString("secret_value"))); entity.setUsageType(LibvirtSecretUsageType.forValue(rs.getInt("secret_usage_type"))); entity.setDescription(rs.getString("secret_description")); entity.setProviderId(getGuid(rs, "provider_id")); entity.setCreationDate(DbFacadeUtils.fromDate(rs.getTimestamp("_create_date"))); return entity; }; @Override public List<LibvirtSecret> getAllByProviderId(Guid providerId) { return getCallsHandler().executeReadList("GetAllLibvirtSecretsByProviderId", libvirtSecretRowMapper, getCustomMapSqlParameterSource().addValue("provider_id", providerId)); } @Override public List<LibvirtSecret> getAllByStoragePoolIdFilteredByActiveStorageDomains(Guid storagePoolId) { return getCallsHandler().executeReadList("GetLibvirtSecretsByPoolIdOnActiveDomains", libvirtSecretRowMapper, getCustomMapSqlParameterSource().addValue("storage_pool_id", storagePoolId)); } }