/**
*
*/
package net.conselldemallorca.helium.webapp.v3.controller;
import java.io.IOException;
import javax.activation.MimetypesFileTypeMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.conselldemallorca.helium.webapp.v3.helper.AjaxHelper;
import net.conselldemallorca.helium.webapp.v3.helper.MissatgesHelper;
import net.conselldemallorca.helium.webapp.v3.helper.ModalHelper;
import org.springframework.context.MessageSource;
import org.springframework.context.MessageSourceAware;
import org.springframework.web.servlet.support.RequestContext;
/**
* Controlador base que implementa funcionalitats comunes.
*
* @author Limit Tecnologies <limit@limit.es>
*/
public class BaseController implements MessageSourceAware {
public static final String ESQUEMA_PREFIX = "/helium";
MessageSource messageSource;
protected String modalUrlTancar(boolean refrescar) {
if (refrescar)
return modalUrlTancar();
else
return "v3/utils/modalTancar";
}
protected String modalUrlTancar() {
return "v3/utils/modalTancarIRefrescar";
}
protected String ajaxUrlOk() {
return "redirect:/nodeco/util/ajaxOk";
}
protected String getPageURI(HttpServletRequest request) {
String uri = request.getRequestURI();
return uri.substring(uri.indexOf(ESQUEMA_PREFIX) + ESQUEMA_PREFIX.length());
}
protected String getAjaxControllerReturnValueSuccess(
HttpServletRequest request,
String url,
String messageKey) {
return getAjaxControllerReturnValueSuccess(
request,
url,
messageKey,
null);
}
protected String getAjaxControllerReturnValueSuccess(
HttpServletRequest request,
String url,
String messageKey,
Object[] messageArgs) {
if (messageKey != null) {
MissatgesHelper.success(
request,
getMessage(
request,
messageKey,
messageArgs));
}
if (AjaxHelper.isAjax(request)) {
return ajaxUrlOk();
} else {
return url;
}
}
protected String getAjaxControllerReturnValueError(
HttpServletRequest request,
String url,
String messageKey) {
return getAjaxControllerReturnValueError(
request,
url,
messageKey,
null);
}
protected String getAjaxControllerReturnValueError(
HttpServletRequest request,
String url,
String messageKey,
Object[] messageArgs) {
if (messageKey != null) {
MissatgesHelper.error(
request,
getMessage(
request,
messageKey,
messageArgs));
}
if (AjaxHelper.isAjax(request)) {
return ajaxUrlOk();
} else {
return url;
}
}
protected String getModalControllerReturnValueSuccess(
HttpServletRequest request,
String url,
String messageKey) {
return getModalControllerReturnValueSuccess(
request,
url,
messageKey,
null);
}
protected String getModalControllerReturnValueSuccess(
HttpServletRequest request,
String url,
String messageKey,
Object[] messageArgs) {
if (messageKey != null) {
MissatgesHelper.success(
request,
getMessage(
request,
messageKey,
messageArgs));
}
if (ModalHelper.isModal(request)) {
return modalUrlTancar();
} else {
return url;
}
}
protected String getModalControllerReturnValueError(
HttpServletRequest request,
String url,
String messageKey) {
return getModalControllerReturnValueError(
request,
url,
messageKey,
null);
}
protected String getModalControllerReturnValueError(
HttpServletRequest request,
String url,
String messageKey,
Object[] messageArgs) {
if (messageKey != null) {
MissatgesHelper.error(
request,
getMessage(
request,
messageKey,
messageArgs));
}
if (ModalHelper.isModal(request)) {
return modalUrlTancar();
} else {
return url;
}
}
protected void writeFileToResponse(
String fileName,
byte[] fileContent,
HttpServletResponse response) throws IOException {
response.setHeader("Pragma", "");
response.setHeader("Expires", "");
response.setHeader("Cache-Control", "");
response.setHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
response.setContentType(new MimetypesFileTypeMap().getContentType(fileName));
response.getOutputStream().write(fileContent);
}
protected String getMessage(
HttpServletRequest request,
String key,
Object[] args) {
String message = messageSource.getMessage(
key,
args,
"???" + key + "???",
new RequestContext(request).getLocale());
return message;
}
protected String getMessage(
HttpServletRequest request,
String key) {
return getMessage(request, key, null);
}
protected String redirectByModal(HttpServletRequest request, String url){
if (ModalHelper.isModal(request)){
url = "/modal" + url;
}
return "redirect:" + url;
}
public void setMessageSource(MessageSource messageSource) {
this.messageSource = messageSource;
}
}