package org.ovirt.engine.core.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; import java.util.List; import java.util.Map; import org.ovirt.engine.core.common.AuditLogSeverity; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.businessentities.AuditLog; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.NGuid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcCall; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; /** * ,code>AuditLogDAODbFacadeImpl</code> provides a concrete implementation of {@link AuditLogDAO}. It uses code * refactored from {@link DbFacade}. * * */ public class AuditLogDAODbFacadeImpl extends BaseDAODbFacade implements AuditLogDAO { @Override public AuditLog get(long id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("audit_log_id", id); ParameterizedRowMapper<AuditLog> mapper = new ParameterizedRowMapper<AuditLog>() { @Override public AuditLog mapRow(ResultSet rs, int rowNum) throws SQLException { AuditLog entity = new AuditLog(); entity.setaudit_log_id(rs.getLong("audit_log_id")); entity.setlog_time(DbFacadeUtils.fromDate(rs .getTimestamp("log_time"))); entity.setlog_type(AuditLogType.forValue(rs.getInt("log_type"))); entity.setseverity(AuditLogSeverity.forValue(rs .getInt("severity"))); entity.setmessage(rs.getString("message")); entity.setuser_id(NGuid.createGuidFromString(rs .getString("user_id"))); entity.setuser_name(rs.getString("user_name")); entity.setvds_id(NGuid.createGuidFromString(rs .getString("vds_id"))); entity.setvds_name(rs.getString("vds_name")); entity.setvm_id(NGuid.createGuidFromString(rs .getString("vm_id"))); entity.setvm_name(rs.getString("vm_name")); entity.setvm_template_id(NGuid.createGuidFromString(rs .getString("vm_template_id"))); entity.setvm_template_name(rs.getString("vm_template_name")); entity.setstorage_pool_id(NGuid.createGuidFromString(rs .getString("storage_pool_id"))); entity.setstorage_pool_name(rs.getString("storage_pool_name")); entity.setstorage_domain_id(NGuid.createGuidFromString(rs .getString("storage_domain_id"))); entity.setstorage_domain_name(rs .getString("storage_domain_name")); entity.setvds_group_id(NGuid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs .getString("vds_group_name")); entity.setGlusterVolumeId(NGuid.createGuidFromString(rs.getString("gluster_volume_id"))); entity.setGlusterVolumeName(rs.getString("gluster_volume_name")); return entity; } }; return getCallsHandler().executeRead("GetAuditLogByAuditLogId", mapper, parameterSource); } @SuppressWarnings("unchecked") @Override public List<AuditLog> getAllAfterDate(Date cutoff) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("date", cutoff); ParameterizedRowMapper<AuditLog> mapper = new ParameterizedRowMapper<AuditLog>() { @Override public AuditLog mapRow(ResultSet rs, int rowNum) throws SQLException { AuditLog entity = new AuditLog(); entity.setaudit_log_id(rs.getLong("audit_log_id")); entity.setlog_time(DbFacadeUtils.fromDate(rs .getTimestamp("log_time"))); entity.setlog_type(AuditLogType.forValue(rs.getInt("log_type"))); entity.setseverity(AuditLogSeverity.forValue(rs .getInt("severity"))); entity.setmessage(rs.getString("message")); entity.setuser_id(NGuid.createGuidFromString(rs .getString("user_id"))); entity.setuser_name(rs.getString("user_name")); entity.setvds_id(NGuid.createGuidFromString(rs .getString("vds_id"))); entity.setvds_name(rs.getString("vds_name")); entity.setvm_id(NGuid.createGuidFromString(rs .getString("vm_id"))); entity.setvm_name(rs.getString("vm_name")); entity.setvm_template_id(NGuid.createGuidFromString(rs .getString("vm_template_id"))); entity.setvm_template_name(rs.getString("vm_template_name")); entity.setstorage_pool_id(NGuid.createGuidFromString(rs .getString("storage_pool_id"))); entity.setstorage_pool_name(rs.getString("storage_pool_name")); entity.setstorage_domain_id(NGuid.createGuidFromString(rs .getString("storage_domain_id"))); entity.setstorage_domain_name(rs .getString("storage_domain_name")); entity.setvds_group_id(NGuid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs .getString("vds_group_name")); entity.setGlusterVolumeId(NGuid.createGuidFromString(rs.getString("gluster_volume_id"))); entity.setGlusterVolumeName(rs.getString("gluster_volume_name")); return entity; } }; return getCallsHandler().executeReadList("GetAuditLogLaterThenDate", mapper, parameterSource); } @Override public List<AuditLog> getAllWithQuery(String query) { ParameterizedRowMapper<AuditLog> mapper = new ParameterizedRowMapper<AuditLog>() { @Override public AuditLog mapRow(ResultSet rs, int rowNum) throws SQLException { AuditLog entity = new AuditLog(); entity.setaudit_log_id(rs.getLong("audit_log_id")); entity.setlog_time(DbFacadeUtils.fromDate(rs .getTimestamp("log_time"))); entity.setlog_type(AuditLogType.forValue(rs.getInt("log_type"))); entity.setseverity(AuditLogSeverity.forValue(rs .getInt("severity"))); entity.setmessage(rs.getString("message")); entity.setuser_id(Guid.createGuidFromString(rs .getString("user_id"))); entity.setuser_name(rs.getString("user_name")); entity.setvds_id(NGuid.createGuidFromString(rs .getString("vds_id"))); entity.setvds_name(rs.getString("vds_name")); entity.setvm_id(Guid.createGuidFromString(rs.getString("vm_id"))); entity.setvm_name(rs.getString("vm_name")); entity.setvm_template_id(Guid.createGuidFromString(rs .getString("vm_template_id"))); entity.setvm_template_name(rs.getString("vm_template_name")); entity.setstorage_pool_id(Guid.createGuidFromString(rs .getString("storage_pool_id"))); entity.setstorage_pool_name(rs.getString("storage_pool_name")); entity.setstorage_domain_id(Guid.createGuidFromString(rs .getString("storage_domain_id"))); entity.setstorage_domain_name(rs .getString("storage_domain_name")); entity.setvds_group_id(NGuid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs .getString("vds_group_name")); entity.setGlusterVolumeId(NGuid.createGuidFromString(rs.getString("gluster_volume_id"))); entity.setGlusterVolumeName(rs.getString("gluster_volume_name")); return entity; } }; return new SimpleJdbcTemplate(jdbcTemplate).query(query, mapper); } @SuppressWarnings("unchecked") @Override public List<AuditLog> getAll() { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource(); ParameterizedRowMapper<AuditLog> mapper = new ParameterizedRowMapper<AuditLog>() { @Override public AuditLog mapRow(ResultSet rs, int rowNum) throws SQLException { AuditLog entity = new AuditLog(); entity.setaudit_log_id(rs.getLong("audit_log_id")); entity.setlog_time(DbFacadeUtils.fromDate(rs .getTimestamp("log_time"))); entity.setlog_type(AuditLogType.forValue(rs.getInt("log_type"))); entity.setseverity(AuditLogSeverity.forValue(rs .getInt("severity"))); entity.setmessage(rs.getString("message")); entity.setuser_id(NGuid.createGuidFromString(rs .getString("user_id"))); entity.setuser_name(rs.getString("user_name")); entity.setvds_id(NGuid.createGuidFromString(rs .getString("vds_id"))); entity.setvds_name(rs.getString("vds_name")); entity.setvm_id(NGuid.createGuidFromString(rs .getString("vm_id"))); entity.setvm_name(rs.getString("vm_name")); entity.setvm_template_id(NGuid.createGuidFromString(rs .getString("vm_template_id"))); entity.setvm_template_name(rs.getString("vm_template_name")); entity.setstorage_pool_id(NGuid.createGuidFromString(rs .getString("storage_pool_id"))); entity.setstorage_pool_name(rs.getString("storage_pool_name")); entity.setstorage_domain_id(NGuid.createGuidFromString(rs .getString("storage_domain_id"))); entity.setstorage_domain_name(rs .getString("storage_domain_name")); entity.setvds_group_id(NGuid.createGuidFromString(rs .getString("vds_group_id"))); entity.setvds_group_name(rs .getString("vds_group_name")); entity.setGlusterVolumeId(NGuid.createGuidFromString(rs.getString("gluster_volume_id"))); entity.setGlusterVolumeName(rs.getString("gluster_volume_name")); return entity; } }; return getCallsHandler().executeReadList("GetAllFromAuditLog", mapper, parameterSource); } @Override public void save(AuditLog event) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("audit_log_id", event.getaudit_log_id()) .addValue("log_time", event.getlog_time()) .addValue("log_type", event.getlog_type()) .addValue("log_type_name", event.getlog_type_name()) .addValue("severity", event.getseverity()) .addValue("message", event.getmessage()) .addValue("user_id", event.getuser_id()) .addValue("user_name", event.getuser_name()) .addValue("vds_id", event.getvds_id()) .addValue("vds_name", event.getvds_name()) .addValue("vm_id", event.getvm_id()) .addValue("vm_name", event.getvm_name()) .addValue("vm_template_id", event.getvm_template_id()) .addValue("vm_template_name", event.getvm_template_name()) .addValue("storage_pool_id", event.getstorage_pool_id()) .addValue("storage_pool_name", event.getstorage_pool_name()) .addValue("storage_domain_id", event.getstorage_domain_id()) .addValue("storage_domain_name", event.getstorage_domain_name()) .addValue("vds_group_id", event.getvds_group_id()) .addValue("vds_group_name", event.getvds_group_name()) .addValue("gluster_volume_id", event.getGlusterVolumeId()) .addValue("gluster_volume_name", event.getGlusterVolumeName()); getCallsHandler().executeModification("InsertAuditLog", parameterSource); } @Override public void update(AuditLog event) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("audit_log_id", event.getaudit_log_id()) .addValue("log_time", event.getlog_time()) .addValue("log_type", event.getlog_type()) .addValue("severity", event.getseverity()) .addValue("message", event.getmessage()) .addValue("user_id", event.getuser_id()) .addValue("user_name", event.getuser_name()) .addValue("vds_id", event.getvds_id()) .addValue("vds_name", event.getvds_name()) .addValue("vm_id", event.getvm_id()) .addValue("vm_name", event.getvm_name()) .addValue("vm_template_id", event.getvm_template_id()) .addValue("vm_template_name", event.getvm_template_name()) .addValue("storage_pool_id", event.getstorage_pool_id()) .addValue("storage_pool_name", event.getstorage_pool_name()) .addValue("storage_domain_id", event.getstorage_domain_id()) .addValue("storage_domain_name", event.getstorage_domain_name()) .addValue("vds_group_id", event.getvds_group_id()) .addValue("vds_group_name", event.getvds_group_name()) .addValue("gluster_volume_id", event.getGlusterVolumeId()) .addValue("gluster_volume_name", event.getGlusterVolumeName()); getCallsHandler().executeModification("UpdateAuditLog", parameterSource); } @Override public void remove(long id) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("audit_log_id", id); getCallsHandler().executeModification("DeleteAuditLog", parameterSource); } @Override public void removeAllBeforeDate(Date cutoff) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("date", cutoff); getCallsHandler().executeModification("DeleteAuditLogOlderThenDate", parameterSource); } @Override public void removeAllForVds(Guid id, boolean removeConfigAlerts) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vds_id", id).addValue("delete_config_alerts", removeConfigAlerts); getCallsHandler().executeModification("DeleteAuditLogAlertsByVdsID", parameterSource); } @Override public void removeAllOfTypeForVds(Guid id, int type) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vds_id", id).addValue("log_type", type); getCallsHandler().executeModification("DeleteAuditAlertLogByVdsIDAndType", parameterSource); } @Override public int getTimeToWaitForNextPmOp(String vdsName, String event) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("vds_name", vdsName) .addValue("event", event) .addValue("wait_for_sec", Config.GetValue(ConfigValues.FenceQuietTimeBetweenOperationsInSec)); Map<String, Object> dbResults = new SimpleJdbcCall(jdbcTemplate).withFunctionName("get_seconds_to_wait_before_pm_operation").execute( parameterSource); String resultKey = DbFacade.getInstance().getDbEngineDialect().getFunctionReturnKey(); return dbResults.get(resultKey) != null ? ((Integer) dbResults.get(resultKey)).intValue() : 0; } }