All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.unitils.util.ResourcebundleCheck Maven / Gradle / Ivy

package org.unitils.util;

import java.util.Enumeration;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;


/**
 * ResourcebundleCheck: Checks if every key has a value in every locale.
 * 
 * @author Willemijn Wouters
 * 
 * @since 3.4
 * 
 */

public class ResourcebundleCheck {

    /**
     * The ResoucebundleCheck checks if the bundle exists for all the locale's and if keys exists for every bundle.
     * It checks all the keys and it throws an {@link Exception} when one of the exceptions isn't found. An {@link MissingResourceException} is thrown when 
     * a bundle can't be found (this happens only when their is no default resourcebundle).
     * @param bundleName
     * @param locales
     * @throws Exception
     */
    public static void testAllTheKeys(String bundleName, Locale... locales) throws Exception {
        StringBuilder builder = new StringBuilder();
        ResourceBundle[] bundles = new ResourceBundle[locales.length];
        //creates the bundles for each locale
        for (int i = 0; i < locales.length; i++) {
            Locale locale = locales[i];

            bundles[i] = ResourceBundle.getBundle(bundleName, locale);
        }
        
        

        //check which bundle is the biggest.
        ResourceBundle biggestBundle = bundles[0];
        for (ResourceBundle bundle : bundles) {
            if (bundle.keySet().size() > biggestBundle.keySet().size()) {
                biggestBundle = bundle;
            }
        }
        Enumeration keys = biggestBundle.getKeys();
        while (keys.hasMoreElements()) {
            String key = keys.nextElement();
            for (int i = 0; i < bundles.length; i++) {
                //check if the key exists in the bundle.
                if (!bundles[i].containsKey(key)) {

                    builder.append("- Locale ");
                    builder.append(bundles[i].getLocale().toString());
                    builder.append(" doesn't contain '");
                    builder.append(key);
                    builder.append("' \n");
                } else if (bundles[i].getString(key).isEmpty()) {
                    builder.append("Locale ");
                    builder.append(bundles[i].getLocale().toString());
                    builder.append(": '");
                    builder.append(key);
                    builder.append("': is empty.  \n");
                }
            }
        }

        if (!builder.toString().isEmpty()) {
            throw new MissingKeysException(builder.toString());
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy