/** * ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium. */ package org.esupportail.helpdesk.domain.departmentSelection; import java.net.InetAddress; import java.util.ArrayList; import java.util.List; import org.esupportail.commons.aop.cache.RequestCache; import org.esupportail.commons.services.logging.Logger; import org.esupportail.commons.services.logging.LoggerImpl; import org.esupportail.helpdesk.domain.DomainService; import org.esupportail.helpdesk.domain.beans.Department; import org.esupportail.helpdesk.domain.beans.User; /** * An abstract department selector that insures that all the departments returned are enabled. */ @SuppressWarnings("serial") public abstract class AbstractDepartmentSelector implements DepartmentSelector { /** * A logger. */ private final Logger logger = new LoggerImpl(getClass()); /** * Constructor. */ AbstractDepartmentSelector() { super(); } /** * Remove the disabled departments from a list. * @param input * @return a list. */ protected List<Department> removeDisabledDepartments( final List<Department> input) { List<Department> output = new ArrayList<Department>(); for (Department department : input) { if (department.isEnabled()) { output.add(department); } } return output; } /** * @see org.esupportail.helpdesk.domain.departmentSelection.DepartmentSelector#getTicketCreationDepartments( * org.esupportail.helpdesk.domain.DomainService, org.esupportail.helpdesk.domain.beans.User, * java.net.InetAddress) */ @Override @RequestCache public final List<Department> getTicketCreationDepartments( final DomainService domainService, final User user, final InetAddress client) { if (logger.isDebugEnabled()) { logger.debug("getting the ticket creation departments for user [" + user.getId() + " from " + client + "..."); } List<Department> result = removeDisabledDepartments( getTicketCreationDepartmentsInternal(domainService, user, client)); if (logger.isDebugEnabled()) { logger.debug("ticket creation departments for user [" + user.getId() + " from " + client + ":"); for (Department department : result) { logger.debug("- " + department.getLabel()); } } return result; } /** * return the list of the departments that a user will see on ticket creation. * @param domainService * @param user the user * @param client the client * @return a list of departments. */ protected abstract List<Department> getTicketCreationDepartmentsInternal( DomainService domainService, User user, InetAddress client); /** * @see org.esupportail.helpdesk.domain.departmentSelection.DepartmentSelector#getTicketViewDepartments( * org.esupportail.helpdesk.domain.DomainService, org.esupportail.helpdesk.domain.beans.User, * java.net.InetAddress) */ @Override @RequestCache public final List<Department> getTicketViewDepartments( final DomainService domainService, final User user, final InetAddress client) { if (logger.isDebugEnabled()) { logger.debug("getting the ticket view departments for user [" + user.getId() + " from " + client + "..."); } List<Department> result = removeDisabledDepartments( getTicketViewDepartmentsInternal(domainService, user, client)); if (logger.isDebugEnabled()) { logger.debug("ticket view departments for user [" + user.getId() + " from " + client + ":"); for (Department department : result) { logger.debug("- " + department.getLabel()); } } return result; } /** * return the list of the departments that a user will see on the control panel. * @param domainService * @param user the user * @param client the client * @return a list of departments. */ protected abstract List<Department> getTicketViewDepartmentsInternal( DomainService domainService, User user, InetAddress client); /** * @see org.esupportail.helpdesk.domain.departmentSelection.DepartmentSelector#getFaqViewDepartments( * org.esupportail.helpdesk.domain.DomainService, org.esupportail.helpdesk.domain.beans.User, * java.net.InetAddress) */ @Override @RequestCache public final List<Department> getFaqViewDepartments( final DomainService domainService, final User user, final InetAddress client) { String userId = null; if (logger.isDebugEnabled()) { if (user != null) { userId = user.getId(); } logger.debug("getting the faq view departments for user [" + userId + " from " + client + "..."); } List<Department> result = removeDisabledDepartments( getFaqViewDepartmentsInternal(domainService, user, client)); if (logger.isDebugEnabled()) { logger.debug("faq view departments for user [" + userId + "] from " + client + ":"); for (Department department : result) { logger.debug("- " + department.getLabel()); } } return result; } /** * return the list of the departments that a user will see for the FAQs. * @param domainService * @param user the user * @param client the client * @return a list of departments. */ protected abstract List<Department> getFaqViewDepartmentsInternal( DomainService domainService, User user, InetAddress client); }