/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.locale; import java.util.Locale; import org.jdom.Document; import org.jdom.Element; import com.google.common.base.Preconditions; public class LocaleXmlCreator { public Document createLocalesDocument( final Locale[] locales ) { Preconditions.checkNotNull( locales, "locales cannot be null" ); Element localesEl = new Element( "locales" ); for ( Locale locale : locales ) { localesEl.addContent( doCreateLocaleElement( locale, null ) ); } return new Document( localesEl ); } public Document createLocalesDocument( final Locale locale ) { Preconditions.checkNotNull( locale, "locale cannot be null" ); Element localesEl = new Element( "locales" ); localesEl.addContent( doCreateLocaleElement( locale, null ) ); return new Document( localesEl ); } public Document createLocaleDocument( final Locale locale, Locale inLocale ) { Preconditions.checkNotNull( locale, "locale cannot be null" ); Element localesEl = new Element( "locales" ); localesEl.addContent( doCreateLocaleElement( locale, inLocale ) ); return new Document( localesEl ); } private String getISO3Country( final Locale locale ) { try { return locale.getISO3Country(); } catch ( final Exception e ) { return null; } } private String getISO3Language( final Locale locale ) { try { return locale.getISO3Language(); } catch ( final Exception e ) { return null; } } private Element doCreateLocaleElement( final Locale locale, final Locale inLocale ) { Element localeEl = new Element( "locale" ); localeEl.addContent( new Element( "name" ).setText( locale.toString() ) ); localeEl.addContent( new Element( "country" ).setText( asEmptyIfNull( locale.getCountry() ) ) ); localeEl.addContent( new Element( "display-country" ).setText( asEmptyIfNull( locale.getDisplayCountry() ) ) ); localeEl.addContent( new Element( "display-language" ).setText( asEmptyIfNull( locale.getDisplayLanguage() ) ) ); localeEl.addContent( new Element( "display-name" ).setText( asEmptyIfNull( locale.getDisplayName() ) ) ); localeEl.addContent( new Element( "display-variant" ).setText( asEmptyIfNull( locale.getDisplayVariant() ) ) ); localeEl.addContent( new Element( "iso3country" ).setText( asEmptyIfNull( getISO3Country( locale ) ) ) ); localeEl.addContent( new Element( "iso3language" ).setText( asEmptyIfNull( getISO3Language( locale ) ) ) ); localeEl.addContent( new Element( "language" ).setText( asEmptyIfNull( locale.getLanguage() ) ) ); localeEl.addContent( new Element( "variant" ).setText( asEmptyIfNull( locale.getVariant() ) ) ); if ( inLocale != null ) { localeEl.addContent( new Element( "display-country-in-locale" ).setAttribute( "language", inLocale.getLanguage() ).setText( asEmptyIfNull( locale.getDisplayCountry( inLocale ) ) ) ); localeEl.addContent( new Element( "display-language-in-locale" ).setAttribute( "language", inLocale.getLanguage() ).setText( asEmptyIfNull( locale.getDisplayLanguage( inLocale ) ) ) ); localeEl.addContent( new Element( "display-name-in-locale" ).setAttribute( "language", inLocale.getLanguage() ).setText( asEmptyIfNull( locale.getDisplayName( inLocale ) ) ) ); localeEl.addContent( new Element( "display-variant-in-locale" ).setAttribute( "language", inLocale.getLanguage() ).setText( asEmptyIfNull( locale.getDisplayVariant( inLocale ) ) ) ); } return localeEl; } private String asEmptyIfNull( final String value ) { return value == null ? "" : value; } }