package org.ovirt.engine.api.restapi.types; import org.ovirt.engine.api.model.Permit; import org.ovirt.engine.api.model.PermitType; import org.ovirt.engine.core.common.businessentities.ActionGroup; public class PermitMapper { /** * @pre completeness of "name|id" already validated */ @Mapping(from = Permit.class, to = ActionGroup.class) public static ActionGroup map(Permit model, ActionGroup template) { assert(model.isSetId() || model.isSetName()); return template != null ? template : model.getId() != null ? ActionGroup.forValue(Integer.valueOf(model.getId())) : ActionGroup.valueOf(model.getName()); } @Mapping(from = String.class, to = ActionGroup.class) public static ActionGroup map(String n, ActionGroup template) { try { return ActionGroup.forValue(Integer.valueOf(n)); } catch (NumberFormatException nfe) { return null; } } @Mapping(from = ActionGroup.class, to = Permit.class) public static Permit map(ActionGroup entity, Permit template) { PermitType permitType = map(entity, (PermitType)null); Permit model = template != null ? template : new Permit(); model.setId(Integer.toString(entity.getId())); model.setName(permitType.value()); model.setAdministrative(org.ovirt.engine.api.model.RoleType.ADMIN.equals(permitType.getRole())); return model; } @Mapping(from = ActionGroup.class, to = PermitType.class) public static PermitType map(ActionGroup entity, PermitType template) { switch (entity) { case CREATE_VM: return PermitType.CREATE_VM; case DELETE_VM: return PermitType.DELETE_VM; case EDIT_VM_PROPERTIES: return PermitType.EDIT_VM_PROPERTIES; case VM_BASIC_OPERATIONS: return PermitType.VM_BASIC_OPERATIONS; case CHANGE_VM_CD: return PermitType.CHANGE_VM_CD; case MIGRATE_VM: return PermitType.MIGRATE_VM; case CONNECT_TO_VM: return PermitType.CONNECT_TO_VM; case IMPORT_EXPORT_VM: return PermitType.IMPORT_EXPORT_VM; case CONFIGURE_VM_NETWORK: return PermitType.CONFIGURE_VM_NETWORK; case CONFIGURE_VM_STORAGE: return PermitType.CONFIGURE_VM_STORAGE; case MOVE_VM: return PermitType.MOVE_VM; case MANIPULATE_VM_SNAPSHOTS: return PermitType.MANIPULATE_VM_SNAPSHOTS; case CREATE_HOST: return PermitType.CREATE_HOST; case EDIT_HOST_CONFIGURATION: return PermitType.EDIT_HOST_CONFIGURATION; case DELETE_HOST: return PermitType.DELETE_HOST; case MANIPUTLATE_HOST: return PermitType.MANIPUTLATE_HOST; case CONFIGURE_HOST_NETWORK: return PermitType.CONFIGURE_HOST_NETWORK; case CREATE_TEMPLATE: return PermitType.CREATE_TEMPLATE; case EDIT_TEMPLATE_PROPERTIES: return PermitType.EDIT_TEMPLATE_PROPERTIES; case DELETE_TEMPLATE: return PermitType.DELETE_TEMPLATE; case COPY_TEMPLATE: return PermitType.COPY_TEMPLATE; case CONFIGURE_TEMPLATE_NETWORK: return PermitType.CONFIGURE_TEMPLATE_NETWORK; case CREATE_VM_POOL: return PermitType.CREATE_VM_POOL; case EDIT_VM_POOL_CONFIGURATION: return PermitType.EDIT_VM_POOL_CONFIGURATION; case DELETE_VM_POOL: return PermitType.DELETE_VM_POOL; case VM_POOL_BASIC_OPERATIONS: return PermitType.VM_POOL_BASIC_OPERATIONS; case CREATE_CLUSTER: return PermitType.CREATE_CLUSTER; case EDIT_CLUSTER_CONFIGURATION: return PermitType.EDIT_CLUSTER_CONFIGURATION; case DELETE_CLUSTER: return PermitType.DELETE_CLUSTER; case CONFIGURE_CLUSTER_NETWORK: return PermitType.CONFIGURE_CLUSTER_NETWORK; case MANIPULATE_USERS: return PermitType.MANIPULATE_USERS; case MANIPULATE_ROLES: return PermitType.MANIPULATE_ROLES; case MANIPULATE_PERMISSIONS: return PermitType.MANIPULATE_PERMISSIONS; case CREATE_STORAGE_DOMAIN: return PermitType.CREATE_STORAGE_DOMAIN; case EDIT_STORAGE_DOMAIN_CONFIGURATION: return PermitType.EDIT_STORAGE_DOMAIN_CONFIGURATION; case DELETE_STORAGE_DOMAIN: return PermitType.DELETE_STORAGE_DOMAIN; case MANIPULATE_STORAGE_DOMAIN: return PermitType.MANIPULATE_STORAGE_DOMAIN; case CREATE_STORAGE_POOL: return PermitType.CREATE_STORAGE_POOL; case DELETE_STORAGE_POOL: return PermitType.DELETE_STORAGE_POOL; case EDIT_STORAGE_POOL_CONFIGURATION: return PermitType.EDIT_STORAGE_POOL_CONFIGURATION; case CONFIGURE_STORAGE_POOL_NETWORK: return PermitType.CONFIGURE_STORAGE_POOL_NETWORK; case CONFIGURE_ENGINE: return PermitType.CONFIGURE_RHEVM; default: return null; } } @Mapping(from = PermitType.class, to = Permit.class) public static Permit map(PermitType entity, Permit template) { Permit model = new Permit(); model.setName(entity.value()); model.setId(String.valueOf(entity.getId())); model.setAdministrative(entity.getRole()==org.ovirt.engine.api.model.RoleType.ADMIN); return model; } }