package org.ovirt.engine.api.restapi.types; import org.ovirt.engine.api.model.Cluster; import org.ovirt.engine.api.model.DataCenter; import org.ovirt.engine.api.model.Disk; import org.ovirt.engine.api.model.Host; import org.ovirt.engine.api.model.Permission; import org.ovirt.engine.api.model.Role; import org.ovirt.engine.api.model.StorageDomain; import org.ovirt.engine.api.model.Template; import org.ovirt.engine.api.model.User; import org.ovirt.engine.api.model.Vm; import org.ovirt.engine.api.model.VmPool; import org.ovirt.engine.api.restapi.utils.GuidUtils; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.compat.Guid; public class PermissionMapper { @Mapping(from = Permission.class, to = org.ovirt.engine.core.common.businessentities.Permission.class) public static org.ovirt.engine.core.common.businessentities.Permission map( Permission model, org.ovirt.engine.core.common.businessentities.Permission template) { org.ovirt.engine.core.common.businessentities.Permission entity = template != null ? template : new org.ovirt.engine.core.common.businessentities.Permission(); if (model.isSetId()) { entity.setId(GuidUtils.asGuid(model.getId())); } if (model.isSetRole()) { Role role = model.getRole(); if (role.isSetId()) { entity.setRoleId(GuidUtils.asGuid(role.getId())); } if (role.isSetName()) { entity.setRoleName(role.getName()); } } entity.setObjectId(map(model, template != null ? template.getObjectId() : null)); entity.setObjectType(map(model, template != null ? template.getObjectType() : null)); return entity; } @Mapping(from = org.ovirt.engine.core.common.businessentities.Permission.class, to = Role.class) public static Role map(org.ovirt.engine.core.common.businessentities.Permission entity, Role template) { Role model = template != null ? template : new Role(); model.setName(entity.getRoleName()); model.setId(entity.getRoleId().toString()); return model; } @Mapping(from = org.ovirt.engine.core.common.businessentities.Permission.class, to = Permission.class) public static Permission map(org.ovirt.engine.core.common.businessentities.Permission entity, Permission template) { Permission model = template != null ? template : new Permission(); model.setId(entity.getId().toString()); if (entity.getRoleId() != null) { model.setRole(new Role()); model.getRole().setId(entity.getRoleId().toString()); } if (entity.getAdElementId() != null && (template == null || !template.isSetGroup())) { model.setUser(new User()); model.getUser().setId(entity.getAdElementId().toString()); } if (entity.getObjectId() != null) { setObjectId(model, entity); } return model; } @Mapping(from = Permission.class, to = Guid.class) public static Guid map(Permission p, Guid template) { return p.isSetDataCenter() && p.getDataCenter().isSetId() ? GuidUtils.asGuid(p.getDataCenter().getId()) : p.isSetCluster() && p.getCluster().isSetId() ? GuidUtils.asGuid(p.getCluster().getId()) : p.isSetHost() && p.getHost().isSetId() ? GuidUtils.asGuid(p.getHost().getId()) : p.isSetStorageDomain() && p.getStorageDomain().isSetId() ? GuidUtils.asGuid(p.getStorageDomain().getId()) : p.isSetVm() && p.getVm().isSetId() ? GuidUtils.asGuid(p.getVm().getId()) : p.isSetVmPool() && p.getVmPool().isSetId() ? GuidUtils.asGuid(p.getVmPool().getId()) : p.isSetTemplate() && p.getTemplate().isSetId() ? GuidUtils.asGuid(p.getTemplate().getId()) : template; } @Mapping(from = Permission.class, to = VdcObjectType.class) public static VdcObjectType map(Permission p, VdcObjectType template) { return p.isSetDataCenter() && p.getDataCenter().isSetId() ? VdcObjectType.StoragePool : p.isSetCluster() && p.getCluster().isSetId() ? VdcObjectType.Cluster : p.isSetHost() && p.getHost().isSetId() ? VdcObjectType.VDS : p.isSetStorageDomain() && p.getStorageDomain().isSetId() ? VdcObjectType.Storage : p.isSetVm() && p.getVm().isSetId() ? VdcObjectType.VM : p.isSetVmPool() && p.getVmPool().isSetId() ? VdcObjectType.VmPool : p.isSetTemplate() && p.getTemplate().isSetId() ? VdcObjectType.VmTemplate : template; } /** * Completeness of "{entityType}.id" already validated */ private static void setObjectId(Permission model, org.ovirt.engine.core.common.businessentities.Permission entity) { String id = entity.getObjectId().toString(); switch (entity.getObjectType()) { case System: break; case StoragePool : model.setDataCenter(new DataCenter()); model.getDataCenter().setId(id); break; case Cluster: model.setCluster(new Cluster()); model.getCluster().setId(id); break; case VDS : model.setHost(new Host()); model.getHost().setId(id); break; case Storage : model.setStorageDomain(new StorageDomain()); model.getStorageDomain().setId(id); break; case VM : model.setVm(new Vm()); model.getVm().setId(id); break; case VmPool : model.setVmPool(new VmPool()); model.getVmPool().setId(id); break; case VmTemplate : model.setTemplate(new Template()); model.getTemplate().setId(id); break; case Disk : model.setDisk(new Disk()); model.getDisk().setId(id); break; default: assert false; } } }