package org.ovirt.engine.api.restapi.types;
import org.ovirt.engine.api.model.SchedulingPolicyUnit;
import org.ovirt.engine.api.restapi.utils.CustomPropertiesParser;
import org.ovirt.engine.api.restapi.utils.GuidUtils;
import org.ovirt.engine.core.common.scheduling.PolicyUnit;
import org.ovirt.engine.core.common.scheduling.PolicyUnitType;
public class PolicyUnitMapper {
@Mapping(from = PolicyUnit.class, to = SchedulingPolicyUnit.class)
public static SchedulingPolicyUnit map(PolicyUnit entity,
SchedulingPolicyUnit template) {
SchedulingPolicyUnit model = template != null ? template : new SchedulingPolicyUnit();
model.setId(entity.getId().toString());
model.setName(entity.getName());
model.setDescription(entity.getDescription());
model.setType(map(entity.getPolicyUnitType(), null));
model.setEnabled(entity.isEnabled());
model.setInternal(entity.isInternal());
if (entity.getParameterRegExMap() != null && !entity.getParameterRegExMap().isEmpty()) {
model.setProperties(CustomPropertiesParser.fromMap(entity.getParameterRegExMap()));
}
return model;
}
@Mapping(from = SchedulingPolicyUnit.class, to = PolicyUnit.class)
public static PolicyUnit map(SchedulingPolicyUnit model,
PolicyUnit template) {
PolicyUnit entity =
template != null ? template : new PolicyUnit();
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.isSetType()) {
entity.setPolicyUnitType(map(model.getType(), null));
}
if (model.isSetEnabled()) {
entity.setEnabled(model.isEnabled());
}
if (model.isSetInternal()) {
entity.setInternal(model.isInternal());
}
if (model.isSetProperties()) {
entity.setParameterRegExMap(CustomPropertiesParser.toMap(model.getProperties()));
}
return entity;
}
@Mapping(from = org.ovirt.engine.api.model.PolicyUnitType.class, to = PolicyUnitType.class)
public static PolicyUnitType map(org.ovirt.engine.api.model.PolicyUnitType model, PolicyUnitType template) {
if (model == null) {
return null;
}
switch (model) {
case FILTER:
return PolicyUnitType.FILTER;
case WEIGHT:
return PolicyUnitType.WEIGHT;
case LOAD_BALANCING:
return PolicyUnitType.LOAD_BALANCING;
default:
assert false : "unknown Policy Unit Type value: " + model.toString();
return null;
}
}
@Mapping(from = PolicyUnitType.class, to = org.ovirt.engine.api.model.PolicyUnitType.class)
public static org.ovirt.engine.api.model.PolicyUnitType map(PolicyUnitType model,
org.ovirt.engine.api.model.PolicyUnitType template) {
if (model == null) {
return null;
}
switch (model) {
case FILTER:
return org.ovirt.engine.api.model.PolicyUnitType.FILTER;
case WEIGHT:
return org.ovirt.engine.api.model.PolicyUnitType.WEIGHT;
case LOAD_BALANCING:
return org.ovirt.engine.api.model.PolicyUnitType.LOAD_BALANCING;
default:
assert false : "unknown Policy Unit Type value: " + model.toString();
return null;
}
}
}