2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.taxeditor
.model
;
12 import java
.util
.List
;
15 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
16 import eu
.etaxonomy
.cdm
.model
.common
.LanguageString
;
17 import eu
.etaxonomy
.cdm
.model
.common
.MultilanguageTextHelper
;
18 import eu
.etaxonomy
.cdm
.model
.term
.TermBase
;
21 * <p>MultiLanguageText class.</p>
24 * @created Oct 8, 2010
27 public class MultiLanguageText
{
29 private Map
<Language
, LanguageString
> languageTextMap
;
32 * <p>Constructor for MultiLanguageText.</p>
34 * @param languageTextMap a {@link java.util.Map} object.
36 public MultiLanguageText (Map
<Language
, LanguageString
> languageTextMap
){
37 this.languageTextMap
= languageTextMap
;
41 * Returns the multilanguage text with the content of <i>this</i> text data.
42 * The different {@link LanguageString language strings} (texts) contained in the
43 * multilanguage text should all have the same meaning.
45 * @see #getText(Language)
46 * @return a {@link java.util.Map} object.
48 public Map
<Language
, LanguageString
> getMultilanguageText(){
49 return languageTextMap
;
53 * <p>setMultilanguageText</p>
55 * @param multilanguageText a {@link java.util.Map} object.
57 public void setMultilanguageText(Map
<Language
,LanguageString
> multilanguageText
){
58 this.languageTextMap
= multilanguageText
;
62 * Returns the multilanguage text with the content of <i>this</i> IMultiLanguageTextHolder for
63 * a specific language.
65 * @param language the language in which the text string looked for is formulated
66 * @return a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
68 public LanguageString
getLanguageText(Language language
){
69 return languageTextMap
.get(language
);
73 * Returns the text string in the given {@link Language language} with the content
74 * of <i>this</i> IMultiLanguageTextHolder.
76 * @param language the language in which the text string looked for is formulated
77 * @see #getMultilanguageText(Language)
78 * @return a {@link java.lang.String} object.
80 public String
getText(Language language
){
81 return getLanguageText(language
).getText();
85 * Creates a {@link LanguageString language string} based on the given text string
86 * and the given {@link Language language}, returns it and adds it to the multilanguage
87 * text representing the content of <i>this</i> IMultiLanguageTextHolder.
89 * @param text the string representing the content of the IMultiLanguageTextHolder
90 * in a particular language
91 * @param language the language in which the text string is formulated
92 * @return the language string
93 * @see #getMultilanguageText()
94 * @see #putText(LanguageString)
95 * @see #getMultilanguageText()
96 * @see #putText(LanguageString)
98 public LanguageString
putText(String text
, Language language
){
99 return languageTextMap
.put(language
, LanguageString
.NewInstance(text
, language
));
103 * Adds a translated {@link LanguageString text in a particular language}
104 * to the multilanguage text representing the content of <i>this</i> IMultiLanguageTextHolder.
105 * The given language string will be returned.
107 * @param languageString the language string representing the content of
108 * the IMultiLanguageTextHolder in a particular language
109 * @return the language string
110 * @see #getMultilanguageText()
111 * @see #putText(String, Language)
112 * @see #getMultilanguageText()
113 * @see #putText(String, Language)
115 public LanguageString
putText(LanguageString languageString
){
116 return languageTextMap
.put(languageString
.getLanguage(), languageString
);
120 * Returns the LanguageString in the preferred language. Preferred languages
121 * are specified by the parameter languages, which receives a list of
122 * Language instances in the order of preference. If no representation in
123 * any preferred languages is found the method falls back to return the
124 * Representation in Language.DEFAULT() and if neccesary further falls back
125 * to return the first element found if any.
127 * Implementors should always consider calling {@link MultilanguageTextHelper#getPreferredLanguageString(Map, List)}
128 * in their implementation of this method
130 * TODO think about this fall-back strategy &
131 * see also {@link TermBase#getPreferredRepresentation(List)}
133 * @param languages a {@link java.util.List} object.
134 * @return a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
136 public LanguageString
getPreferredLanguageString(List
<Language
> languages
){
137 return MultilanguageTextHelper
.getPreferredLanguageString(languageTextMap
, languages
);
141 * Removes from the multilanguage representing the content of
142 * <i>this</i> IMultiLanguageTextHolder the one {@link LanguageString language string}
143 * with the given {@link Language language}. Returns the removed
146 * @param language the language in which the language string to be removed
147 * has been formulated
148 * @return the language string associated with the given language
149 * @see #getMultilanguageText()
151 public LanguageString
removeText(Language language
){
152 return languageTextMap
.remove(language
);