/**
* 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");
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() {}
* (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);
}
/**
* @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;
}
-
}