/**
* ESUP-Portail Helpdesk - Copyright (c) 2004-2009 ESUP-Portail consortium.
*/
package org.esupportail.helpdesk.services.urlGeneration;
import java.util.HashMap;
import java.util.Map;
import org.esupportail.commons.aop.cache.RequestCache;
import org.esupportail.commons.services.authentication.AuthUtils;
import org.esupportail.commons.services.urlGeneration.UrlGenerator;
import org.esupportail.commons.utils.Assert;
import org.esupportail.helpdesk.domain.beans.Category;
import org.esupportail.helpdesk.domain.beans.Faq;
import org.esupportail.helpdesk.domain.beans.User;
import org.esupportail.helpdesk.web.deepLinking.DeepLinkingRedirector;
import org.springframework.beans.factory.InitializingBean;
/**
* The basic implementation of UrlBuilder.
*/
public class UrlBuilderImpl implements UrlBuilder, InitializingBean {
/**
* The serialization id.
*/
private static final long serialVersionUID = -5793449965052333880L;
/**
* The URL generator.
*/
private UrlGenerator urlGenerator;
/**
* Constructor.
*/
public UrlBuilderImpl() {
super();
}
/**
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
*/
@Override
public void afterPropertiesSet() {
Assert.notNull(this.urlGenerator,
"property urlGenerator of class " + this.getClass().getName() + " can not be null");
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getUrl(java.lang.String, java.util.Map)
*/
@Override
@RequestCache
public String getUrl(final String authType, final Map<String, String> params) {
if (AuthUtils.SHIBBOLETH.equals(authType)) {
return urlGenerator.shibbolethUrl(params);
}
if (AuthUtils.CAS.equals(authType)) {
return urlGenerator.casUrl(params);
}
return urlGenerator.guestUrl(params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getNewDeepLinkParams(java.lang.String)
*/
@Override
@RequestCache
public Map<String, String> getNewDeepLinkParams(final String pageParam) {
Map<String, String> params = new HashMap<String, String>();
if (pageParam != null) {
params.put(DeepLinkingRedirector.PAGE_PARAM, pageParam);
}
return params;
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getAboutUrl(java.lang.String)
*/
@Override
@RequestCache
public String getAboutUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.ABOUT_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getChangePasswordUrl(
* org.esupportail.helpdesk.domain.beans.User)
*/
@Override
public String getChangePasswordUrl(final User applicationUser) {
Map<String, String> params = new HashMap<String, String>();
if (applicationUser != null) {
params.put(DeepLinkingRedirector.PAGE_PARAM, DeepLinkingRedirector.CHANGE_PASSWORD_PAGE_VALUE);
params.put(DeepLinkingRedirector.USER_PARAM, applicationUser.getRealId());
params.put(DeepLinkingRedirector.PASSWORD_PARAM, applicationUser.getPassword());
} else {
params.put(DeepLinkingRedirector.PAGE_PARAM, DeepLinkingRedirector.WELCOME_PAGE_VALUE);
}
return getUrl(AuthUtils.APPLICATION, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getWelcomeUrl(java.lang.String)
*/
@Override
@RequestCache
public String getWelcomeUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.WELCOME_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getPreferencesUrl(java.lang.String)
*/
@Override
@RequestCache
public String getPreferencesUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.PREFERENCES_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getManagerPreferencesUrl(java.lang.String)
*/
@Override
@RequestCache
public String getManagerPreferencesUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.MANAGER_PREFERENCES_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getToggleTicketReportsUrl(java.lang.String)
*/
@Override
@RequestCache
public String getToggleTicketReportsUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.MANAGER_PREFERENCES_PAGE_VALUE);
params.put(DeepLinkingRedirector.TOGGLE_TICKET_REPORTS_PARAM, "");
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getToggleFaqReportsUrl(java.lang.String)
*/
@Override
@RequestCache
public String getToggleFaqReportsUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.MANAGER_PREFERENCES_PAGE_VALUE);
params.put(DeepLinkingRedirector.TOGGLE_FAQ_REPORTS_PARAM, "");
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketTakeUrl(java.lang.String, long)
*/
@Override
@RequestCache
public String getTicketTakeUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.TICKET_TAKE_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketPostponeUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketPostponeUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.TICKET_POSTPONE_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketAssignUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketAssignUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.TICKET_ASSIGN_PAGE_VALUE
);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketRefuseClosureUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketRefuseClosureUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(
DeepLinkingRedirector.TICKET_REFUSE_CLOSURE_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketApproveClosureUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketApproveClosureUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(
DeepLinkingRedirector.TICKET_APPROVE_CLOSURE_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketRefuseUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketRefuseUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.TICKET_REFUSE_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketReopenUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketReopenUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.TICKET_REOPEN_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketGiveInformationUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketGiveInformationUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(
DeepLinkingRedirector.TICKET_GIVE_INFORMATION_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketRequestInformationUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketRequestInformationUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(
DeepLinkingRedirector.TICKET_REQUEST_INFORMATION_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketFreeUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketFreeUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.TICKET_FREE_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketCloseUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketCloseUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.TICKET_CLOSE_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketTakeAndCloseUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketTakeAndCloseUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(
DeepLinkingRedirector.TICKET_TAKE_AND_CLOSE_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketTakeAndRequestInformationUrl(java.lang.String, long)
*/
@Override
@RequestCache
public Object getTicketTakeAndRequestInformationUrl(
final String authType,
final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(
DeepLinkingRedirector.TICKET_TAKE_AND_REQUEST_INFORMATION_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketViewUrl(java.lang.String, long)
*/
@Override
@RequestCache
public String getTicketViewUrl(final String authType, final long ticketId) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.TICKET_VIEW_PAGE_VALUE);
params.put(DeepLinkingRedirector.TICKET_ID_PARAM, Long.toString(ticketId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getTicketAddUrl(
* java.lang.String, org.esupportail.helpdesk.domain.beans.Category)
*/
@Override
@RequestCache
public String getTicketAddUrl(
final String authType,
final Category targetCategory) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.ADD_TICKET_PAGE_VALUE);
if (targetCategory != null) {
params.put(DeepLinkingRedirector.CATEGORY_ID_PARAM, Long.toString(targetCategory.getId()));
}
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getSearchUrl(
* java.lang.String, boolean, java.lang.String, java.lang.String, java.lang.String,
* java.lang.String, java.lang.String, java.lang.String, java.lang.String,
* org.esupportail.helpdesk.domain.beans.User)
*/
@Override
@RequestCache
public String getSearchUrl(
final String authType,
final boolean advancedSearch,
final String tokens,
final String exprTokens,
final String orTokens,
final String notTokens,
final String managerId,
final String ownerId,
final String userId,
final User user) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.SEARCH_PAGE_VALUE);
params.put(DeepLinkingRedirector.ADVANCED_SEARCH_PARAM, Boolean.toString(advancedSearch));
if (tokens != null) {
params.put(DeepLinkingRedirector.SEARCH_TOKENS_PARAM, tokens);
}
if (advancedSearch) {
if (exprTokens != null) {
params.put(DeepLinkingRedirector.SEARCH_EXPR_TOKENS_PARAM, exprTokens);
}
if (orTokens != null) {
params.put(DeepLinkingRedirector.SEARCH_OR_TOKENS_PARAM, orTokens);
}
if (notTokens != null) {
params.put(DeepLinkingRedirector.SEARCH_NOT_TOKENS_PARAM, notTokens);
}
if (managerId != null) {
params.put(DeepLinkingRedirector.SEARCH_MANAGER_ID_PARAM, managerId);
}
if (ownerId != null) {
params.put(DeepLinkingRedirector.SEARCH_OWNER_ID_PARAM, ownerId);
}
if (userId != null) {
params.put(DeepLinkingRedirector.SEARCH_USER_ID_PARAM, userId);
}
if (user != null) {
params.put(DeepLinkingRedirector.SEARCH_SORT_BY_DATE_PARAM,
String.valueOf(user.getSearchSortByDate()));
}
}
if (user != null) {
params.put(DeepLinkingRedirector.SEARCH_TYPE_PARAM,
String.valueOf(user.getSearchSortByDate()));
if (user.getSearchDepartmentFilter() != null) {
params.put(
DeepLinkingRedirector.DEPARTMENT_ID_PARAM,
Long.toString(user.getSearchDepartmentFilter().getId()));
}
}
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getDepartmentViewUrl(java.lang.String, long)
*/
@Override
@RequestCache
public String getDepartmentViewUrl(final String authType, final long departmentId) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.VIEW_DEPARTMENT_PAGE_VALUE);
params.put(DeepLinkingRedirector.DEPARTMENT_ID_PARAM, Long.toString(departmentId));
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getDepartmentsUrl(java.lang.String)
*/
@Override
@RequestCache
public String getDepartmentsUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.DEPARTMENTS_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getControlPanelUrl(java.lang.String)
*/
@Override
@RequestCache
public String getControlPanelUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.CONTROL_PANEL_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getAdministratorsUrl(java.lang.String)
*/
@Override
@RequestCache
public String getAdministratorsUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.ADMINISTRATORS_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getJournalUrl(java.lang.String)
*/
@Override
@RequestCache
public String getJournalUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.JOURNAL_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getFaqsUrl(
* java.lang.String, org.esupportail.helpdesk.domain.beans.Faq)
*/
@Override
@RequestCache
public String getFaqsUrl(
final String authType,
final Faq faq) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.FAQ_PAGE_VALUE);
if (faq != null) {
params.put(DeepLinkingRedirector.FAQ_ID_PARAM, Long.toString(faq.getId()));
}
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getStatisticsUrl(java.lang.String)
*/
@Override
@RequestCache
public String getStatisticsUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.STATISTICS_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getBookmarksUrl(java.lang.String)
*/
@Override
@RequestCache
public String getBookmarksUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.BOOKMARKS_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @see org.esupportail.helpdesk.services.urlGeneration.UrlBuilder#getResponsesUrl(java.lang.String)
*/
@Override
@RequestCache
public String getResponsesUrl(final String authType) {
Map<String, String> params = getNewDeepLinkParams(DeepLinkingRedirector.RESPONSES_PAGE_VALUE);
return getUrl(authType, params);
}
/**
* @return the urlGenerator
*/
protected UrlGenerator getUrlGenerator() {
return urlGenerator;
}
/**
* @param urlGenerator the urlGenerator to set
*/
public void setUrlGenerator(final UrlGenerator urlGenerator) {
this.urlGenerator = urlGenerator;
}
}