Backing out this change for the Droid on suspicion that it's interfering with at...
[zxing.git] / android / src / com / google / zxing / client / android / LocaleManager.java
index d30701b..ece8174 100644 (file)
@@ -22,13 +22,14 @@ import java.util.HashMap;
 
 /**
  * Handles any locale-specific logic for the client.
+ *
+ * @author Sean Owen
  */
 public final class LocaleManager {
-
   private static final String DEFAULT_TLD = "com";
   private static final Map<Locale,String> GOOGLE_COUNTRY_TLD;
   static {
-    GOOGLE_COUNTRY_TLD = new HashMap<Locale,String>(13);
+    GOOGLE_COUNTRY_TLD = new HashMap<Locale,String>();
     GOOGLE_COUNTRY_TLD.put(Locale.CANADA, "ca");
     GOOGLE_COUNTRY_TLD.put(Locale.CHINA, "cn");
     GOOGLE_COUNTRY_TLD.put(Locale.FRANCE, "fr");
@@ -45,6 +46,14 @@ public final class LocaleManager {
   static {
     GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD = new HashMap<Locale,String>();
     GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.UK, "co.uk");
+    GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.GERMANY, "de");
+  }
+
+  private static final Map<Locale,String> GOOGLE_BOOK_SEARCH_COUNTRY_TLD;
+  static {
+    GOOGLE_BOOK_SEARCH_COUNTRY_TLD = new HashMap<Locale,String>();
+    GOOGLE_BOOK_SEARCH_COUNTRY_TLD.putAll(GOOGLE_COUNTRY_TLD);
+    GOOGLE_BOOK_SEARCH_COUNTRY_TLD.remove(Locale.CHINA);
   }
 
   private LocaleManager() {}
@@ -54,15 +63,7 @@ public final class LocaleManager {
    *  (e.g. "co.uk" for the United Kingdom)
    */
   public static String getCountryTLD() {
-    Locale locale = Locale.getDefault();
-    if (locale == null) {
-      return DEFAULT_TLD;
-    }
-    String tld = GOOGLE_COUNTRY_TLD.get(locale);
-    if (tld == null) {
-      return DEFAULT_TLD;
-    }
-    return tld;
+    return doGetTLD(GOOGLE_COUNTRY_TLD);
   }
 
   /**
@@ -70,15 +71,27 @@ public final class LocaleManager {
    * @return The top-level domain to use.
    */
   public static String getProductSearchCountryTLD() {
+    return doGetTLD(GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD);
+  }
+
+  /**
+   * The same as above, but specifically for Google Book Search.
+   * @return The top-level domain to use.
+   */
+  public static String getBookSearchCountryTLD() {
+    return doGetTLD(GOOGLE_BOOK_SEARCH_COUNTRY_TLD);
+  }
+
+
+  private static String doGetTLD(Map<Locale,String> map) {
     Locale locale = Locale.getDefault();
     if (locale == null) {
       return DEFAULT_TLD;
     }
-    String tld = GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.get(locale);
+    String tld = map.get(locale);
     if (tld == null) {
       return DEFAULT_TLD;
     }
     return tld;
   }
-
 }