View Javadoc
1   package ch.qos.cal10n.util;
2   
3   import ch.qos.cal10n.Locale;
4   import ch.qos.cal10n.LocaleData;
5   
6   /**
7    * A base implementation which can extract cal10n annotation data from a yet unspecified
8    * "enumType" type, e.g. an enum class or an enum Element.
9    *
10   * @author  Ceki Gulcu
11   * @since 0.8
12   */
13  abstract public class AbstractAnnotationExtractor implements AnnotationExtractor {
14  
15    abstract protected LocaleData extractLocaleData();
16  
17    public Locale[] extractLocales() {
18      LocaleData localeData = extractLocaleData();
19      if (localeData == null) {
20        return null;
21      }
22      return localeData.value();
23    }
24  
25    public String[] extractLocaleNames() {
26      Locale[] localeDataArray = extractLocales();
27  
28      if (localeDataArray == null) {
29        return null;
30      }
31  
32      String[] names = new String[localeDataArray.length];
33      for (int i = 0; i < localeDataArray.length; i++) {
34        names[i] = localeDataArray[i].value();
35      }
36      return names;
37    }
38  
39  
40    public String extractCharset(java.util.Locale juLocale) {
41      LocaleData localeData = extractLocaleData();
42      if (localeData == null) {
43        return "";
44      }
45  
46      String defaultCharset = localeData.defaultCharset();
47  
48      Locale la = findLocaleAnnotation(juLocale, localeData);
49      String localeCharset = null;
50      if (la != null) {
51        localeCharset = la.charset();
52      }
53      if (!isEmptyString(localeCharset)) {
54        return localeCharset;
55      }
56  
57      return defaultCharset;
58    }
59  
60    static Locale findLocaleAnnotation(java.util.Locale juLocale, LocaleData localeData) {
61      Locale[] localeAnnotationArray = localeData.value();
62      if (localeAnnotationArray == null) {
63        return null;
64      }
65      for (Locale la : localeAnnotationArray) {
66        if (la.value().equals(juLocale.toString())) {
67          return la;
68        }
69      }
70      return null;
71    }
72  
73    static boolean isEmptyString(String s) {
74      return s == null || s.length() == 0;
75    }
76  }