package org.ovirt.engine.api.restapi.types;
import org.ovirt.engine.api.model.CustomProperties;
import org.ovirt.engine.api.model.Network;
import org.ovirt.engine.api.model.NetworkFilter;
import org.ovirt.engine.api.model.Qos;
import org.ovirt.engine.api.model.VnicPassThrough;
import org.ovirt.engine.api.model.VnicPassThroughMode;
import org.ovirt.engine.api.model.VnicProfile;
import org.ovirt.engine.api.restapi.utils.CustomPropertiesParser;
import org.ovirt.engine.api.restapi.utils.GuidUtils;
import org.ovirt.engine.core.utils.customprop.DevicePropertiesUtils;
public class VnicProfileMapper {
@Mapping(from = VnicProfile.class, to = org.ovirt.engine.core.common.businessentities.network.VnicProfile.class)
public static org.ovirt.engine.core.common.businessentities.network.VnicProfile map(VnicProfile model,
org.ovirt.engine.core.common.businessentities.network.VnicProfile template) {
org.ovirt.engine.core.common.businessentities.network.VnicProfile entity =
template != null ? template : new org.ovirt.engine.core.common.businessentities.network.VnicProfile();
if (model.isSetId()) {
entity.setId(GuidUtils.asGuid(model.getId()));
}
if (model.isSetName()) {
entity.setName(model.getName());
}
if (model.isSetDescription()) {
entity.setDescription(model.getDescription());
}
if (model.isSetNetwork() && model.getNetwork().isSetId()) {
entity.setNetworkId(GuidUtils.asGuid(model.getNetwork().getId()));
}
if (model.isSetPortMirroring()) {
entity.setPortMirroring(model.isPortMirroring());
}
if (model.isSetCustomProperties()) {
entity.setCustomProperties(DevicePropertiesUtils.getInstance()
.convertProperties(CustomPropertiesParser.parse(model.getCustomProperties().getCustomProperties())));
}
if (model.isSetQos() && model.getQos().isSetId()) {
entity.setNetworkQosId(GuidUtils.asGuid(model.getQos().getId()));
}
if (model.isSetPassThrough() && model.getPassThrough().isSetMode()) {
entity.setPassthrough(map(model.getPassThrough().getMode()));
}
if (entity.isPassthrough() && model.isSetMigratable()) {
entity.setMigratable(model.isMigratable());
}
if (model.isSetNetworkFilter()) {
if (model.getNetworkFilter().isSetId()) {
entity.setNetworkFilterId(GuidUtils.asGuid(model.getNetworkFilter().getId()));
} else {
entity.setNetworkFilterId(null);
}
}
return entity;
}
@Mapping(from = org.ovirt.engine.core.common.businessentities.network.VnicProfile.class, to = VnicProfile.class)
public static VnicProfile map(org.ovirt.engine.core.common.businessentities.network.VnicProfile entity,
VnicProfile template) {
VnicProfile model = template != null ? template : new VnicProfile();
if (entity.getId() != null) {
model.setId(entity.getId().toString());
}
if (entity.getName() != null) {
model.setName(entity.getName());
}
if (entity.getDescription() != null) {
model.setDescription(entity.getDescription());
}
if (entity.getNetworkId() != null) {
model.setNetwork(new Network());
model.getNetwork().setId(entity.getNetworkId().toString());
}
model.setPortMirroring(entity.isPortMirroring());
if (entity.getCustomProperties() != null && !entity.getCustomProperties().isEmpty()) {
CustomProperties hooks = new CustomProperties();
hooks.getCustomProperties().addAll(CustomPropertiesParser.parse(
DevicePropertiesUtils.getInstance().convertProperties(entity.getCustomProperties()), false));
model.setCustomProperties(hooks);
}
if (entity.getNetworkQosId() != null) {
model.setQos(new Qos());
model.getQos().setId(entity.getNetworkQosId().toString());
}
final VnicPassThrough vnicPassThrough = new VnicPassThrough();
vnicPassThrough.setMode(map(entity.isPassthrough()));
model.setPassThrough(vnicPassThrough);
if (entity.getNetworkFilterId() != null){
model.setNetworkFilter(new NetworkFilter());
model.getNetworkFilter().setId(entity.getNetworkFilterId().toString());
}
if (entity.isPassthrough()) {
model.setMigratable(entity.isMigratable());
}
return model;
}
private static boolean map(VnicPassThroughMode vnicPassThroughMode) {
return VnicPassThroughMode.ENABLED == vnicPassThroughMode;
}
private static VnicPassThroughMode map(boolean value) {
return value ? VnicPassThroughMode.ENABLED : VnicPassThroughMode.DISABLED;
}
}