package org.ovirt.engine.core.dao.profiles; import java.sql.ResultSet; import java.sql.SQLException; import org.ovirt.engine.core.common.businessentities.profiles.ProfileBase; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.DefaultGenericDao; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; public abstract class ProfileBaseDaoImpl<T extends ProfileBase> extends DefaultGenericDao<T, Guid> implements ProfilesDao<T> { protected final RowMapper<T> mapper = createEntityRowMapper(); public ProfileBaseDaoImpl(String entityStoredProcedureName) { super(entityStoredProcedureName); } @Override protected MapSqlParameterSource createFullParametersMapper(T obj) { return createIdParameterMapper( obj.getId()) .addValue("name", obj.getName()) .addValue("qos_id", obj.getQosId()) .addValue("description", obj.getDescription()); } @Override protected MapSqlParameterSource createIdParameterMapper(Guid guid) { return getCustomMapSqlParameterSource() .addValue("id", guid); } protected abstract static class ProfileBaseDaoFacadaeImplMapper<M extends ProfileBase> implements RowMapper<M> { @Override public M mapRow(ResultSet rs, int rowNum) throws SQLException { M entity = createProfileEntity(rs); entity.setId(getGuid(rs, "id")); entity.setName(rs.getString("name")); entity.setDescription(rs.getString("description")); entity.setQosId(getGuid(rs, "qos_id")); return entity; } /** * @return entity of derived mapper class */ protected abstract M createProfileEntity(ResultSet rs) throws SQLException; } }