/* * Copyright (C) 2005-2012 BetaCONCEPT Limited * * This file is part of Astroboa. * * Astroboa is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Astroboa 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Astroboa. If not, see <http://www.gnu.org/licenses/>. */ package org.betaconceptframework.astroboa.console.commons; import java.util.Iterator; import java.util.Locale; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import org.apache.commons.lang.StringUtils; import org.betaconceptframework.astroboa.api.model.Taxonomy; import org.betaconceptframework.astroboa.api.model.Topic; import org.betaconceptframework.astroboa.api.model.definition.Localization; import org.betaconceptframework.astroboa.api.security.management.Person; import org.betaconceptframework.astroboa.console.security.IdentityStoreRunAsSystem; import org.betaconceptframework.ui.jsf.utility.JSFUtilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author Gregory Chomatas (gchomatas@betaconcept.com) * @author Savvas Triantafyllou (striantafyllou@betaconcept.com) * */ public class Utils { protected static Logger logger = LoggerFactory.getLogger(Utils.class); public static String getLocalizedLabelForCurrentLocaleForTopic(Topic topic) { if (topic == null){ //We must provide at least a meesage return JSFUtilities.getLocalizedMessage("no.localized.label.for.description", null); } String locale = getLabelForCurrentDefaultOrEnglishLocale(topic, JSFUtilities.getLocaleAsString()); if (StringUtils.isBlank(locale)){ return topic.getName(); } return locale; } public static String getLocalizedLabelForCurrentLocaleForTaxonomy(Taxonomy taxonomy){ if (taxonomy == null){ //We must provide at least a message return JSFUtilities.getLocalizedMessage("no.localized.label.for.description", null); } String locale = getLabelForCurrentDefaultOrEnglishLocale(taxonomy, JSFUtilities.getLocaleAsString()); if (StringUtils.isBlank(locale)){ return taxonomy.getName(); } return locale; } /* * Current locale is the locale provided by the CmsEntity itself. * It is not the same with the locale provided by JSFUtilities, * although they may have the same value * */ private static String getLabelForCurrentDefaultOrEnglishLocale(Localization localization, String currentLocale) { //Check locale provided by JSF String locale = localization.getLocalizedLabelForLocale(JSFUtilities.getLocaleAsString()); if (locale == null){ //Check locale provided by entity locale = localization.getLocalizedLabelForLocale(currentLocale); //By default method Localization.getLocalizedLabelForLocale() //returns the label for ENGLISH locale, if the provided current locale is //null. //So an extra check is done in cases where current locale is not null //but no label exists for it if (locale == null && currentLocale != null && ! Locale.ENGLISH.toString().equals(currentLocale)){ //Explicitly check value for english locale locale = localization.getLocalizedLabelForLocale(Locale.ENGLISH.toString()); } } return locale; } public static String retrieveDisplayNameForRoleOrPerson(IdentityStoreRunAsSystem identityStoreRunAsSystem, String personIdOrRoleName){ if (identityStoreRunAsSystem == null || StringUtils.isBlank(personIdOrRoleName)){ logger.warn("Cannot retrieve display name for person or role because no indentity store instance has been provided"); return personIdOrRoleName; } if (StringUtils.isBlank(personIdOrRoleName)){ logger.warn("Cannot retrieve display name for person or role because provided person id or role name is blank"); return personIdOrRoleName; } try{ //Check first if provided personIdOrRoleName corresponds to a user name boolean userExists = (Boolean) identityStoreRunAsSystem.execute("userExists", new Class<?>[]{String.class}, new Object[]{personIdOrRoleName}); if (userExists){ Person user = (Person) identityStoreRunAsSystem.execute("retrieveUser", new Class<?>[]{String.class}, new Object[]{personIdOrRoleName}); if (user != null){ return user.getDisplayName() == null ? personIdOrRoleName : user.getDisplayName(); } } //It must be role. If not then the provided personIdOrRoleName is returned return (String) identityStoreRunAsSystem.execute("retrieveRoleDisplayName", new Class<?>[]{String.class, String.class}, new Object[]{personIdOrRoleName, JSFUtilities.getLocaleAsString()}); } catch(Exception e){ logger.error("",e); return personIdOrRoleName; } } /* * Get application Messages Separated with <br/> */ public static String getApplicationMessagesInSeparateLines() { String applicationMessagesAsCSVString = ""; Iterator<FacesMessage> iter = FacesContext.getCurrentInstance().getMessages(); while ( iter.hasNext() ) { applicationMessagesAsCSVString += iter.next().getDetail(); if (iter.hasNext()) { applicationMessagesAsCSVString += "<br/>"; } } return applicationMessagesAsCSVString; } public static String currentTimeInSeconds() { long time = System.currentTimeMillis()/1000; return String.valueOf(time); } }