package org.ovirt.engine.api.restapi.types;
import org.ovirt.engine.api.common.util.StatusUtils;
import org.ovirt.engine.api.model.DataCenter;
import org.ovirt.engine.api.model.IP;
import org.ovirt.engine.api.model.Network;
import org.ovirt.engine.api.model.NetworkStatus;
import org.ovirt.engine.api.model.VLAN;
import org.ovirt.engine.core.common.businessentities.network;
import org.ovirt.engine.core.compat.Guid;
public class NetworkMapper {
@Mapping(from = Network.class, to = network.class)
public static network map(Network model, network template) {
network entity = template != null ? template : new network();
if (model.isSetId()) {
entity.setId(new Guid(model.getId()));
}
if (model.isSetName()) {
entity.setname(model.getName());
}
if (model.isSetDescription()) {
entity.setdescription(model.getDescription());
}
if (model.isSetStatus()) {
entity.setStatus(map(NetworkStatus.fromValue(model.getStatus().getState()), null));
}
if (model.isSetDataCenter() && model.getDataCenter().isSetId()) {
entity.setstorage_pool_id(new Guid(model.getDataCenter().getId()));
}
if (model.isSetIp()) {
if (model.getIp().isSetAddress()) {
entity.setaddr(model.getIp().getAddress());
}
if (model.getIp().isSetNetmask()) {
entity.setsubnet(model.getIp().getNetmask());
}
if (model.getIp().isSetGateway()) {
entity.setgateway(model.getIp().getGateway());
}
}
if (model.isSetVlan() && model.getVlan().isSetId()) {
try {
entity.setvlan_id(model.getVlan().getId());
} catch (NumberFormatException e) {
// REVIST: handle parse error
}
}
if (model.isSetStp()) {
entity.setstp(model.isStp());
}
if (model.isSetDisplay()) {
entity.setis_display(model.isDisplay());
}
return entity;
}
@Mapping(from = network.class, to = Network.class)
public static Network map(network entity, Network template) {
Network model = template != null ? template : new Network();
model.setId(entity.getId().toString());
model.setName(entity.getname());
model.setDescription(entity.getdescription());
if (entity.getStatus() != null) {
model.setStatus(StatusUtils.create(map(entity.getStatus(), null)));
}
if (entity.getstorage_pool_id() != null) {
DataCenter dataCenter = new DataCenter();
dataCenter.setId(entity.getstorage_pool_id().toString());
model.setDataCenter(dataCenter);
}
if (entity.getaddr() != null ||
entity.getsubnet() != null ||
entity.getgateway() != null) {
model.setIp(new IP());
model.getIp().setAddress(entity.getaddr());
model.getIp().setNetmask(entity.getsubnet());
model.getIp().setGateway(entity.getgateway());
}
if (entity.getvlan_id() != null) {
model.setVlan(new VLAN());
model.getVlan().setId(entity.getvlan_id());
}
model.setStp(entity.getstp());
model.setDisplay(entity.getis_display());
return model;
}
@Mapping(from = org.ovirt.engine.core.common.businessentities.NetworkStatus.class, to = NetworkStatus.class)
public static NetworkStatus map(org.ovirt.engine.core.common.businessentities.NetworkStatus entityStatus,
NetworkStatus template) {
switch (entityStatus) {
case NonOperational:
return NetworkStatus.NON_OPERATIONAL;
case Operational:
return NetworkStatus.OPERATIONAL;
default:
return null;
}
}
@Mapping(from = NetworkStatus.class, to = org.ovirt.engine.core.common.businessentities.NetworkStatus.class)
public static org.ovirt.engine.core.common.businessentities.NetworkStatus map(NetworkStatus modelStatus,
org.ovirt.engine.core.common.businessentities.NetworkStatus template) {
if (modelStatus==null) {
return null;
} else {
switch (modelStatus) {
case NON_OPERATIONAL:
return org.ovirt.engine.core.common.businessentities.NetworkStatus.NonOperational;
case OPERATIONAL:
return org.ovirt.engine.core.common.businessentities.NetworkStatus.Operational;
default:
return null;
}
}
}
}