package org.ovirt.engine.core.dao; import java.util.Map; import javax.inject.Inject; import javax.inject.Named; import javax.inject.Provider; import javax.inject.Singleton; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.CustomMapSqlParameterSource; import org.ovirt.engine.core.dal.dbbroker.DbEngineDialect; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.SimpleJdbcCall; @Named @Singleton class EntityDaoImpl implements EntityDao { private final JdbcTemplate jdbcTemplate; private final DbEngineDialect dbEngineDialect; private final Provider<CustomMapSqlParameterSource> sqlParameterSourceProvider; @Inject EntityDaoImpl( JdbcTemplate jdbcTemplate, DbEngineDialect dbEngineDialect, Provider<CustomMapSqlParameterSource> sqlParameterSourceProvider) { this.jdbcTemplate = jdbcTemplate; this.dbEngineDialect = dbEngineDialect; this.sqlParameterSourceProvider = sqlParameterSourceProvider; } @Override public String getEntityNameByIdAndType(Guid objectId, VdcObjectType vdcObjectType) { MapSqlParameterSource parameterSource = sqlParameterSourceProvider.get() .addValue("entity_id", objectId) .addValue("object_type", vdcObjectType.getValue()); Map<String, Object> dbResults = new SimpleJdbcCall(jdbcTemplate) .withFunctionName("fn_get_entity_name") .execute(parameterSource); String resultKey = dbEngineDialect.getFunctionReturnKey(); return dbResults.get(resultKey) != null ? dbResults.get(resultKey).toString() : null; } }