- From: Thomas Gambet via cvs-syncmail <cvsmail@w3.org>
- Date: Sat, 20 Mar 2010 17:11:13 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/src/org/w3c/unicorn In directory hutz:/tmp/cvs-serv31747/src/org/w3c/unicorn Modified Files: Framework.java Log Message: uses ULocale objects instead of String for all language parameters + initializes Language objects + added StringUtils tool to velocity contexts + added lang, direction, and defaultLocale objects to velocity contexts Index: Framework.java =================================================================== RCS file: /sources/public/2006/unicorn/src/org/w3c/unicorn/Framework.java,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- Framework.java 5 Mar 2010 15:11:45 -0000 1.34 +++ Framework.java 20 Mar 2010 17:11:11 -0000 1.35 @@ -20,11 +20,11 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.Properties; -import java.util.TreeMap; import javax.xml.namespace.NamespaceContext; import javax.xml.parsers.ParserConfigurationException; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.log4j.xml.DOMConfigurator; @@ -52,6 +52,8 @@ import org.w3c.unicorn.util.UCNProperties; import org.w3c.unicorn.response.Response; +import com.ibm.icu.util.ULocale; + /** * Main class of the central module of UniCORN. * @@ -88,11 +90,10 @@ * True if initialization did not throw any exception */ public static boolean isUcnInitialized; - private static Hashtable<String, Properties> unicornPropertiesFiles; - private static Hashtable<String, VelocityContext> languageContexts; - private static Hashtable<String, Properties> languageProperties; - private static Hashtable<String, Properties> metadataProperties; - private static TreeMap<String, String> languages; + private static Hashtable<String, UCNProperties> unicornPropertiesFiles; + private static Hashtable<ULocale, VelocityContext> languageContexts; + private static Hashtable<ULocale, UCNProperties> languageProperties; + private static Hashtable<ULocale, UCNProperties> metadataProperties; private static VelocityEngine velocityEngine; private static String[] configFiles = { "extensions.properties", @@ -102,15 +103,13 @@ "mail.properties"}; public static void reset() { - unicornPropertiesFiles = new Hashtable<String, Properties>(); - languageContexts = new Hashtable<String, VelocityContext>(); - languageProperties = new Hashtable<String, Properties>(); - metadataProperties = new Hashtable<String, Properties>(); - languages = new TreeMap<String, String>(); + unicornPropertiesFiles = new Hashtable<String, UCNProperties>(); + languageContexts = new Hashtable<ULocale, VelocityContext>(); + languageProperties = new Hashtable<ULocale, UCNProperties>(); + metadataProperties = new Hashtable<ULocale, UCNProperties>(); mapOfObserver = new LinkedHashMap<String, Observer>(); responseImpl = new LinkedHashMap<String, Class<Response>>(); - LanguageAction.setLanguageProperties(new TreeMap<String, Properties>()); - LanguageAction.setMetadataProperties(new TreeMap<String, Properties>()); + Language.reset(); } /** @@ -125,8 +124,8 @@ initUnmarshallers(); initResponseImplementations(); initObservers(); - initTasklists(); initLanguages(); + initTasklists(); initVelocity(); isUcnInitialized = true; } catch (InitializationFailedException e) { @@ -330,6 +329,92 @@ } } + public static void initLanguages() throws InitializationFailedException { + + // Loading language files + logger.debug("-------------------------------------------------------"); + logger.debug("Loading language files from language directory: " + Property.get("PATH_TO_LANGUAGE_FILES")); + ULocale defaultLocale = null; + for (ULocale locale : ULocale.getAvailableLocales()) { + if (locale.getName().equals(Property.get("DEFAULT_LANGUAGE"))) { + defaultLocale = locale; + break; + } + } + + if (defaultLocale == null) + throw new InitializationFailedException("Locale not found for default language in unicorn.properties: " + Property.get("DEFAULT_LANGUAGE")); + + Language.initLocaleMatcher(defaultLocale); + + File defaultLanguageFile = new File(Property.get("PATH_TO_LANGUAGE_FILES", "DEFAULT_LANGUAGE") + ".properties"); + UCNProperties defaultProps = new UCNProperties(); + try { + defaultProps = Language.load(defaultLanguageFile); + logger.debug("> Found language (default): " + defaultLocale.getName() + " - " + defaultLocale.getDisplayName(defaultLocale)); + Language.addUiLocale(defaultLocale); + LanguageAction.addLanguageProperties(defaultLocale, defaultProps); + defaultProps.parse(); + defaultProps.put("complete", "true"); + languageProperties.put(defaultLocale, defaultProps); + UCNProperties metaProps = new UCNProperties(); + LanguageAction.addMetadatasProperties(defaultLocale, metaProps); + metadataProperties.put(defaultLocale, metaProps); + } catch (IllegalArgumentException e) { + logger.warn(e.getMessage()); + } catch (FileNotFoundException e) { + throw new InitializationFailedException("Default language file does not exist: " + defaultLanguageFile.getPath()); + } catch (IOException e) { + throw new InitializationFailedException("Unable to read default language file " + defaultLanguageFile.getPath()); + } + + File[] languageFiles = ListFiles.listFiles(Property.get("PATH_TO_LANGUAGE_FILES"), "\\.properties$"); + + for (File langFile : languageFiles) { + if (langFile.equals(defaultLanguageFile)) + continue; + try { + ULocale fileLocale = Language.getLocaleFromFileName(langFile.getName()); + UCNProperties props = Language.load(langFile); + logger.debug("> Found language: " + fileLocale.getName() + " - " + fileLocale.getDisplayName(Language.getDefaultLocale())); + Language.addUiLocale(fileLocale); + Language.clean(props, defaultProps, langFile.getName()); + LanguageAction.addLanguageProperties(fileLocale, props); + Language.complete(props, defaultProps, langFile.getName()); + props.parse(); + languageProperties.put(fileLocale, props); + UCNProperties metaProps = new UCNProperties(); + LanguageAction.addMetadatasProperties(fileLocale, metaProps); + metadataProperties.put(fileLocale, metaProps); + } catch (IllegalArgumentException e) { + logger.warn(e.getMessage()); + } catch (FileNotFoundException e) { + // Should not happen + logger.error(e.getMessage(), e); + } catch (IOException e) { + logger.error("Unable to read language file " + langFile + ". This file will be skiped."); + } + } + + Language.initUILocaleMatcher(); + + if (languageProperties.size() == 0) { + throw new InitializationFailedException("No language have been loaded. Check language files in: " + Property.get("PATH_TO_LANGUAGE_FILES")); + } else { + String s = "Language properties:"; + for (ULocale localeKey : languageProperties.keySet()) { + Properties props = languageProperties.get(localeKey); + s += "\n\n\t" + localeKey.getDisplayName(Language.getDefaultLocale()) + ":"; + for (Object langKey : props.keySet()) { + s += "\n\t\t" + langKey + " => " + props.getProperty((String) langKey); + } + } + logger.debug(s); + logger.info("OK - " + languageProperties.size() + " language(s) successfully loaded."); + } + + } + public static void initTasklists() throws InitializationFailedException { logger.debug("-------------------------------------------------------"); logger.debug("Loading xml task files from tasklist directory: " + Property.get("PATH_TO_TASKLIST")); @@ -363,14 +448,14 @@ logger.debug("Loading tasks metadata files from tasks language directory: " + Property.get("PATH_TO_TASK_LANGUAGE_FILES")); File defaultTaskFile = new File(Property.get("PATH_TO_TASK_LANGUAGE_FILES", "DEFAULT_LANGUAGE") + ".tasklist.properties"); - String defaultLang = Property.get("DEFAULT_LANGUAGE"); + String defaultLang = Language.getDefaultLocale().getName(); UCNProperties defaultProps = null; try{ defaultProps = Language.load(defaultTaskFile); logger.debug("> Found default tasks metadata file: " + defaultTaskFile.getPath()); - LanguageAction.setDefaultMetadatas(defaultProps); - metadataProperties.put(Property.get("DEFAULT_LANGUAGE"), defaultProps); + LanguageAction.addMetadatasProperties(Language.getDefaultLocale(), defaultProps); + metadataProperties.put(Language.getDefaultLocale(), defaultProps); for (String taskKey : mapOfTask.keySet()) { Task task = mapOfTask.get(taskKey); if (defaultProps.containsKey(taskKey)) @@ -415,11 +500,11 @@ File[] taskFiles = ListFiles.listFiles(Property.get("PATH_TO_TASK_LANGUAGE_FILES"), "\\.tasklist.properties$"); for (File taskFile : taskFiles) { - String lang = taskFile.getName().split("\\.")[0]; - if (taskFile.equals(defaultTaskFile)) continue; try { + ULocale fileLocale = Language.getLocaleFromFileName(taskFile.getName()); + String lang = fileLocale.getName(); UCNProperties props = Language.load(taskFile); logger.debug("> Found tasks metadata file: " + taskFile.getPath()); @@ -433,8 +518,8 @@ for (Object key : keys) props.remove(key); - LanguageAction.addMetadatasProperties(lang, props); - metadataProperties.put(lang, props); + LanguageAction.addMetadatasProperties(fileLocale, props); + metadataProperties.put(fileLocale, props); for (String taskKey : mapOfTask.keySet()) { Task task = mapOfTask.get(taskKey); @@ -472,87 +557,11 @@ } } - public static void initLanguages() throws InitializationFailedException { - // Loading language files - logger.debug("-------------------------------------------------------"); - logger.debug("Loading language files from language directory: " + Property.get("PATH_TO_LANGUAGE_FILES")); - if (!Language.isISOLanguageCode(Property.get("DEFAULT_LANGUAGE"))) { - throw new InitializationFailedException("Property DEFAULT_LANGUAGE is not a valid ISO639 code: " + Property.get("DEFAULT_LANGUAGE")); - } - - File defaultLanguageFile = new File(Property.get("PATH_TO_LANGUAGE_FILES", "DEFAULT_LANGUAGE") + ".properties"); - UCNProperties defaultProps = new UCNProperties(); - - try { - defaultProps = Language.load(defaultLanguageFile); - logger.debug("> Found language (default): " + defaultProps.getProperty("lang") + " - " + defaultProps.getProperty("language")); - LanguageAction.setDefaultProperties(defaultProps); - defaultProps.parse(); - defaultProps.put("complete", "true"); - languageProperties.put(Property.get("DEFAULT_LANGUAGE"), defaultProps); - } catch (IllegalArgumentException e) { - logger.warn(e.getMessage()); - } catch (FileNotFoundException e) { - throw new InitializationFailedException("Default language file does not exist: " + defaultLanguageFile.getPath()); - } catch (IOException e) { - throw new InitializationFailedException("Unable to read default language file " + defaultLanguageFile.getPath()); - } - - File[] languageFiles = ListFiles.listFiles(Property.get("PATH_TO_LANGUAGE_FILES"), "\\.properties$"); - - for (File langFile : languageFiles) { - if (langFile.equals(defaultLanguageFile)) - continue; - try { - UCNProperties props = Language.load(langFile); - logger.debug("> Found language: " + props.getProperty("lang") + " - " + props.getProperty("language")); - Language.clean(props, defaultProps); - LanguageAction.addLanguageProperties(props); - Language.complete(props, defaultProps); - props.parse(); - languageProperties.put(props.getProperty("lang"), props); - if (!LanguageAction.getMetadataProperties().containsKey(props.getProperty("lang"))) { - UCNProperties metaProps = new UCNProperties(); - metaProps.put("lang", props.getProperty("lang")); - metaProps.put("language", props.getProperty("language")); - LanguageAction.getMetadataProperties().put(props.getProperty("lang"), metaProps); - metadataProperties.put(props.getProperty("lang"), metaProps); - } - } catch (IllegalArgumentException e) { - logger.warn(e.getMessage()); - } catch (FileNotFoundException e) { - // Should not happen - logger.error(e.getMessage(), e); - } catch (IOException e) { - logger.error("Unable to read language file " + langFile + ". This file will be skiped."); - } - } - - if (languageProperties.size() == 0) { - throw new InitializationFailedException("No language have been loaded. Check language files in: " + Property.get("PATH_TO_LANGUAGE_FILES")); - } else { - String s = "Language properties:"; - for (String key : languageProperties.keySet()) { - s += "\n\n\t" + languageProperties.get(key).getProperty("language") + ":"; - for (Object langKey : languageProperties.get(key).keySet()) { - s += "\n\t\t" + langKey + " => " + languageProperties.get(key).getProperty((String) langKey); - } - } - logger.debug(s); - logger.info("OK - " + languageProperties.size() + " language(s) successfully loaded."); - } - for (String key : languageProperties.keySet()) { - languages.put(key, languageProperties.get(key).getProperty("language")); - } - - LanguageAction.setAvailableLocales(Language.getAvailablesLocales()); - } - public static void initVelocity() throws InitializationFailedException { // Creating velocity contexts logger.debug("-------------------------------------------------------"); logger.debug("Initializing Velocity"); - for (String locale : languageProperties.keySet()) { + for (ULocale locale : languageProperties.keySet()) { VelocityContext context = new VelocityContext(); Properties langProps = languageProperties.get(locale); for (Object key : langProps.keySet()) { @@ -561,12 +570,16 @@ context.put("esc", new EscapeTool()); context.put("math", new MathTool()); context.put("ucn", new Language()); + context.put("strUtils", new StringUtils()); context.put("tasklist", mapOfTask); context.put("param_prefix", Property.get("UNICORN_PARAMETER_PREFIX")); - context.put("languages", languages); + context.put("languages", Language.getUiLocales()); + context.put("lang", locale.getName()); + context.put("direction", Language.getLocaleDirection(locale)); + context.put("defaultLocale", Language.getDefaultLocale()); languageContexts.put(locale, context); } - logger.debug("> "+languageContexts.size()+" velocity context(s) created"); + logger.debug("> " + languageContexts.size() + " velocity context(s) created"); // Creating velocity engine velocityEngine = new VelocityEngine(); @@ -603,19 +616,19 @@ } } - public static Hashtable<String, Properties> getUnicornPropertiesFiles() { + public static Hashtable<String, UCNProperties> getUnicornPropertiesFiles() { return unicornPropertiesFiles; } - public static Hashtable<String, VelocityContext> getLanguageContexts() { + public static Hashtable<ULocale, VelocityContext> getLanguageContexts() { return languageContexts; } public static VelocityEngine getVelocityEngine() { return velocityEngine; } - public static Hashtable<String, Properties> getLanguageProperties() { + public static Hashtable<ULocale, UCNProperties> getLanguageProperties() { return languageProperties; } - public static Hashtable<String, Properties> getMetadataProperties() { + public static Hashtable<ULocale, UCNProperties> getMetadataProperties() { return metadataProperties; } public static Task getDefaultTask() {
Received on Saturday, 20 March 2010 17:11:14 UTC