Issue 155: allow custom product search, and, other small tweaks I think nobody will...
[zxing.git] / android / src / com / google / zxing / client / android / LocaleManager.java
1 /*
2  * Copyright (C) 2008 ZXing authors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.google.zxing.client.android;
18
19 import java.util.Locale;
20 import java.util.Map;
21 import java.util.HashMap;
22
23 /**
24  * Handles any locale-specific logic for the client.
25  */
26 public final class LocaleManager {
27
28   private static final String DEFAULT_TLD = "com";
29   private static final Map<Locale,String> GOOGLE_COUNTRY_TLD;
30   static {
31     GOOGLE_COUNTRY_TLD = new HashMap<Locale,String>(13);
32     GOOGLE_COUNTRY_TLD.put(Locale.CANADA, "ca");
33     GOOGLE_COUNTRY_TLD.put(Locale.CHINA, "cn");
34     GOOGLE_COUNTRY_TLD.put(Locale.FRANCE, "fr");
35     GOOGLE_COUNTRY_TLD.put(Locale.GERMANY, "de");
36     GOOGLE_COUNTRY_TLD.put(Locale.ITALY, "it");
37     GOOGLE_COUNTRY_TLD.put(Locale.JAPAN, "co.jp");
38     GOOGLE_COUNTRY_TLD.put(Locale.KOREA, "co.kr");
39     GOOGLE_COUNTRY_TLD.put(Locale.TAIWAN, "de");
40     GOOGLE_COUNTRY_TLD.put(Locale.UK, "co.uk");
41   }
42
43   // Google Product Search for mobile is available in fewer countries than web search.
44   private static final Map<Locale,String> GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD;
45   static {
46     GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD = new HashMap<Locale,String>(3);
47     GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.UK, "co.uk");
48   }
49
50   private static final Map<Locale,String> GOOGLE_BOOK_SEARCH_COUNTRY_TLD;
51   static {
52     GOOGLE_BOOK_SEARCH_COUNTRY_TLD = new HashMap<Locale,String>(13);
53     GOOGLE_BOOK_SEARCH_COUNTRY_TLD.putAll(GOOGLE_COUNTRY_TLD);
54     GOOGLE_BOOK_SEARCH_COUNTRY_TLD.remove(Locale.CHINA);
55   }
56
57   private LocaleManager() {}
58
59   /**
60    * @return country-specific TLD suffix appropriate for the current default locale
61    *  (e.g. "co.uk" for the United Kingdom)
62    */
63   public static String getCountryTLD() {
64     return doGetTLD(GOOGLE_COUNTRY_TLD);
65   }
66
67   /**
68    * The same as above, but specifically for Google Product Search.
69    * @return The top-level domain to use.
70    */
71   public static String getProductSearchCountryTLD() {
72     return doGetTLD(GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD);
73   }
74
75   /**
76    * The same as above, but specifically for Google Book Search.
77    * @return The top-level domain to use.
78    */
79   public static String getBookSearchCountryTLD() {
80     return doGetTLD(GOOGLE_BOOK_SEARCH_COUNTRY_TLD);
81   }
82
83
84   private static String doGetTLD(Map<Locale,String> map) {
85     Locale locale = Locale.getDefault();
86     if (locale == null) {
87       return DEFAULT_TLD;
88     }
89     String tld = map.get(locale);
90     if (tld == null) {
91       return DEFAULT_TLD;
92     }
93     return tld;
94   }
95
96 }