package org.ovirt.engine.core.dao; import java.util.List; import java.util.Map; import java.util.Objects; import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; import org.ovirt.engine.core.dal.dbbroker.CustomMapSqlParameterSource; import org.ovirt.engine.core.dal.dbbroker.DbEngineDialect; import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @Named @Singleton public class SystemStatisticsDaoImpl implements SystemStatisticsDao { private final JdbcTemplate jdbcTemplate; private final DbEngineDialect dbEngineDialect; @Inject SystemStatisticsDaoImpl(JdbcTemplate jdbcTemplate, DbEngineDialect dbEngineDialect) { Objects.requireNonNull(jdbcTemplate); Objects.requireNonNull(dbEngineDialect); this.jdbcTemplate = jdbcTemplate; this.dbEngineDialect = dbEngineDialect; } @Override public Integer getSystemStatisticsValue(String entity) { return getSystemStatisticsValue(entity, ""); } @Override public Integer getSystemStatisticsValue(String entity, String status) { MapSqlParameterSource parameterSource = new CustomMapSqlParameterSource(dbEngineDialect) .addValue("entity", entity) .addValue("status", status); RowMapper<Integer> mapper = (rs, rowNum) -> rs.getInt("val"); Map<String, Object> dbResults = dbEngineDialect .createJdbcCallForQuery(jdbcTemplate) .withProcedureName("Getsystem_statistics") .returningResultSet("RETURN_VALUE", mapper) .execute(parameterSource); return (Integer) DbFacadeUtils.asSingleResult((List<?>) dbResults.get("RETURN_VALUE")); } }