/* * Copyright (C) 2015 Arthur Gregorio, AG.Software * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package br.com.webbudget.infraestructure.configuration; import java.util.ResourceBundle; import javax.faces.application.ProjectStage; import javax.faces.context.FacesContext; import javax.servlet.http.HttpServletRequest; /** * Classe utilitaria para uso em alguns pontos da aplicacao sem a necessidade de * ficar repetindo alguns codigos tais como pegar configuracoes ou a URL base da * aplicacaao para uso em alguma template * * @author Arthur Gregorio * * @version 1.0.0 * @since 2.0.0, 07/07/2015 */ public class ApplicationUtils { /** * Busca no bundle de configuracoes da aplicacao uma determinada chave para * uma configuracao * * @param configurationKey a chave da qual queremos a configuracao * @return a configuracao para a chave informada */ public static String getConfiguration(String configurationKey) { final ResourceBundle bundle = ResourceBundle.getBundle("webbudget"); return bundle.getString(configurationKey); } /** * Constroi a URL base da aplicacao * * @return a URL base da aplicaco + contexto */ public static String buildBaseURL() { final FacesContext facesContext = FacesContext.getCurrentInstance(); final HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest(); final StringBuilder builder = new StringBuilder(); String actualPath = request.getRequestURL().toString(); builder.append(actualPath.replace(request.getRequestURI(), "")); builder.append(request.getContextPath()); return builder.toString(); } /** * Checa em que estagio do projeto estamos, as opcoes sao as definidas no * enum {@link ProjectStage} * * @param projectStage o estagio do projeto * @return se estamos usando ele ou nao */ public static boolean isStageRunning(ProjectStage projectStage) { return FacesContext.getCurrentInstance() .isProjectStage(projectStage); } /** * Gera um codigo aleatorio baseado em marcas do tempo * * @param size o tamanho * @param onlyNumbers se deve ou nao usar somente numeros * @return o codigo */ public static String createRamdomCode(int size, boolean onlyNumbers) { final String digits; if (onlyNumbers) { digits = "0123456789"; } else { digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; } long decimalNumber = System.nanoTime(); String generated = ""; int mod; int authCodeLength = 0; while (decimalNumber != 0 && authCodeLength < size) { mod = (int) (decimalNumber % digits.length()); generated = digits.substring(mod, mod + 1) + generated; decimalNumber = decimalNumber / digits.length(); authCodeLength++; } return generated; } }