package org.ovirt.engine.api.restapi.types; import java.util.ArrayList; import java.util.List; import org.ovirt.engine.api.model.Range; import org.ovirt.engine.api.model.Ranges; import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.businessentities.MacPool; import org.ovirt.engine.core.common.businessentities.MacRange; public class MacPoolMapper { @Mapping(from = org.ovirt.engine.api.model.MacPool.class, to = MacPool.class) public static MacPool map(org.ovirt.engine.api.model.MacPool model, MacPool template) { if (model == null) { return template; } MacPool entity = template == null ? new MacPool() : template; 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.isSetAllowDuplicates()) { entity.setAllowDuplicateMacAddresses(model.isAllowDuplicates()); } if (model.isSetDefaultPool()) { entity.setDefaultPool(model.isDefaultPool()); } if (model.isSetRanges()) { mapRanges(model, entity); } return entity; } private static void mapRanges(org.ovirt.engine.api.model.MacPool model, MacPool entity) { final List<MacRange> ranges = new ArrayList<>(); for (org.ovirt.engine.api.model.Range range : model.getRanges().getRanges()) { ranges.add(mapRange(range)); } entity.setRanges(ranges); } private static MacRange mapRange(org.ovirt.engine.api.model.Range range) { final MacRange result = new MacRange(); result.setMacFrom(range.getFrom()); result.setMacTo(range.getTo()); return result; } @Mapping(from = MacPool.class, to = org.ovirt.engine.api.model.MacPool.class) public static org.ovirt.engine.api.model.MacPool map(MacPool entity, org.ovirt.engine.api.model.MacPool template) { if (entity == null) { return template; } org.ovirt.engine.api.model.MacPool model = template == null ? new org.ovirt.engine.api.model.MacPool() : template; model.setId(entity.getId().toString()); model.setName(entity.getName()); model.setAllowDuplicates(entity.isAllowDuplicateMacAddresses()); model.setDescription(entity.getDescription()); model.setDefaultPool(entity.isDefaultPool()); mapRanges(entity, model); return model; } private static void mapRanges(MacPool entity, org.ovirt.engine.api.model.MacPool result) { if (entity.getRanges() != null) { final Ranges ranges = new Ranges(); for (MacRange macRange : entity.getRanges()) { ranges.getRanges().add(mapRange(macRange)); } result.setRanges(ranges); } } private static Range mapRange(MacRange range) { final Range model = new Range(); model.setFrom(range.getMacFrom()); model.setTo(range.getMacTo()); return model; } }