package org.ovirt.engine.core.dao; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.inject.Named; import javax.inject.Singleton; import org.ovirt.engine.core.compat.Guid; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @Named @Singleton public class SupportedHostFeatureDaoImpl extends BaseDao implements SupportedHostFeatureDao { private static final RowMapper<String> supportedHostFeatureRowMapper = (rs, rowNum) -> rs.getString("feature_name"); private MapSqlParameterSource createSupportedHostFeatureParameterMapper(String feature, Guid hostId) { return getCustomMapSqlParameterSource() .addValue("host_id", hostId) .addValue("feature_name", feature); } @Override public void addSupportedHostFeature(Guid hostId, String feature) { getCallsHandler().executeModification("InsertSupportedHostFeature", createSupportedHostFeatureParameterMapper(feature, hostId)); } @Override public void addAllSupportedHostFeature(final Guid hostId, Set<String> features) { getCallsHandler().executeStoredProcAsBatch("InsertSupportedHostFeature", features, feature -> createSupportedHostFeatureParameterMapper(feature, hostId)); } @Override public Set<String> getSupportedHostFeaturesByHostId(Guid hostId) { List<String> featureList = getCallsHandler().executeReadList("GetSupportedHostFeaturesByHostId", supportedHostFeatureRowMapper, getCustomMapSqlParameterSource().addValue("host_id", hostId)); return new HashSet<>(featureList); } @Override public void removeAllSupportedHostFeature(final Guid hostId, Set<String> features) { getCallsHandler().executeStoredProcAsBatch("RemoveSupportedHostFeature", features, feature -> createSupportedHostFeatureParameterMapper(feature, hostId)); } }