Rev 143 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 143 | Rev 154 | ||
---|---|---|---|
1 | package org.kawai.model; |
1 | package org.kawai.model; |
2 | 2 | ||
3 | import java.util.ArrayList; |
3 | import java.util.ArrayList; |
4 | import java.util.Iterator; |
- | |
5 | import java.util.List; |
4 | import java.util.List; |
6 | import java.util.Locale; |
5 | import java.util.Locale; |
7 | 6 | ||
8 | import org.mentawai.list.ListData; |
7 | import org.mentawai.list.ListData; |
9 | import org.mentawai.list.SimpleListData; |
8 | import org.mentawai.list.SimpleListData; |
10 | 9 | ||
11 | public class Language { |
10 | public class Language { |
12 | 11 | ||
13 | private static final List<Language> LANGUAGES = new ArrayList<Language>(16); |
12 | private static final List<Language> LANGUAGES = new ArrayList<Language>(16); |
14 | 13 | ||
15 | private final int id; |
14 | private final int id; |
16 | private final String name; |
15 | private final String name; |
17 | private final Locale loc; |
16 | private final Locale loc; |
18 | private final String imageFile; |
17 | private final String imageFile; |
19 | 18 | ||
20 | public Language(int code, String name, String locale, String imageFile) { |
19 | public Language(int code, String name, String locale, String imageFile) { |
21 | this.id = code; |
20 | this.id = code; |
22 | this.name = name; |
21 | this.name = name; |
23 | this.loc = getLocaleFromString(locale); |
22 | this.loc = getLocaleFromString(locale); |
24 | this.imageFile = imageFile; |
23 | this.imageFile = imageFile; |
25 | }
|
24 | }
|
26 | 25 | ||
27 | public Language(int code, String name, String locale) { |
26 | public Language(int code, String name, String locale) { |
28 | this(code, name, locale, null); |
27 | this(code, name, locale, null); |
29 | }
|
28 | }
|
30 | 29 | ||
31 | public static void add(Language language) { |
30 | public static void add(Language language) { |
32 | LANGUAGES.add(language); |
31 | LANGUAGES.add(language); |
33 | }
|
32 | }
|
34 | 33 | ||
35 | public static Language getDefault() { |
34 | public static Language getDefault() { |
36 | if (LANGUAGES.isEmpty()) throw new IllegalStateException("No languages were defined!"); |
35 | if (LANGUAGES.isEmpty()) throw new IllegalStateException("No languages were defined!"); |
37 | return LANGUAGES.get(0); |
36 | return LANGUAGES.get(0); |
38 | }
|
37 | }
|
39 | 38 | ||
40 | public int getId() { |
39 | public int getId() { |
41 | return id; |
40 | return id; |
42 | }
|
41 | }
|
43 | 42 | ||
44 | public String getName() { |
43 | public String getName() { |
45 | return name; |
44 | return name; |
46 | }
|
45 | }
|
47 | 46 | ||
48 | public Locale getLocale() { |
47 | public Locale getLocale() { |
49 | return loc; |
48 | return loc; |
50 | }
|
49 | }
|
51 | 50 | ||
52 | public String getImageFile() { |
51 | public String getImageFile() { |
53 | return imageFile; |
52 | return imageFile; |
54 | }
|
53 | }
|
55 | 54 | ||
56 | @Override |
55 | @Override |
57 | public String toString() { |
56 | public String toString() { |
58 | return name; |
57 | return name; |
59 | }
|
58 | }
|
60 | 59 | ||
61 | public static ListData getListData() { |
60 | public static ListData getListData() { |
62 | SimpleListData list = new SimpleListData("languages"); |
61 | SimpleListData list = new SimpleListData("languages"); |
63 | for(Language l : LANGUAGES) { |
62 | for(Language l : LANGUAGES) { |
64 | list.add(l.getId(), l.getName()); |
63 | list.add(l.getId(), l.getName()); |
65 | }
|
64 | }
|
66 | return list; |
65 | return list; |
67 | }
|
66 | }
|
68 | 67 | ||
69 | public static Language fromId(int id) { |
68 | public static Language fromId(int id) { |
70 | for(Language l : LANGUAGES) { |
69 | for(Language l : LANGUAGES) { |
71 | if (l.getId() == id) return l; |
70 | if (l.getId() == id) return l; |
72 | }
|
71 | }
|
73 | return null; |
72 | return null; |
74 | }
|
73 | }
|
75 | 74 | ||
76 | public static Language fromLocale(Locale loc) { |
75 | public static Language fromLocale(Locale loc) { |
77 | if (loc == null) return null; |
76 | if (loc == null) return null; |
78 | for(Language l : LANGUAGES) { |
77 | for(Language l : LANGUAGES) { |
79 | if (l.getLocale().equals(loc)) return l; |
78 | if (l.getLocale().equals(loc)) return l; |
80 | }
|
79 | }
|
81 | for(Language l : LANGUAGES) { |
80 | for(Language l : LANGUAGES) { |
82 | if (l.getLocale().getLanguage().equals(loc.getLanguage())) { |
81 | if (l.getLocale().getLanguage().equals(loc.getLanguage())) { |
83 | return l; |
82 | return l; |
84 | }
|
83 | }
|
85 | }
|
84 | }
|
86 | return null; |
85 | return null; |
87 | }
|
86 | }
|
88 | 87 | ||
89 | public static Language fromLocale(String s) { |
88 | public static Language fromLocale(String s) { |
90 | if (s == null) return null; |
89 | if (s == null) return null; |
91 | Locale loc = getLocaleFromString(s); |
90 | Locale loc = getLocaleFromString(s); |
92 | return fromLocale(loc); |
91 | return fromLocale(loc); |
93 | }
|
92 | }
|
94 | 93 | ||
95 | public static Language fromName(String name) { |
94 | public static Language fromName(String name) { |
96 | if (name == null) return null; |
95 | if (name == null) return null; |
97 | for(Language l : LANGUAGES) { |
96 | for(Language l : LANGUAGES) { |
98 | if (l.getName().equalsIgnoreCase(name)) return l; |
97 | if (l.getName().equalsIgnoreCase(name)) return l; |
99 | }
|
98 | }
|
100 | return null; |
99 | return null; |
101 | }
|
100 | }
|
102 | 101 | ||
103 | public static Locale getLocaleFromString(String s) { |
102 | public static Locale getLocaleFromString(String s) { |
104 | if (s == null) return null; |
103 | if (s == null) return null; |
105 | String[] temp = s.split("_"); |
104 | String[] temp = s.split("_"); |
106 | if (temp.length == 1) { |
105 | if (temp.length == 1) { |
107 | return new Locale(temp[0]); |
106 | return new Locale(temp[0]); |
108 | } else if (temp.length == 2) { |
107 | } else if (temp.length == 2) { |
109 | return new Locale(temp[0], temp[1]); |
108 | return new Locale(temp[0], temp[1]); |
110 | } else if (temp.length == 3) { |
109 | } else if (temp.length == 3) { |
111 | return new Locale(temp[0], temp[1], temp[2]); |
110 | return new Locale(temp[0], temp[1], temp[2]); |
112 | }
|
111 | }
|
113 | return null; |
112 | return null; |
114 | }
|
113 | }
|
115 | 114 | ||
116 | public static List<Language> all() { |
115 | public static List<Language> all() { |
117 | return LANGUAGES; |
116 | return LANGUAGES; |
118 | }
|
117 | }
|
119 | 118 | ||
120 | public static void clear() { |
119 | public static void clear() { |
121 | LANGUAGES.clear(); |
120 | LANGUAGES.clear(); |
122 | }
|
121 | }
|
123 | }
|
122 | }
|
124 | 123 |