annotate artifact-database/src/main/java/de/intevation/artifactdatabase/DefaultCallMeta.java @ 50:0b04fa8a19c6

Better implementation for fetching the preferred locale via meta of call context. artifacts/trunk@176 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 02 Oct 2009 10:02:15 +0000
parents 823850c63d95
children 3a668da76463
rev   line source
48
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.artifactdatabase;
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
49
823850c63d95 Convenience method in call meta to get preferred language.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 48
diff changeset
3 import java.util.Locale;
823850c63d95 Convenience method in call meta to get preferred language.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 48
diff changeset
4
48
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 import de.intevation.artifacts.CallMeta;
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 import de.intevation.artifacts.PreferredLocale;
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 /**
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de)
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 */
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 public class DefaultCallMeta
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 implements CallMeta
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 {
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 protected PreferredLocale [] languages;
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 public DefaultCallMeta() {
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 }
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 public DefaultCallMeta(PreferredLocale [] languages) {
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 }
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 public PreferredLocale [] getLanguages() {
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 return languages;
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 }
49
823850c63d95 Convenience method in call meta to get preferred language.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 48
diff changeset
25
823850c63d95 Convenience method in call meta to get preferred language.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 48
diff changeset
26 public Locale getPreferredLocale(Locale [] locales) {
823850c63d95 Convenience method in call meta to get preferred language.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 48
diff changeset
27 if (locales == null || locales.length == 0) {
823850c63d95 Convenience method in call meta to get preferred language.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 48
diff changeset
28 return null;
823850c63d95 Convenience method in call meta to get preferred language.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 48
diff changeset
29 }
823850c63d95 Convenience method in call meta to get preferred language.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 48
diff changeset
30
50
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
31 Locale best = null;
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
32 float quality = -Float.MAX_VALUE;
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
33
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
34 for (int i = 0; i < locales.length; ++i) {
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
35 Locale wish = locales[i];
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
36 String wishLanguage = wish.getLanguage();
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
37
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
38 for (int j = 0; j < languages.length; ++j) {
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
39 PreferredLocale have = languages[j];
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
40 Locale haveLocale = have.getLocale();
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
41 if (haveLocale.getLanguage().equals(wishLanguage)) {
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
42 float haveQuality = have.getQuality();
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
43 if (haveQuality > quality) {
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
44 quality = haveQuality;
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
45 best = wish;
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
46 }
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
47 break; // Languages should not contain
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
48 // same locale twice.
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
49 }
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
50 }
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
51 }
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
52
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
53 return best == null
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
54 ? locales[0]
0b04fa8a19c6 Better implementation for fetching the preferred locale via meta of call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 49
diff changeset
55 : best;
49
823850c63d95 Convenience method in call meta to get preferred language.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 48
diff changeset
56 }
48
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 }
41c225c8bd41 Add i18n support via "Accept-Language" HTTP headers.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8:

http://dive4elements.wald.intevation.org