package org.ovirt.engine.core.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.ovirt.engine.core.common.businessentities.Disk;
import org.ovirt.engine.core.common.businessentities.DiskInterface;
import org.ovirt.engine.core.common.businessentities.DiskType;
import org.ovirt.engine.core.common.businessentities.ImageStatus;
import org.ovirt.engine.core.common.businessentities.PropagateErrors;
import org.ovirt.engine.core.common.utils.EnumUtils;
import org.ovirt.engine.core.compat.Guid;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
public class DiskDaoDbFacadeImpl extends DefaultGenericDaoDbFacade<Disk, Guid> implements DiskDao {
@Override
protected String getProcedureNameForUpdate() {
return "UpdateDisk";
}
@Override
protected String getProcedureNameForGet() {
return "GetDiskByDiskId";
}
@Override
protected String getProcedureNameForGetAll() {
return "GetAllFromDisks";
}
@Override
protected String getProcedureNameForSave() {
return "InsertDisk";
}
@Override
protected String getProcedureNameForRemove() {
return "DeleteDisk";
}
@Override
protected MapSqlParameterSource createIdParameterMapper(Guid id) {
return getCustomMapSqlParameterSource().addValue("disk_id", id);
}
@Override
protected MapSqlParameterSource createFullParametersMapper(Disk entity) {
return createIdParameterMapper(entity.getId())
.addValue("status", EnumUtils.nameOrNull(entity.getStatus()))
.addValue("internal_drive_mapping", entity.getInternalDriveMapping())
.addValue("active_image_id", (entity.getActiveImage() == null ? null : entity.getActiveImage().getId()))
.addValue("disk_type", EnumUtils.nameOrNull(entity.getDiskType()))
.addValue("disk_interface", EnumUtils.nameOrNull(entity.getDiskInterface()))
.addValue("wipe_after_delete", entity.isWipeAfterDelete())
.addValue("propagate_errors", EnumUtils.nameOrNull(entity.getPropagateErrors()));
}
@Override
protected ParameterizedRowMapper<Disk> createEntityRowMapper() {
return new ParameterizedRowMapper<Disk>() {
@Override
public Disk mapRow(ResultSet rs, int rowNum) throws SQLException {
Disk disk = new Disk();
disk.setId(Guid.createGuidFromString(rs.getString("disk_id")));
disk.setStatus(ImageStatus.valueOf(rs.getString("status")));
disk.setInternalDriveMapping(rs.getInt("internal_drive_mapping"));
disk.setDiskType(DiskType.valueOf(rs.getString("disk_type")));
disk.setDiskInterface(DiskInterface.valueOf(rs.getString("disk_interface")));
disk.setWipeAfterDelete(rs.getBoolean("wipe_after_delete"));
disk.setPropagateErrors(PropagateErrors.valueOf(rs.getString("propagate_errors")));
return disk;
}
};
}
@Override
public boolean exists(Guid id) {
return get(id) != null;
}
}