Subversion Repository Public Repository

litesoft

Diff Revisions 934 vs 935 for /trunk/DeviceDesktopTest/src/org/litesoft/locale/DerivedLocaleGraph.java

Diff revisions: vs.
  @@ -1,35 +1,38 @@
1 1 package org.litesoft.locale;
2 2
3 - import java.util.HashMap;
4 - import java.util.List;
5 - import java.util.Map;
6 - import java.util.Set;
3 + import java.util.*;
7 4
8 5 @SuppressWarnings("Convert2Diamond")
9 - public class DerivedLocaleGraph {
6 + public class DerivedLocaleGraph
7 + {
10 8 private static final AbstractLocale BASE = Locale_en_US.INSTANCE;
11 9 private static final Map<String, AbstractLocale> DEFAULT_LOCALE_BY_LANGUAGE = new HashMap<String, AbstractLocale>();
12 10 private static final Map<String, AbstractLocale> LOCALE_BY_CODE = new HashMap<String, AbstractLocale>();
13 11 private static final Map<AbstractLocale, AbstractLocale> DERIVED_FROM_LOCALE_BY_LOCALE = new HashMap<AbstractLocale, AbstractLocale>();
14 12
15 - static {
16 - addToDirectMaps(BASE);
17 - add(Locale_en_US.INSTANCE, Locale_en_GB.INSTANCE, Locale_en_CA.INSTANCE);
18 - add(Locale_es_ES.INSTANCE, Locale_es_MX.INSTANCE);
19 - add(Locale_fr_FR.INSTANCE, Locale_fr_CA.INSTANCE);
20 - add(Locale_zh_CN.INSTANCE, Locale_zh_TW.INSTANCE);
21 - add(Locale_de_DE.INSTANCE); // , Locale_de_AT.INSTANCE, Locale_de_CH.INSTANCE );
22 - add(Locale_it_IT.INSTANCE); // , Locale_it_CH.INSTANCE );
23 - add(Locale_ja_JP.INSTANCE);
24 - add(Locale_ko_KR.INSTANCE);
13 + static
14 + {
15 + addToDirectMaps( BASE );
16 + add( Locale_en_US.INSTANCE, Locale_en_GB.INSTANCE, Locale_en_CA.INSTANCE );
17 + add( Locale_es_ES.INSTANCE, Locale_es_MX.INSTANCE );
18 + add( Locale_fr_FR.INSTANCE, Locale_fr_CA.INSTANCE );
19 + add( Locale_zh_CN.INSTANCE, Locale_zh_TW.INSTANCE );
20 + add( Locale_de_DE.INSTANCE ); // , Locale_de_AT.INSTANCE, Locale_de_CH.INSTANCE );
21 + add( Locale_it_IT.INSTANCE ); // , Locale_it_CH.INSTANCE );
22 + add( Locale_ja_JP.INSTANCE );
23 + add( Locale_ko_KR.INSTANCE );
25 24 }
26 25
27 - public static AbstractLocale select(Set<AbstractLocale> pSupported, List<String> pOrderedCodes) {
26 + public static AbstractLocale select( Set<AbstractLocale> pSupported, List<String> pOrderedCodes )
27 + {
28 28 AbstractLocale zBest = BASE;
29 - if (pOrderedCodes != null) {
30 - for (String zCode : pOrderedCodes) {
31 - AbstractLocale zCandidate = candidateForFrom(zCode, pSupported);
32 - if (zCandidate.mDepth > zBest.mDepth) {
29 + if ( pOrderedCodes != null )
30 + {
31 + for ( String zCode : pOrderedCodes )
32 + {
33 + AbstractLocale zCandidate = candidateForFrom( zCode, pSupported );
34 + if ( zCandidate.mDepth > zBest.mDepth )
35 + {
33 36 zBest = zCandidate;
34 37 }
35 38 }
  @@ -37,51 +40,65 @@
37 40 return zBest;
38 41 }
39 42
40 - private static AbstractLocale candidateForFrom(String pCode, Set<AbstractLocale> pSupported) {
41 - AbstractLocale zLocale = LOCALE_BY_CODE.get(pCode);
42 - if (null == zLocale) {
43 - if (null == (zLocale = DEFAULT_LOCALE_BY_LANGUAGE.get(AbstractLocale.languageFrom(pCode)))) {
43 + private static AbstractLocale candidateForFrom( String pCode, Set<AbstractLocale> pSupported )
44 + {
45 + AbstractLocale zLocale = LOCALE_BY_CODE.get( pCode );
46 + if ( null == zLocale )
47 + {
48 + if ( null == (zLocale = DEFAULT_LOCALE_BY_LANGUAGE.get( AbstractLocale.languageFrom( pCode ) )) )
49 + {
44 50 return BASE;
45 51 }
46 52 }
47 - while (!pSupported.contains(zLocale)) {
48 - if (null == (zLocale = DERIVED_FROM_LOCALE_BY_LOCALE.get(zLocale))) {
53 + while ( !pSupported.contains( zLocale ) )
54 + {
55 + if ( null == (zLocale = DERIVED_FROM_LOCALE_BY_LOCALE.get( zLocale )) )
56 + {
49 57 return BASE;
50 58 }
51 59 }
52 60 return zLocale;
53 61 }
54 62
55 - public static void add(AbstractLocale pBaseOrDerivedFrom, AbstractLocale... pDerived) {
56 - if (addToDirectMaps(pBaseOrDerivedFrom)) {
57 - setDerived(BASE, pBaseOrDerivedFrom);
63 + public static void add( AbstractLocale pBaseOrDerivedFrom, AbstractLocale... pDerived )
64 + {
65 + if ( addToDirectMaps( pBaseOrDerivedFrom ) )
66 + {
67 + setDerived( BASE, pBaseOrDerivedFrom );
58 68 }
59 - for (AbstractLocale zLocale : pDerived) {
60 - addToDirectMaps(zLocale);
61 - setDerived(pBaseOrDerivedFrom, zLocale);
69 + for ( AbstractLocale zLocale : pDerived )
70 + {
71 + addToDirectMaps( zLocale );
72 + setDerived( pBaseOrDerivedFrom, zLocale );
62 73 }
63 74 }
64 75
65 - private static void setDerived(AbstractLocale pDerivedFrom, AbstractLocale pDerived) {
76 + private static void setDerived( AbstractLocale pDerivedFrom, AbstractLocale pDerived )
77 + {
66 78 pDerived.mDepth = pDerivedFrom.mDepth + 1;
67 - DERIVED_FROM_LOCALE_BY_LOCALE.put(pDerived, pDerivedFrom);
79 + DERIVED_FROM_LOCALE_BY_LOCALE.put( pDerived, pDerivedFrom );
68 80 }
69 81
70 82 /**
71 83 * @param pLocale !null
84 + *
72 85 * @return true - If not already in the data structures
73 86 */
74 - private static boolean addToDirectMaps(AbstractLocale pLocale) {
75 - if (null != LOCALE_BY_CODE.put(pLocale.getCode(), pLocale)) {
87 + private static boolean addToDirectMaps( AbstractLocale pLocale )
88 + {
89 + if ( null != LOCALE_BY_CODE.put( pLocale.getCode(), pLocale ) )
90 + {
76 91 return false; // Already There!
77 92 }
78 93 // New, so might be the first of this language
79 - if (!DEFAULT_LOCALE_BY_LANGUAGE.containsKey(pLocale.getLanguage())) {
80 - DEFAULT_LOCALE_BY_LANGUAGE.put(pLocale.getLanguage(), pLocale);
94 + if ( !DEFAULT_LOCALE_BY_LANGUAGE.containsKey( pLocale.getLanguage() ) )
95 + {
96 + DEFAULT_LOCALE_BY_LANGUAGE.put( pLocale.getLanguage(), pLocale );
81 97 }
82 98 return true; // Added
83 99 }
84 100
85 - private DerivedLocaleGraph() {
101 + private DerivedLocaleGraph()
102 + {
86 103 }
87 104 }