package uk.ac.ox.oucs.vle; import java.util.List; /** * Just a wrapper for a UserProxy, this is needed so that lazily loaded data on the * userProxy remains lazy in the Person. Copying all the data from UserProxy to Person * resulted in losing any lazy loading gains. */ public class UserProxyPersonImpl implements Person { private final UserProxy userProxy; private final CourseSignupService service; public UserProxyPersonImpl(UserProxy userProxy, CourseSignupService service) { this.userProxy = userProxy; this.service = service; } @Override public String getId() { return userProxy.getId(); } @Override public String getFirstName() { return userProxy.getFirstName(); } @Override public String getLastName() { return userProxy.getLastName(); } @Override public String getName() { return userProxy.getDisplayName(); } @Override public String getEmail() { return userProxy.getEmail(); } @Override public List<String> getUnits() { return userProxy.getUnits(); } @Override public String getWebauthId() { return userProxy.getWebauthId(); } @Override public String getOssId() { return userProxy.getOssId(); } @Override public String getYearOfStudy() { return userProxy.getYearOfStudy(); } @Override public String getDegreeProgram() { return userProxy.getDegreeProgram(); } @Override public String getDepartmentName() { String departmentName = null; // If this isn't a Sakai person we won't have a good primaryOrgUnit if (service != null) { String primaryOrgUnit = userProxy.getPrimaryOrgUnit(); if (primaryOrgUnit != null) { Department department = service.findPracDepartment(primaryOrgUnit); if (null != department) { departmentName = department.getName(); } } } return departmentName; } @Override public String getType() { return userProxy.getType(); } }