package org.ovirt.engine.api.restapi.types;
import org.ovirt.engine.api.model.Host;
import org.ovirt.engine.api.model.HostDevice;
import org.ovirt.engine.api.model.Product;
import org.ovirt.engine.api.model.Vendor;
import org.ovirt.engine.api.model.Vm;
import org.ovirt.engine.api.restapi.utils.HexUtils;
import org.ovirt.engine.core.common.businessentities.HostDeviceView;
import org.ovirt.engine.core.compat.Guid;
public class HostDeviceMapper {
@Mapping(from = org.ovirt.engine.core.common.businessentities.HostDevice.class, to = HostDevice.class)
public static HostDevice map(org.ovirt.engine.core.common.businessentities.HostDevice entity, HostDevice model) {
if (model == null) {
model = new HostDevice();
}
if (!model.isSetHost()) {
model.setHost(new Host());
}
model.getHost().setId(entity.getHostId().toString());
model.setId(HexUtils.string2hex(entity.getDeviceName()));
model.setName(entity.getDeviceName());
model.setCapability(entity.getCapability());
model.setParentDevice(getSameHostDeviceReference(entity.getHostId(), entity.getParentDeviceName()));
model.setDriver(entity.getDriver());
if (entity.getProductId() != null || entity.getProductName() != null) {
if (!model.isSetProduct()) {
model.setProduct(new Product());
}
model.getProduct().setId(entity.getProductId());
model.getProduct().setName(entity.getProductName());
}
if (entity.getVendorId() != null || entity.getVendorName() != null) {
if (!model.isSetVendor()) {
model.setVendor(new Vendor());
}
model.getVendor().setId(entity.getVendorId());
model.getVendor().setName(entity.getVendorName());
}
model.setIommuGroup(entity.getIommuGroup());
if (entity.getParentPhysicalFunction() != null) {
model.setPhysicalFunction(getSameHostDeviceReference(entity.getHostId(), entity.getParentPhysicalFunction()));
}
model.setVirtualFunctions(entity.getTotalVirtualFunctions());
if (entity.getVmId() != null) {
model.setVm(new Vm());
model.getVm().setId(entity.getVmId().toString());
}
return model;
}
@Mapping(from = HostDeviceView.class, to = HostDevice.class)
public static HostDevice map(HostDeviceView entity, HostDevice model) {
model = map((org.ovirt.engine.core.common.businessentities.HostDevice) entity, model);
if (entity.isIommuPlaceholder()) {
model.setPlaceholder(true);
}
return model;
}
private static HostDevice getSameHostDeviceReference(Guid hostId, String deviceName) {
HostDevice device = new HostDevice();
device.setHost(new Host());
device.getHost().setId(hostId.toString());
device.setId(HexUtils.string2hex(deviceName));
device.setName(deviceName);
return device;
}
}