package org.ovirt.engine.core.dao;
import java.util.List;
import javax.inject.Named;
import javax.inject.Singleton;
import org.apache.commons.collections.KeyValue;
import org.apache.commons.collections.keyvalue.DefaultKeyValue;
import org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot;
import org.ovirt.engine.core.common.businessentities.BusinessEntitySnapshot.SnapshotType;
import org.ovirt.engine.core.compat.Guid;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
/**
* JDBC-Template Dao for business entity snapshots
*/
@Named
@Singleton
public class BusinessEntitySnapshotDaoImpl extends BaseDao implements BusinessEntitySnapshotDao {
public BusinessEntitySnapshotDaoImpl() {
}
@Override
public List<BusinessEntitySnapshot> getAllForCommandId(Guid commandID) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("command_id", commandID);
return getCallsHandler().executeReadList("get_entity_snapshot_by_command_id",
(rs, rowNum) -> {
BusinessEntitySnapshot result = new BusinessEntitySnapshot();
result.setId(getGuidDefaultEmpty(rs, "id"));
result.setCommandId(getGuidDefaultEmpty(rs, "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;
},
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) {
Guid id = entitySnapshot.getId();
if (Guid.isNullOrEmpty(id)) {
id = Guid.newGuid();
entitySnapshot.setId(id);
}
MapSqlParameterSource parameterSource =
getCustomMapSqlParameterSource()
.addValue("id", entitySnapshot.getId())
.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",
(rs, rowNum) -> {
DefaultKeyValue result = new DefaultKeyValue();
result.setKey(getGuidDefaultEmpty(rs, "command_id"));
result.setValue(rs.getString("command_type"));
return result;
},
parameterSource);
}
}