package org.ovirt.engine.core.dao.gluster;
import java.util.List;
import javax.inject.Named;
import javax.inject.Singleton;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterClusterService;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterServiceStatus;
import org.ovirt.engine.core.common.businessentities.gluster.ServiceType;
import org.ovirt.engine.core.common.utils.EnumUtils;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.BaseDao;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@Named
@Singleton
public class GlusterClusterServiceDaoImpl extends BaseDao implements GlusterClusterServiceDao {
private static final RowMapper<GlusterClusterService> serviceRowMapper = (rs, rowNum) -> {
GlusterClusterService entity = new GlusterClusterService();
entity.setClusterId(getGuidDefaultEmpty(rs, "cluster_id"));
entity.setServiceType(ServiceType.valueOf(rs.getString("service_type")));
entity.setStatus(GlusterServiceStatus.valueOf(rs.getString("status")));
return entity;
};
@Override
public List<GlusterClusterService> getByClusterId(Guid clusterId) {
return getCallsHandler().executeReadList("GetGlusterClusterServicesByClusterId",
serviceRowMapper, getCustomMapSqlParameterSource().addValue("cluster_id", clusterId));
}
@Override
public GlusterClusterService getByClusterIdAndServiceType(Guid clusterId, ServiceType serviceType) {
return getCallsHandler().executeRead("GetGlusterClusterServicesByClusterIdAndServiceType",
serviceRowMapper,
getCustomMapSqlParameterSource().
addValue("cluster_id", clusterId)
.addValue("service_type", EnumUtils.nameOrNull(serviceType)));
}
@Override
public void save(GlusterClusterService service) {
getCallsHandler().executeModification("InsertGlusterClusterService", createFullParametersMapper(service));
}
@Override
public void update(GlusterClusterService service) {
getCallsHandler().executeModification("UpdateGlusterClusterService", createFullParametersMapper(service));
}
private MapSqlParameterSource createFullParametersMapper(GlusterClusterService service) {
return getCustomMapSqlParameterSource()
.addValue("cluster_id", service.getClusterId())
.addValue("service_type", EnumUtils.nameOrNull(service.getServiceType()))
.addValue("status", EnumUtils.nameOrNull(service.getStatus()));
}
}