com.github.javarch.jsf.context.MessageContext.java Source code

Java tutorial

Introduction

Here is the source code for com.github.javarch.jsf.context.MessageContext.java

Source

/*
* Copyright 2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/

package com.github.javarch.jsf.context;

import java.text.MessageFormat;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;

import com.github.javarch.jsf.CurrentLocale;
import com.github.javarch.support.Assert;
import com.github.javarch.support.MessageSourceAware;

/**
 * 
 * @author luksrn
 */
@Component
public class MessageContext {

    /**
     * 
     */
    @Autowired
    public FacesContextUtils facesContext;

    /**
     * 
     */
    @Autowired
    private CurrentLocale locale;

    /**
     * Obtm uma mensagem dos arquivos de i18n definidos na arquitetura atravs 
     * da classe MessageSourceAware utilizado o Locale do usurio. 
     * 
     * 
     * @param code - Cdigo que representa a chave do arquivo properties.
     * @param args - Possveis argumentos que a mensagem requisitada utilize.
     * 
     * @return Em caso de sucesso a mensagem recuperada dos arquivos properties. Caso
     * ocorra um erro a mensagem ser ???code??? 
     * 
     * @see MessageSourceAware
     * 
     */
    public String getMessageI18n(String code, String... args) {
        return MessageSourceAware.getMessage(code, args, locale.getLocale());
    }

    /**
     * Adiciona a mensagem da varivel <i>msg</i> ao FacesContext. A mensagem adicionada ter
     * o severity do tipo FacesMessage.SEVERITY_INFO e no ser associada  nenhum componente.
     * 
     * @param msg Mensagem que ser adicionada ao FacesContext
     */
    public void addInfo(String msg, Object... params) {
        add(null, msg, FacesMessage.SEVERITY_INFO, params);
    }

    public void addInfo(String idComponent, String msg, Object... params) {
        add(idComponent, msg, FacesMessage.SEVERITY_INFO, params);
    }

    /**
     * Adiciona a mensagem da varivel <i>msg</i> ao FacesContext. A mensagem adicionada ter
     * o severity do tipo FacesMessage.SEVERITY_ERROR e no ser associada  nenhum componente.
     * 
     * @param msg Mensagem que ser adicionada ao FacesContext
     */
    public void addError(String msg, Object... params) {
        add(null, msg, FacesMessage.SEVERITY_ERROR, params);
    }

    public void addError(BindingResult erros) {
        Assert.notNull(erros, "BindingResult no pode ser nulo.");

        for (FieldError fieldError : erros.getFieldErrors()) {
            addError(fieldError.getDefaultMessage());
        }
    }

    public void addError(String idComponent, String msg, Object... params) {
        add(idComponent, msg, FacesMessage.SEVERITY_ERROR, params);
    }

    private void add(String componentId, String msg, Severity tipo, Object... params) {
        if (msg != null && !msg.isEmpty()) {
            String mensagemFormatada = MessageFormat.format(msg, params);
            facesContext.getFacesContext().addMessage(componentId, new FacesMessage(tipo, mensagemFormatada, ""));
        }
    }

    public List<FacesMessage> getMessages() {
        return facesContext.getFacesContext().getMessageList();
    }

    public void clear() {
        facesContext.getFacesContext().getMessageList().clear();
    }

    public void setFacesContext(FacesContextUtils facesContext) {
        Assert.notNull(facesContext, "FacesContext can not be null.");
        this.facesContext = facesContext;
    }
}