001 package com.khubla.pragmatach.framework.i8n;
002
003 import java.util.HashSet;
004 import java.util.Map;
005 import java.util.Set;
006
007 import org.slf4j.Logger;
008 import org.slf4j.LoggerFactory;
009
010 import com.khubla.pragmatach.framework.api.I8NProvider;
011 import com.khubla.pragmatach.framework.plugin.PluginDescriptor;
012 import com.khubla.pragmatach.framework.plugin.PluginDescriptors;
013
014 /**
015 * @author tome
016 */
017 public class I8NProviders {
018 /**
019 * instance
020 */
021 private static I8NProviders instance = null;
022
023 /**
024 * singleton
025 */
026 public static I8NProviders getInstance() {
027 if (null == instance) {
028 instance = new I8NProviders();
029 }
030 return instance;
031 }
032
033 /**
034 * logger
035 */
036 private final Logger logger = LoggerFactory.getLogger(this.getClass());
037 /**
038 * providers
039 */
040 public Set<I8NProvider> providers;
041
042 /**
043 * ctor
044 */
045 private I8NProviders() {
046 final Map<String, PluginDescriptor> plugins = PluginDescriptors.getPlugins();
047 if (null != plugins) {
048 providers = new HashSet<I8NProvider>();
049 for (final PluginDescriptor pluginDescriptor : plugins.values()) {
050 final I8NProvider i8NProvider = pluginDescriptor.getPlugin().getI8NProvider();
051 if (null != i8NProvider) {
052 logger.info("Loaded i8N provider: " + i8NProvider.getName());
053 providers.add(i8NProvider);
054 }
055 }
056 }
057 }
058 }