package org.ovirt.engine.api.restapi.types; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.api.model.Domain; import org.ovirt.engine.api.model.Group; import org.ovirt.engine.api.restapi.utils.DirectoryEntryIdUtils; import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.aaa.DirectoryGroup; import org.ovirt.engine.core.common.businessentities.aaa.DbGroup; public class GroupMapper { @Mapping(from = DbGroup.class, to = Group.class) public static Group map(DbGroup entity, Group template) { Group model = template != null ? template : new Group(); model.setName(entity.getName()); model.setId(entity.getId().toString()); if (!StringUtils.isEmpty(entity.getDomain())) { Domain dom = new Domain(); dom.setName(entity.getDomain()); dom.setId(DirectoryEntryIdUtils.encode(dom.getName())); model.setDomain(dom); } model.setDomainEntryId(DirectoryEntryIdUtils.encode(entity.getExternalId())); model.setNamespace(entity.getNamespace()); return model; } @Mapping(from = DirectoryGroup.class, to = Group.class) public static Group map(DirectoryGroup entity, Group template) { Group model = template != null ? template : new Group(); model.setName(entity.getName()); if (!StringUtils.isEmpty(entity.getDirectoryName())) { Domain dom = new Domain(); dom.setName(entity.getDirectoryName()); dom.setId(DirectoryEntryIdUtils.encode(dom.getName())); model.setDomain(dom); } model.setId(DirectoryEntryIdUtils.encode(entity.getId())); model.setNamespace(entity.getNamespace()); return model; } @Mapping(from = Group.class, to = DbGroup.class) public static DbGroup map(Group model, DbGroup template) { DbGroup entity = template != null? template: new DbGroup(); if (model.isSetName()) { entity.setName(model.getName()); } if (model.isSetId()) { String id = model.getId(); entity.setId(GuidUtils.asGuid(id)); } if (model.isSetDomain()) { Domain domain = model.getDomain(); if (domain.isSetName()) { entity.setDomain(domain.getName()); } } if (model.isSetDomainEntryId()) { entity.setExternalId(DirectoryEntryIdUtils.decode(model.getDomainEntryId())); } if (model.isSetNamespace()) { entity.setNamespace(model.getNamespace()); } return entity; } }