/**
* ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium.
*/
package org.esupportail.helpdesk.web.deepLinking;
import java.util.Map;
import org.esupportail.commons.services.logging.Logger;
import org.esupportail.commons.services.logging.LoggerImpl;
import org.esupportail.commons.utils.Assert;
import org.esupportail.commons.web.deepLinking.AbstractDeepLinkingRedirector;
import org.esupportail.helpdesk.domain.DomainService;
import org.esupportail.helpdesk.domain.beans.ArchivedTicket;
import org.esupportail.helpdesk.domain.beans.Category;
import org.esupportail.helpdesk.domain.beans.Department;
import org.esupportail.helpdesk.domain.beans.Faq;
import org.esupportail.helpdesk.domain.beans.Ticket;
import org.esupportail.helpdesk.domain.beans.User;
import org.esupportail.helpdesk.exceptions.ArchivedTicketNotFoundException;
import org.esupportail.helpdesk.exceptions.CategoryNotFoundException;
import org.esupportail.helpdesk.exceptions.DepartmentNotFoundException;
import org.esupportail.helpdesk.exceptions.FaqNotFoundException;
import org.esupportail.helpdesk.exceptions.TicketNotFoundException;
import org.esupportail.helpdesk.web.controllers.AdministratorsController;
import org.esupportail.helpdesk.web.controllers.ArchivedTicketController;
import org.esupportail.helpdesk.web.controllers.BookmarksController;
import org.esupportail.helpdesk.web.controllers.ControlPanelController;
import org.esupportail.helpdesk.web.controllers.DepartmentsController;
import org.esupportail.helpdesk.web.controllers.FaqsController;
import org.esupportail.helpdesk.web.controllers.JournalController;
import org.esupportail.helpdesk.web.controllers.PreferencesController;
import org.esupportail.helpdesk.web.controllers.ResponsesController;
import org.esupportail.helpdesk.web.controllers.SearchController;
import org.esupportail.helpdesk.web.controllers.SessionController;
import org.esupportail.helpdesk.web.controllers.StatisticsController;
import org.esupportail.helpdesk.web.controllers.TicketController;
import org.springframework.util.StringUtils;
/**
* The esup-print implementation of the page redirector (for deep linking).
*/
public class DeepLinkingRedirectorImpl extends AbstractDeepLinkingRedirector implements DeepLinkingRedirector {
/**
* The serialization id.
*/
private static final long serialVersionUID = -864719862317795339L;
/**
* A logger.
*/
private final Logger logger = new LoggerImpl(getClass());
/**
* The domain service.
*/
private DomainService domainService;
/**
* The session controller.
*/
private SessionController sessionController;
/**
* The ticket controller.
*/
private TicketController ticketController;
/**
* The archived ticket controller.
*/
private ArchivedTicketController archivedTicketController;
/**
* The preferences controller.
*/
private PreferencesController preferencesController;
/**
* The search controller.
*/
private SearchController searchController;
/**
* The control panel controller.
*/
private ControlPanelController controlPanelController;
/**
* The administrators controller.
*/
private AdministratorsController administratorsController;
/**
* The departments controller.
*/
private DepartmentsController departmentsController;
/**
* The journal controller.
*/
private JournalController journalController;
/**
* The FAQ controller.
*/
private FaqsController faqsController;
/**
* The statistics controller.
*/
private StatisticsController statisticsController;
/**
* The bookmarks controller.
*/
private BookmarksController bookmarksController;
/**
* The responses controller.
*/
private ResponsesController responsesController;
/**
* Bean constructor.
*/
public DeepLinkingRedirectorImpl() {
super();
}
/**
* @see org.esupportail.commons.beans.AbstractI18nAwareBean#afterPropertiesSet()
*/
@Override
public void afterPropertiesSet() {
super.afterPropertiesSet();
Assert.notNull(domainService, "property domainService of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(sessionController, "property sessionController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(ticketController, "property ticketController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(archivedTicketController, "property archivedTicketController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(preferencesController, "property preferencesController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(searchController, "property searchController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(controlPanelController, "property controlPanelController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(administratorsController, "property administratorsController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(departmentsController, "property departmentsController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(journalController, "property journalController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(faqsController, "property faqsController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(statisticsController, "property statisticsController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(bookmarksController, "property bookmarksController of class "
+ this.getClass().getName() + " can not be null");
Assert.notNull(responsesController, "property responsesController of class "
+ this.getClass().getName() + " can not be null");
}
/**
* Add an authentication required message.
*/
protected void addAuthenticationRequiredErrorMessage() {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.AUTHENTICATION_REQUIRED");
}
/**
* @param params
* @return the ticket id that corresponds to params.
* @throws IllegalArgumentException
*/
protected Long getTicketId(
final Map<String, String> params) throws IllegalArgumentException {
if (params.get(TICKET_ID_PARAM) == null) {
addErrorMessageMissingParameter(TICKET_ID_PARAM);
throw new IllegalArgumentException(TICKET_ID_PARAM);
}
try {
return Long.valueOf(params.get(TICKET_ID_PARAM));
} catch (NumberFormatException e) {
addErrorMessageInvalidParameter(TICKET_ID_PARAM, params.get(TICKET_ID_PARAM));
throw new IllegalArgumentException(TICKET_ID_PARAM);
}
}
/**
* @param params
* @return the ticket that corresponds to params.
* @throws IllegalArgumentException
*/
protected Ticket getTicket(
final Map<String, String> params) throws IllegalArgumentException {
try {
return domainService.getTicket(getTicketId(params));
} catch (TicketNotFoundException e) {
return null;
}
}
/**
* Redirect to the ticketView page.
* @param params
* @return a String.
*/
protected ArchivedTicket getArchivedTicket(
final Map<String, String> params) {
try {
return domainService.getArchivedTicketByOriginalId(getTicketId(params));
} catch (ArchivedTicketNotFoundException e) {
return null;
}
}
/**
* Redirect to the ticketView page.
* @param params
* @return a String.
*/
protected String redirectTicketAction(
final Map<String, String> params) {
try {
Ticket ticket = getTicket(params);
if (ticket != null) {
ticketController.setTicket(ticket);
if (!ticketController.isUserCanViewTicket()) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.VIEW_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_TAKE_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanTake()) {
ticketController.take();
return "/stylesheets/ticketTake.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.TAKE_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_POSTPONE_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanPostpone()) {
ticketController.postpone();
return "/stylesheets/ticketPostpone.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.POSTPONE_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_ASSIGN_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanAssign()) {
ticketController.assign();
return "/stylesheets/ticketAssign.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.ASSIGN_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_REFUSE_CLOSURE_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanRefuseClosure()) {
ticketController.refuseClosure();
return "/stylesheets/ticketRefuseClosure.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.REFUSE_CLOSURE_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_APPROVE_CLOSURE_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanApproveClosure()) {
ticketController.approveClosure();
return "/stylesheets/ticketApproveClosure.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.APPROVE_CLOSURE_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_REFUSE_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanRefuse()) {
ticketController.refuse();
return "/stylesheets/ticketRefuse.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.REFUSE_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_REOPEN_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanReopen()) {
ticketController.reopen();
return "/stylesheets/ticketReopen.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.REOPEN_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_GIVE_INFORMATION_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanGiveInformation()) {
ticketController.giveInformation();
return "/stylesheets/ticketGiveInformation.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.GIVE_INFORMATION_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_REQUEST_INFORMATION_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanRequestInformation()) {
ticketController.requestInformation();
return "/stylesheets/ticketRequestInformation.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.REQUEST_INFORMATION_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_FREE_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanFree()) {
ticketController.free();
return "/stylesheets/ticketFree.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.FREE_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_CLOSE_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanClose()) {
ticketController.close();
return "/stylesheets/ticketClose.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.CLOSE_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_TAKE_AND_CLOSE_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanTakeAndClose()) {
ticketController.takeAndClose();
return "/stylesheets/ticketTakeAndClose.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.TAKE_AND_CLOSE_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
if (TICKET_TAKE_AND_REQUEST_INFORMATION_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
if (ticketController.isUserCanTakeAndRequestInformation()) {
ticketController.takeAndRequestInformation();
return "/stylesheets/ticketTakeAndRequestInformation.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.TAKE_AND_REQUEST_INFORMATION_TICKET_NOT_ALLOWED",
String.valueOf(ticket.getId()));
}
return "/stylesheets/ticketView.jsp";
}
ArchivedTicket archivedTicket = getArchivedTicket(params);
if (archivedTicket != null) {
archivedTicketController.setArchivedTicket(archivedTicket);
if (!archivedTicketController.isUserCanViewArchivedTicket()) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.VIEW_TICKET_NOT_ALLOWED",
String.valueOf(archivedTicket.getTicketId()));
}
return "/stylesheets/archivedTicketView.jsp";
}
addErrorMessage(null, "DEEP_LINKS.MESSAGE.TICKET_NOT_FOUND",
params.get(TICKET_ID_PARAM));
return null;
} catch (IllegalArgumentException e) {
return null;
}
}
/**
* Redirect to the ticketAdd page.
* @param params
* @return a String.
*/
protected String redirectTicketAdd(
final Map<String, String> params) {
Department department = null;
if (params.get(DEPARTMENT_ID_PARAM) != null) {
Long departmentId = null;
try {
departmentId = Long.valueOf(params.get(DEPARTMENT_ID_PARAM));
} catch (NumberFormatException e) {
addErrorMessageInvalidParameter(DEPARTMENT_ID_PARAM, params.get(DEPARTMENT_ID_PARAM));
}
if (departmentId != null) {
try {
department = getDomainService().getDepartment(departmentId);
} catch (DepartmentNotFoundException e) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.DEPARTMENT_NOT_FOUND",
departmentId.toString());
}
}
}
Category category = null;
if (params.get(CATEGORY_ID_PARAM) != null) {
Long categoryId = null;
try {
categoryId = Long.valueOf(params.get(CATEGORY_ID_PARAM));
} catch (NumberFormatException e) {
addErrorMessageInvalidParameter(CATEGORY_ID_PARAM, params.get(CATEGORY_ID_PARAM));
}
if (categoryId != null) {
try {
category = getDomainService().getCategory(categoryId);
if (category.isVirtual()) {
category = category.getRealCategory();
}
} catch (CategoryNotFoundException e) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.CATEGORY_NOT_FOUND",
categoryId.toString());
}
}
}
if (!ticketController.isUserCanAdd()) {
addAuthenticationRequiredErrorMessage();
} else {
ticketController.add();
if (category != null) {
if (department == null) {
department = category.getDepartment();
}
ticketController.setAddTargetCategory(category);
ticketController.setAddTargetDepartment(category.getDepartment());
ticketController.addChooseCategory();
}
}
return "/stylesheets/ticketAdd.jsp";
}
/**
* Redirect to the welcome page.
* @param params
* @return a String.
*/
protected String redirectWelcome(
@SuppressWarnings("unused") final Map<String, String> params) {
return "/stylesheets/welcome.jsp";
}
/**
* Redirect to the about page.
* @param params
* @return a String.
*/
protected String redirectAbout(
@SuppressWarnings("unused") final Map<String, String> params) {
return "/stylesheets/about.jsp";
}
/**
* Redirect to the preferences page.
* @param params
* @return a String.
*/
protected String redirectPreferences(
@SuppressWarnings("unused") final Map<String, String> params) {
if (!preferencesController.isPageAuthorized()) {
addAuthenticationRequiredErrorMessage();
}
preferencesController.enter();
return "/stylesheets/preferences.jsp";
}
/**
* Redirect to the manager preferences page.
* @param params
* @return a String.
*/
protected String redirectManagerPreferences(
final Map<String, String> params) {
if (!preferencesController.isPageAuthorized()) {
addAuthenticationRequiredErrorMessage();
} else if (!preferencesController.isUserManagerOrAdmin()) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.MANAGER_PREFERENCES_NOT_ALLOWED");
} else {
if (params.get(TOGGLE_TICKET_REPORTS_PARAM) != null) {
preferencesController.toggleTicketReports();
}
if (params.get(TOGGLE_FAQ_REPORTS_PARAM) != null) {
preferencesController.toggleFaqReports();
}
}
preferencesController.enter();
return "/stylesheets/managerPreferences.jsp";
}
/**
* Redirect to the search page.
* @param params
* @return a String.
*/
protected String redirectSearch(
final Map<String, String> params) {
if (!searchController.isPageAuthorized()) {
addAuthenticationRequiredErrorMessage();
}
if (params != null) {
searchController.setTokens(params.get(SEARCH_TOKENS_PARAM));
searchController.setExprTokens(params.get(SEARCH_EXPR_TOKENS_PARAM));
searchController.setOrTokens(params.get(SEARCH_OR_TOKENS_PARAM));
searchController.setNotTokens(params.get(SEARCH_NOT_TOKENS_PARAM));
searchController.setManagerId(params.get(SEARCH_MANAGER_ID_PARAM));
searchController.setOwnerId(params.get(SEARCH_OWNER_ID_PARAM));
searchController.setUserId(params.get(SEARCH_USER_ID_PARAM));
User currentUser = sessionController.getCurrentUser();
if (currentUser != null) {
if (params.get(ADVANCED_SEARCH_PARAM) != null) {
currentUser.setAdvancedSearch(
Boolean.parseBoolean(params.get(ADVANCED_SEARCH_PARAM)));
}
if (params.get(SEARCH_SORT_BY_DATE_PARAM) != null) {
currentUser.setSearchSortByDate(
Boolean.parseBoolean(params.get(SEARCH_SORT_BY_DATE_PARAM)));
}
currentUser.setSearchTypeFilter(params.get(SEARCH_TYPE_PARAM));
if (params.get(DEPARTMENT_ID_PARAM) != null) {
Long departmentId;
try {
departmentId = Long.valueOf(params.get(DEPARTMENT_ID_PARAM));
} catch (NumberFormatException e) {
addErrorMessageInvalidParameter(
DEPARTMENT_ID_PARAM, params.get(DEPARTMENT_ID_PARAM));
return null;
}
try {
Department department = domainService.getDepartment(departmentId);
if (getDomainService().isDepartmentVisibleForSearch(
currentUser, department,
sessionController.getClient())) {
currentUser.setSearchDepartmentFilter(department);
}
} catch (DepartmentNotFoundException e) {
// set no department filter
}
}
getDomainService().updateUser(currentUser);
}
}
searchController.enter();
return "/stylesheets/search.jsp";
}
/**
* Redirect to the control panel page.
* @param params
* @return a String.
*/
protected String redirectControlPanel(
@SuppressWarnings("unused") final Map<String, String> params) {
if (!controlPanelController.isPageAuthorized()) {
addAuthenticationRequiredErrorMessage();
}
controlPanelController.enter();
return "/stylesheets/controlPanel.jsp";
}
/**
* Redirect to the departmentView page.
* @param params
* @return a String.
*/
protected String redirectDepartmentView(
final Map<String, String> params) {
if (params.get(DEPARTMENT_ID_PARAM) == null) {
addErrorMessageMissingParameter(DEPARTMENT_ID_PARAM);
return null;
}
Long departmentId;
try {
departmentId = Long.valueOf(params.get(DEPARTMENT_ID_PARAM));
} catch (NumberFormatException e) {
addErrorMessageInvalidParameter(DEPARTMENT_ID_PARAM, params.get(DEPARTMENT_ID_PARAM));
return null;
}
try {
Department department = domainService.getDepartment(departmentId);
departmentsController.enter();
departmentsController.setDepartment(department);
if (!departmentsController.isCurrentUserCanViewDepartment()) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.VIEW_DEPARTMENT_NOT_ALLOWED",
department.getLabel());
} else {
departmentsController.viewDepartment();
}
return "/stylesheets/departmentView.jsp";
} catch (DepartmentNotFoundException e) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.DEPARTMENT_NOT_FOUND",
departmentId.toString());
return null;
}
}
/**
* Redirect to the departments page.
* @param params
* @return a String.
*/
protected String redirectDepartments(
@SuppressWarnings("unused") final Map<String, String> params) {
if (sessionController.getCurrentUser() == null) {
addAuthenticationRequiredErrorMessage();
} else if (!departmentsController.isCurrentUserCanViewDepartments()) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.DEPARTMENTS_NOT_ALLOWED");
}
departmentsController.enter();
return "/stylesheets/departments.jsp";
}
/**
* Redirect to the administrators page.
* @param params
* @return a String.
*/
protected String redirectAdministrators(
@SuppressWarnings("unused") final Map<String, String> params) {
if (sessionController.getCurrentUser() == null) {
addAuthenticationRequiredErrorMessage();
} else if (!administratorsController.isPageAuthorized()) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.ADMINISTRATORS_NOT_ALLOWED");
return null;
}
administratorsController.enter();
return "/stylesheets/administrators.jsp";
}
/**
* Redirect to the journal page.
* @param params
* @return a String.
*/
protected String redirectJournal(
@SuppressWarnings("unused") final Map<String, String> params) {
if (sessionController.getCurrentUser() == null) {
addAuthenticationRequiredErrorMessage();
} else if (!journalController.isPageAuthorized()) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.JOURNAL_NOT_ALLOWED");
return null;
}
journalController.enter();
return "/stylesheets/journal.jsp";
}
/**
* Redirect to the FAQ page.
* @param params
* @return a String.
*/
protected String redirectFaq(
final Map<String, String> params) {
faqsController.enter();
if (params != null && params.get(FAQ_ID_PARAM) != null) {
Long faqId = null;
try {
faqId = Long.valueOf(params.get(FAQ_ID_PARAM));
} catch (NumberFormatException e) {
addErrorMessageInvalidParameter(
FAQ_ID_PARAM, params.get(FAQ_ID_PARAM));
}
if (faqId != null) {
try {
Faq faq = domainService.getFaq(faqId);
if (!faqsController.userCanViewFaq(faq)) {
addErrorMessage(
null,
"DEEP_LINKS.MESSAGE.VIEW_FAQ_NOT_ALLOWED",
faqId.toString());
} else {
faqsController.setFaq(faq);
}
} catch (FaqNotFoundException e) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.FAQ_NOT_FOUND",
faqId.toString());
}
}
}
return "/stylesheets/faqs.jsp";
}
/**
* Redirect to the statistics page.
* @param params
* @return a String.
*/
protected String redirectStatistics(
@SuppressWarnings("unused") final Map<String, String> params) {
if (sessionController.getCurrentUser() == null) {
addAuthenticationRequiredErrorMessage();
} else if (!statisticsController.isPageAuthorized()) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.STATISTICS_NOT_ALLOWED");
return null;
}
statisticsController.enter();
return "/stylesheets/statistics.jsp";
}
/**
* Redirect to the bookmarks page.
* @param params
* @return a String.
*/
protected String redirectBookmarks(
@SuppressWarnings("unused") final Map<String, String> params) {
if (sessionController.getCurrentUser() == null) {
addAuthenticationRequiredErrorMessage();
}
bookmarksController.enter();
return "/stylesheets/bookmarks.jsp";
}
/**
* Redirect to the responses page.
* @param params
* @return a String.
*/
protected String redirectResponses(
@SuppressWarnings("unused") final Map<String, String> params) {
if (sessionController.getCurrentUser() == null) {
addAuthenticationRequiredErrorMessage();
} else if (!responsesController.isPageAuthorized()) {
addErrorMessage(null, "DEEP_LINKS.MESSAGE.RESPONSES_NOT_ALLOWED");
return null;
}
responsesController.enter();
return "/stylesheets/responses.jsp";
}
/**
* Redirect to the changePassword page.
* @param params
* @return a String.
*/
protected String redirectChangePassword(
final Map<String, String> params) {
if (logger.isDebugEnabled()) {
logger.debug("redirectChangePassword()");
logger.debug("params=" + params);
}
String userId = params.get(USER_PARAM);
if (userId == null) {
addErrorMessageMissingParameter(USER_PARAM);
}
String password = params.get(PASSWORD_PARAM);
if (password == null) {
addErrorMessageMissingParameter(PASSWORD_PARAM);
}
params.remove(USER_PARAM);
params.remove(PASSWORD_PARAM);
sessionController.setLoginParams(params);
if (userId == null || password == null) {
return null;
}
sessionController.unsetCurrentUser();
sessionController.setEmail(userId);
sessionController.setPassword(password);
sessionController.applicationLoginFromRedirector();
if (sessionController.getCurrentUser() == null) {
addAuthenticationRequiredErrorMessage();
} else {
preferencesController.gotoChangePassword();
preferencesController.setOldPassword(password);
}
return "/stylesheets/changePassword.jsp";
}
/**
* @see org.esupportail.commons.web.deepLinking.DeepLinkingRedirector#redirect(java.util.Map)
*/
@Override
public String redirect(
final Map<String, String> params) {
sessionController.resetSessionLocale();
if (sessionController.getCurrentUser() == null) {
sessionController.cookieLogin();
}
sessionController.setNormalState();
sessionController.setLoginParams(params);
User user = sessionController.getCurrentUser();
if (user != null && user.getLanguage() == null) {
user.setLanguage(sessionController.getLocale().toString());
getDomainService().updateUser(user);
}
if (params != null) {
if (logger.isDebugEnabled()) {
logger.debug("params is not null");
for (String paramName : params.keySet()) {
logger.debug("[" + paramName + "] => [" + params.get(paramName) + "]");
}
}
if (params.containsKey(ENTER_PARAM)) {
// force the authenticator to renew authentication
sessionController.unsetCurrentUser();
}
user = sessionController.getCurrentUser();
if (user != null) {
getDomainService().transformEntitiesCreatedWithEmail(user);
faqsController.reset();
}
if (CHANGE_PASSWORD_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectChangePassword(params);
}
if (TICKET_VIEW_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_TAKE_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_POSTPONE_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_ASSIGN_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_REFUSE_CLOSURE_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_APPROVE_CLOSURE_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_REFUSE_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_REOPEN_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_GIVE_INFORMATION_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_REQUEST_INFORMATION_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_FREE_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_CLOSE_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_TAKE_AND_CLOSE_PAGE_VALUE.equals(params.get(PAGE_PARAM))
|| TICKET_TAKE_AND_REQUEST_INFORMATION_PAGE_VALUE.equals(params.get(PAGE_PARAM))
) {
return redirectTicketAction(params);
}
if (ADD_TICKET_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectTicketAdd(params);
}
if (ABOUT_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectAbout(params);
}
if (WELCOME_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectWelcome(params);
}
if (PREFERENCES_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectPreferences(params);
}
if (MANAGER_PREFERENCES_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectManagerPreferences(params);
}
if (SEARCH_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectSearch(params);
}
if (CONTROL_PANEL_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectControlPanel(params);
}
if (VIEW_DEPARTMENT_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectDepartmentView(params);
}
if (DEPARTMENTS_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectDepartments(params);
}
if (ADMINISTRATORS_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectAdministrators(params);
}
if (JOURNAL_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectJournal(params);
}
if (FAQ_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectFaq(params);
}
if (STATISTICS_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectStatistics(params);
}
if (BOOKMARKS_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectBookmarks(params);
}
if (RESPONSES_PAGE_VALUE.equals(params.get(PAGE_PARAM))) {
return redirectResponses(params);
}
if (StringUtils.hasText(params.get(PAGE_PARAM))) {
addErrorMessageInvalidParameter(PAGE_PARAM, params.get(PAGE_PARAM));
}
} else {
if (logger.isDebugEnabled()) {
logger.debug("params is null");
}
}
if (user == null) {
return null;
}
if (User.START_PAGE_CONTROL_PANEL.equals(user.getStartPage())) {
return redirectControlPanel(params);
}
if (User.START_PAGE_ABOUT.equals(user.getStartPage())) {
return redirectAbout(params);
}
if (User.START_PAGE_PREFERENCES.equals(user.getStartPage())) {
return redirectPreferences(params);
}
if (User.START_PAGE_SEARCH.equals(user.getStartPage())) {
return redirectSearch(params);
}
if (User.START_PAGE_JOURNAL.equals(user.getStartPage())) {
return redirectJournal(params);
}
if (User.START_PAGE_FAQ.equals(user.getStartPage())) {
return redirectFaq(params);
}
if (User.START_PAGE_STATISTICS.equals(user.getStartPage())) {
return redirectStatistics(params);
}
if (User.START_PAGE_BOOKMARKS.equals(user.getStartPage())) {
return redirectBookmarks(params);
}
if (User.START_PAGE_BOOKMARKS.equals(user.getStartPage())) {
return redirectBookmarks(params);
}
return redirectWelcome(params);
}
/**
* @param sessionController the sessionController to set
*/
public void setSessionController(final SessionController sessionController) {
this.sessionController = sessionController;
}
/**
* @return the archivedTicketController
*/
protected ArchivedTicketController getArchivedTicketController() {
return archivedTicketController;
}
/**
* @param archivedTicketController the archivedTicketController to set
*/
public void setArchivedTicketController(
final ArchivedTicketController archivedTicketController) {
this.archivedTicketController = archivedTicketController;
}
/**
* @return the sessionController
*/
protected SessionController getSessionController() {
return sessionController;
}
/**
* @return the domainService
*/
protected DomainService getDomainService() {
return domainService;
}
/**
* @param domainService the domainService to set
*/
public void setDomainService(final DomainService domainService) {
this.domainService = domainService;
}
/**
* @return the ticketController
*/
protected TicketController getTicketController() {
return ticketController;
}
/**
* @param ticketController the ticketController to set
*/
public void setTicketController(final TicketController ticketController) {
this.ticketController = ticketController;
}
/**
* @return the preferencesController
*/
protected PreferencesController getPreferencesController() {
return preferencesController;
}
/**
* @param preferencesController the preferencesController to set
*/
public void setPreferencesController(final PreferencesController preferencesController) {
this.preferencesController = preferencesController;
}
/**
* @return the searchController
*/
protected SearchController getSearchController() {
return searchController;
}
/**
* @param searchController the searchController to set
*/
public void setSearchController(final SearchController searchController) {
this.searchController = searchController;
}
/**
* @return the controlPanelController
*/
protected ControlPanelController getControlPanelController() {
return controlPanelController;
}
/**
* @param controlPanelController the controlPanelController to set
*/
public void setControlPanelController(
final ControlPanelController controlPanelController) {
this.controlPanelController = controlPanelController;
}
/**
* @return the administratorsController
*/
protected AdministratorsController getAdministratorsController() {
return administratorsController;
}
/**
* @param administratorsController the administratorsController to set
*/
public void setAdministratorsController(
final AdministratorsController administratorsController) {
this.administratorsController = administratorsController;
}
/**
* @return the departmentsController
*/
protected DepartmentsController getDepartmentsController() {
return departmentsController;
}
/**
* @param departmentsController the departmentsController to set
*/
public void setDepartmentsController(final DepartmentsController departmentsController) {
this.departmentsController = departmentsController;
}
/**
* @return the journalController
*/
protected JournalController getJournalController() {
return journalController;
}
/**
* @param journalController the journalController to set
*/
public void setJournalController(final JournalController journalController) {
this.journalController = journalController;
}
/**
* @return the faqsController
*/
protected FaqsController getFaqsController() {
return faqsController;
}
/**
* @param faqsController the faqsController to set
*/
public void setFaqsController(final FaqsController faqsController) {
this.faqsController = faqsController;
}
/**
* @return the statisticsController
*/
protected StatisticsController getStatisticsController() {
return statisticsController;
}
/**
* @param statisticsController the statisticsController to set
*/
public void setStatisticsController(final StatisticsController statisticsController) {
this.statisticsController = statisticsController;
}
/**
* @return the bookmarksController
*/
protected BookmarksController getBookmarksController() {
return bookmarksController;
}
/**
* @param bookmarksController the bookmarksController to set
*/
public void setBookmarksController(final BookmarksController bookmarksController) {
this.bookmarksController = bookmarksController;
}
/**
* @return the responsesController
*/
protected ResponsesController getResponsesController() {
return responsesController;
}
/**
* @param responsesController the responsesController to set
*/
public void setResponsesController(final ResponsesController responsesController) {
this.responsesController = responsesController;
}
}