/** * */ package org.ovirt.engine.core.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.apache.commons.collections.KeyValue; import org.apache.commons.collections.keyvalue.DefaultKeyValue; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; import org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot; import org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot.SnapshotType; import org.ovirt.engine.core.compat.Guid; /** * JDBC-Template DAO for business entity snapshots * */ public class BusinessEntitySnapshotDAODbFacadeImpl extends BaseDAODbFacade implements BusinessEntitySnapshotDAO { private static class BusinessEntitySnapshotMapper implements ParameterizedRowMapper<BusinessEntitySnapshot> { @Override public BusinessEntitySnapshot mapRow(ResultSet rs, int rowNum) throws SQLException { BusinessEntitySnapshot result = new BusinessEntitySnapshot(); result.setCommandId(Guid.createGuidFromString(rs.getString("command_id"))); result.setCommandType(rs.getString("command_type")); result.setEntityId(rs.getString("entity_id")); result.setEntityType(rs.getString("entity_type")); result.setEntitySnapshot(rs.getString("entity_snapshot")); result.setSnapshotClass(rs.getString("snapshot_class")); result.setSnapshotType(SnapshotType.values()[rs.getInt("snapshot_type")]); result.setInsertionOrder(rs.getInt("insertion_order")); return result; } } private static class BusinessEntitySnapshotIdMapper implements ParameterizedRowMapper<KeyValue> { @Override public DefaultKeyValue mapRow(ResultSet rs, int rowNum) throws SQLException { DefaultKeyValue result = new DefaultKeyValue(); result.setKey(Guid.createGuidFromString(rs.getString("command_id"))); result.setValue(rs.getString("command_type")); return result; } } /** * */ public BusinessEntitySnapshotDAODbFacadeImpl() { } @Override public List<BusinessEntitySnapshot> getAllForCommandId(Guid commandID) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("command_id", commandID); return getCallsHandler().executeReadList("get_entity_snapshot_by_command_id", new BusinessEntitySnapshotMapper(), parameterSource); } @Override public void removeAllForCommandId(Guid commandID) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("command_id", commandID); getCallsHandler().executeModification("delete_entity_snapshot_by_command_id", parameterSource); } @Override public void save(BusinessEntitySnapshot entitySnapshot) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() .addValue("command_id", entitySnapshot.getCommandId()) .addValue("command_type", entitySnapshot.getCommandType()) .addValue("entity_id", entitySnapshot.getEntityId()) .addValue("entity_type", entitySnapshot.getEntityType()) .addValue("entity_snapshot", entitySnapshot.getEntitySnapshot()) .addValue("snapshot_class", entitySnapshot.getSnapshotClass()) .addValue("snapshot_type", entitySnapshot.getSnapshotType()) .addValue("insertion_order", entitySnapshot.getInsertionOrder()); getCallsHandler().executeModification("insert_entity_snapshot", parameterSource); } @Override public List<KeyValue> getAllCommands() { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource(); return getCallsHandler().executeReadList("get_all_commands", new BusinessEntitySnapshotIdMapper(), parameterSource); } }