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.StorageDomainStatic;
import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
import org.ovirt.engine.core.common.businessentities.StorageDomainType;
import org.ovirt.engine.core.common.businessentities.StorageFormatType;
import org.ovirt.engine.core.common.businessentities.storage.StorageType;
import org.ovirt.engine.core.compat.Guid;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@Named
@Singleton
public class StorageDomainStaticDaoImpl extends DefaultGenericDao<StorageDomainStatic, Guid> implements StorageDomainStaticDao {
public StorageDomainStaticDaoImpl() {
super("storage_domain_static");
setProcedureNameForGet("Getstorage_domain_staticByid");
setProcedureNameForGetAll("GetAllFromstorage_domain_static");
}
@Override
public StorageDomainStatic getByName(String name) {
return getCallsHandler().executeRead("Getstorage_domain_staticByName",
storageDomainStaticRowMapper,
getCustomMapSqlParameterSource()
.addValue("name", name));
}
@Override
public StorageDomainStatic getByName(String name, Guid userId, boolean filtered) {
return getCallsHandler().executeRead("Getstorage_domain_staticByNameFiltered",
storageDomainStaticRowMapper,
getCustomMapSqlParameterSource()
.addValue("name", name)
.addValue("user_id", userId)
.addValue("is_filtered", filtered));
}
@Override
public List<StorageDomainStatic> getAllForStoragePool(Guid id) {
return getCallsHandler().executeReadList("Getstorage_domain_staticBystorage_pool_id",
storageDomainStaticRowMapper,
getStoragePoolIdParameterSource(id));
}
private MapSqlParameterSource getStoragePoolIdParameterSource(Guid id) {
return getCustomMapSqlParameterSource()
.addValue("storage_pool_id", id);
}
@Override
public List<Guid> getAllIds(Guid pool, StorageDomainStatus status) {
MapSqlParameterSource parameterSource = getStoragePoolIdParameterSource(pool)
.addValue("status", status.getValue());
RowMapper<Guid> mapper = (rs, rowNum) -> getGuidDefaultEmpty(rs, "storage_id");
return getCallsHandler().executeReadList("GetStorageDomainIdsByStoragePoolIdAndStatus", mapper, parameterSource);
}
@Override
protected MapSqlParameterSource createIdParameterMapper(Guid id) {
return getCustomMapSqlParameterSource()
.addValue("id", id);
}
@Override
protected MapSqlParameterSource createFullParametersMapper(StorageDomainStatic domain) {
return getCustomMapSqlParameterSource()
.addValue("id", domain.getId())
.addValue("storage", domain.getStorage())
.addValue("storage_name", domain.getStorageName())
.addValue("storage_description", domain.getDescription())
.addValue("storage_comment", domain.getComment())
.addValue("storage_type", domain.getStorageType())
.addValue("storage_domain_type",
domain.getStorageDomainType())
.addValue("storage_domain_format_type", domain.getStorageFormat())
.addValue("last_time_used_as_master", domain.getLastTimeUsedAsMaster())
.addValue("wipe_after_delete", domain.getWipeAfterDelete())
.addValue("discard_after_delete", domain.isDiscardAfterDelete())
.addValue("first_metadata_device", domain.getFirstMetadataDevice())
.addValue("vg_metadata_device", domain.getVgMetadataDevice())
.addValue("warning_low_space_indicator", domain.getWarningLowSpaceIndicator())
.addValue("critical_space_action_blocker", domain.getCriticalSpaceActionBlocker());
}
@Override
protected RowMapper<StorageDomainStatic> createEntityRowMapper() {
return storageDomainStaticRowMapper;
}
private static final RowMapper<StorageDomainStatic> storageDomainStaticRowMapper = (rs, rowNum) -> {
StorageDomainStatic entity = new StorageDomainStatic();
entity.setId(getGuidDefaultEmpty(rs, "id"));
entity.setStorage(rs.getString("storage"));
entity.setStorageName(rs.getString("storage_name"));
entity.setDescription(rs.getString("storage_description"));
entity.setComment(rs.getString("storage_comment"));
entity.setStorageType(StorageType.forValue(rs.getInt("storage_type")));
entity.setStorageDomainType(StorageDomainType.forValue(rs.getInt("storage_domain_type")));
entity.setStorageFormat(StorageFormatType.forValue(rs.getString("storage_domain_format_type")));
entity.setLastTimeUsedAsMaster(rs.getLong("last_time_used_as_master"));
entity.setWipeAfterDelete(rs.getBoolean("wipe_after_delete"));
entity.setDiscardAfterDelete(rs.getBoolean("discard_after_delete"));
entity.setFirstMetadataDevice(rs.getString("first_metadata_device"));
entity.setVgMetadataDevice(rs.getString("vg_metadata_device"));
entity.setWarningLowSpaceIndicator((Integer) rs.getObject("warning_low_space_indicator"));
entity.setCriticalSpaceActionBlocker((Integer) rs.getObject("critical_space_action_blocker"));
return entity;
};
}