package org.ovirt.engine.core.dao;
import java.util.List;
import javax.inject.Named;
import javax.inject.Singleton;
import org.ovirt.engine.core.common.businessentities.storage.BaseDisk;
import org.ovirt.engine.core.common.utils.EnumUtils;
import org.ovirt.engine.core.compat.Guid;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@Named
@Singleton
public class BaseDiskDaoImpl extends DefaultGenericDao<BaseDisk, Guid> implements BaseDiskDao {
public BaseDiskDaoImpl() {
super("BaseDisk");
}
@Override
protected MapSqlParameterSource createIdParameterMapper(Guid id) {
return getCustomMapSqlParameterSource().addValue("disk_id", id);
}
@Override
protected MapSqlParameterSource createFullParametersMapper(BaseDisk entity) {
return createIdParameterMapper(entity.getId())
.addValue("disk_alias", entity.getDiskAlias())
.addValue("disk_description", entity.getDiskDescription())
.addValue("wipe_after_delete", entity.isWipeAfterDelete())
.addValue("propagate_errors", EnumUtils.nameOrNull(entity.getPropagateErrors()))
.addValue("shareable", entity.isShareable())
.addValue("sgio", entity.getSgio())
.addValue("alignment", entity.getAlignment())
.addValue("last_alignment_scan", entity.getLastAlignmentScan())
.addValue("disk_storage_type", entity.getDiskStorageType())
.addValue("cinder_volume_type", entity.getCinderVolumeType())
.addValue("disk_content_type", entity.getContentType().getValue());
}
@Override
protected RowMapper<BaseDisk> createEntityRowMapper() {
return BaseDiskRowMapper.instance;
}
@Override
public boolean exists(Guid id) {
return get(id) != null;
}
@Override public List<BaseDisk> getDisksByAlias(String alias) {
MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource()
.addValue("disk_alias", alias);
return getCallsHandler().executeReadList("GetBaseDisksByAlias", BaseDiskRowMapper.instance, parameterSource);
}
private static class BaseDiskRowMapper extends AbstractBaseDiskRowMapper<BaseDisk> {
public static BaseDiskRowMapper instance = new BaseDiskRowMapper();
private BaseDiskRowMapper() {
}
@Override
protected BaseDisk createDiskEntity() {
return new BaseDisk();
}
}
}