root/trunk/cdmlib/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/MultilanguageTextHelper.java

Revision 10511, 3.5 kB (checked in by n.hoffmann, 19 months ago)

harmonization of methods

  • Property svn:keywords set to Id
Line 
1/**
2* Copyright (C) 2008 EDIT
3* European Distributed Institute of Taxonomy
4* http://www.e-taxonomy.eu
5*
6* The contents of this file are subject to the Mozilla Public License Version 1.1
7* See LICENSE.TXT at the top of this package for the full license terms.
8*/
9
10package eu.etaxonomy.cdm.model.common;
11
12import java.util.Iterator;
13import java.util.List;
14import java.util.Map;
15import java.util.Set;
16
17import javax.persistence.Transient;
18import javax.xml.bind.annotation.XmlAccessType;
19import javax.xml.bind.annotation.XmlAccessorType;
20import javax.xml.bind.annotation.XmlElement;
21import javax.xml.bind.annotation.XmlIDREF;
22import javax.xml.bind.annotation.XmlRootElement;
23import javax.xml.bind.annotation.XmlSchemaType;
24import javax.xml.bind.annotation.XmlType;
25
26/**
27 * @author a.babadshanjan
28 * @created 15.09.2008
29 * @version 1.0
30 */
31@XmlAccessorType(XmlAccessType.FIELD)
32@XmlType(name = "MultilanguageTextHelper", propOrder = {
33    "language",
34    "languageString"
35})
36@XmlRootElement(name = "MultilanguageTextHelper")
37public class MultilanguageTextHelper {
38
39        @XmlElement(name = "Language")
40    @XmlIDREF
41    @XmlSchemaType(name = "IDREF")
42        private Language language;
43       
44        @XmlElement(name = "LanguageString")
45    @XmlIDREF
46    @XmlSchemaType(name = "IDREF")
47        private LanguageString languageString;
48
49// TODO: Need a HashMap instead of just one pair of Language/LanguageString
50//      private HashMap<Language, LanguageString> mlText;
51       
52        public MultilanguageTextHelper() {
53        }
54       
55        public MultilanguageTextHelper(Language language, LanguageString languageString) {
56        this.language = language;
57        this.languageString = languageString;
58        }
59       
60        @Transient
61        public Language getLanguage() {
62                return language;
63        }
64       
65        public void setLanguage(Language language) {
66                this.language = language;
67        }
68
69        @Transient
70        public LanguageString getLanguageString() {
71                return languageString;
72        }
73       
74        public void setLanguageString(LanguageString languageString) {
75                this.languageString = languageString;
76        }
77       
78    /**
79         * Returns the LanguageString in the preferred language. Preferred languages
80         * are specified by the parameter languages, which receives a list of
81         * Language instances in the order of preference. If no representation in
82         * any preferred languages is found the method falls back to return the
83         * Representation in Language.DEFAULT() and if neccesary further falls back
84         * to return the first element found if any.
85         *
86         * TODO think about this fall-back strategy &
87         * see also {@link TermBase#getPreferredRepresentation(List)}
88         *
89         * @param languages
90         * @return
91         */
92        public static LanguageString getPreferredLanguageString(Map<Language, LanguageString> multilanguageText, List<Language> languages) {
93               
94                LanguageString languageString = null;
95                if(languages != null){
96                        for(Language language : languages) {
97                                languageString = multilanguageText.get(language);
98                                if(languageString != null){
99                                        return languageString;
100                                }
101                        }
102                }
103                languageString = multilanguageText.get(Language.DEFAULT());
104               
105                if(languageString == null && multilanguageText.size() > 0){
106                        Iterator<LanguageString> it = multilanguageText.values().iterator();
107                        if(it.hasNext()){
108                                languageString = it.next();
109                        }
110                }
111                return languageString;
112        }
113       
114        /**
115         * Returns a {@link Set} of {@link Language Languages} that are contained in the given multilanguage map
116         * @param multilanguageText
117         * @return
118         */
119        public static Set<Language> getLanguages(Map<Language, LanguageString> multilanguageText){
120                return multilanguageText.keySet();
121        }
122}
Note: See TracBrowser for help on using the browser.