Kawai Wiki

Rev

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