package edu.ualberta.med.biobank.common.wrappers; import java.util.ArrayList; import java.util.Collection; import java.util.List; import edu.ualberta.med.biobank.common.wrappers.WrapperTransaction.TaskList; import edu.ualberta.med.biobank.common.wrappers.base.RoleBaseWrapper; import edu.ualberta.med.biobank.common.wrappers.checks.RolePreDeleteChecks; import edu.ualberta.med.biobank.model.PermissionEnum; import edu.ualberta.med.biobank.model.Role; import edu.ualberta.med.biobank.server.applicationservice.BiobankApplicationService; import gov.nih.nci.system.applicationservice.ApplicationException; import gov.nih.nci.system.applicationservice.WritableApplicationService; import gov.nih.nci.system.query.hibernate.HQLCriteria; public class RoleWrapper extends RoleBaseWrapper { public RoleWrapper(WritableApplicationService appService) { super(appService); } public RoleWrapper(WritableApplicationService appService, Role wrappedObject) { super(appService, wrappedObject); } @Override public int compareTo(ModelWrapper<Role> role2) { if (role2 instanceof RoleWrapper) { String name1 = getName(); String name2 = ((RoleWrapper) role2).getName(); if (name1 == null || name2 == null) return 0; return name1.compareTo(name2); } return 0; } private static final String ALL_ROLES_QRY = " from " + Role.class.getName(); //$NON-NLS-1$ public static List<RoleWrapper> getAllRoles( BiobankApplicationService appService) throws ApplicationException { HQLCriteria criteria = new HQLCriteria(ALL_ROLES_QRY, new ArrayList<Object>()); List<Role> roles = appService.query(criteria); return ModelWrapper.wrapModelCollection(appService, roles, RoleWrapper.class); } /** * Duplicate this role. The resulting role is not saved yet in the database */ public RoleWrapper duplicate() { RoleWrapper newRole = new RoleWrapper(appService); newRole.setName(getName()); newRole.addToPermissionCollection(getPermissionCollection()); return newRole; } @Deprecated @Override protected void addDeleteTasks(TaskList tasks) { tasks.add(new RolePreDeleteChecks(this)); super.addDeleteTasks(tasks); } public void addToPermissionCollection(Collection<PermissionEnum> addedPermissions) { wrappedObject.getPermissions().addAll(addedPermissions); } public void removeFromPermissionCollection( List<PermissionEnum> removedPermissions) { wrappedObject.getPermissions().removeAll(removedPermissions); } public Collection<PermissionEnum> getPermissionCollection() { return wrappedObject.getPermissions(); } }