br.eti.danielcamargo.backend.common.utils.MessageUtils.java Source code

Java tutorial

Introduction

Here is the source code for br.eti.danielcamargo.backend.common.utils.MessageUtils.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.eti.danielcamargo.backend.common.utils;

import br.eti.danielcamargo.backend.common.exceptions.ValidationOccurrence;
import br.eti.danielcamargo.backend.common.rest.transfer.Mensagem;
import br.eti.danielcamargo.backend.common.rest.transfer.Mensagem.NivelMensagem;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.springframework.context.i18n.LocaleContextHolder;

/**
 *
 * @author Daniel
 */
public class MessageUtils {

    private static final Map<String, String> MAPA_RECURSOS = new HashMap<>();

    private static final String MENSAGENS_APLICACAO = "ApplicationMessages";

    private static String buscarChave(String modulo, String chave) {
        return buscarChave(modulo, chave, new Serializable[] {});
    }

    private static String buscarChave(String modulo, String chave, Serializable... params) {

        Locale locale = LocaleContextHolder.getLocale();

        if (!MAPA_RECURSOS.containsKey(modulo)) {
            StringBuilder caminho = new StringBuilder();
            caminho.append("i18n.").append(modulo).append(".").append(MENSAGENS_APLICACAO);
            MAPA_RECURSOS.put(modulo, caminho.toString());
        }

        String caminhoBundle = MAPA_RECURSOS.get(modulo);

        String valor = ResourceBundleUtils.getFromKeyOnly(locale, caminhoBundle, chave, params);
        return valor;
    }

    public static Mensagem criarMensagemSucesso() {
        String detalhe = buscarChave("common", "common.successfull-operation");
        return new Mensagem(detalhe, NivelMensagem.SUCESSO);
    }

    public static Mensagem criarMensagemSucesso(String modulo, String chave, Serializable... params) {
        String detalhe = buscarChave(modulo, chave, params);
        return new Mensagem(detalhe, NivelMensagem.SUCESSO, Arrays.asList(params));
    }

    public static Mensagem criarMensagemViolacaoUnicidade(String modulo, String chave) {
        String detalhe = buscarChave(modulo, chave);
        return new Mensagem(detalhe, NivelMensagem.ERRO);
    }

    public static Mensagem criarMensagemViolacaoChavePrimaria(String modulo, String chave) {
        String detalhe = buscarChave(modulo, chave);
        return new Mensagem(detalhe, NivelMensagem.ERRO);
    }

    public static Mensagem criarMensagemViolacaoChaveEstrangeira(String modulo, String chave) {
        String detalhe = buscarChave(modulo, chave);
        return new Mensagem(detalhe, NivelMensagem.ERRO);
    }

    public static Mensagem criarMensagemErro(String modulo, ValidationOccurrence occurrence) {
        String param1 = occurrence.getMessageKey();

        String msg = buscarChave(modulo, param1, occurrence.getParams());

        Serializable[] params = occurrence.getParams();
        List<Serializable> list = new ArrayList<>();
        if (params != null) {
            list.addAll(Arrays.asList(params));
        }
        return new Mensagem(msg, NivelMensagem.ERRO, list);
    }

    public static Mensagem criarMensagemErroValidacao(String modulo, ValidationOccurrence occurrence) {
        String param1 = occurrence.getMessageKey();

        String campo = buscarChave(modulo, param1, occurrence.getParams());

        String detalhe = buscarChave(modulo, "common.validation-error", param1, campo);

        Serializable[] params = occurrence.getParams();
        List<Serializable> list = new ArrayList<>();
        if (params != null) {
            list.addAll(Arrays.asList(params));
        }
        return new Mensagem(detalhe, NivelMensagem.ERRO, list);
    }

}