1 package ch.qos.cal10n.util;
2
3 import ch.qos.cal10n.Locale;
4 import ch.qos.cal10n.LocaleData;
5
6
7
8
9
10
11
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 }