package org.ovirt.engine.api.restapi.types;
import org.ovirt.engine.api.model.Tag;
import org.ovirt.engine.api.restapi.utils.GuidUtils;
import org.ovirt.engine.core.common.businessentities.Tags;
import org.ovirt.engine.core.compat.Guid;
public class TagMapper {
@Mapping(from = Tag.class, to = Tags.class)
public static Tags map(Tag model, Tags template) {
Tags entity = template != null ? template : new Tags();
entity.setParentId(parent(model, entity.getParentId()));
if (model.isSetId()) {
entity.setTagId(GuidUtils.asGuid(model.getId()));
}
if (model.isSetName()) {
entity.setTagName(model.getName());
}
if (model.isSetDescription()) {
entity.setDescription(model.getDescription());
}
return entity;
}
@Mapping(from = Tags.class, to = Tag.class)
public static Tag map(Tags entity, Tag template) {
Tag model = template != null ? template : new Tag();
model.setId(entity.getTagId().toString());
model.setName(entity.getTagName());
model.setDescription(entity.getDescription());
model.setParent(parent(entity));
return model;
}
private static Guid parent(Tag model, Guid current) {
if (model.isSetParent() && model.getParent().isSetId()) {
return GuidUtils.asGuid(model.getParent().getId());
} else {
return current == null ? Guid.Empty : current;
}
}
private static Tag parent(Tags entity) {
if (entity.getParentId() != null) {
Tag parent = new Tag();
parent.setId(entity.getParentId().toString());
return parent;
} else {
return null;
}
}
}