(no commit message)
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / common / MultilanguageSet.java
1 /**
2 * Copyright (C) 2007 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
10 package eu.etaxonomy.cdm.model.common;
11
12 import java.util.Enumeration;
13 import java.util.HashMap;
14 import java.util.List;
15 import java.util.Locale;
16
17 import org.apache.log4j.Logger;
18
19
20 /**
21 * @author m.doering
22 * Special array that takes care that all LanguageString elements have a unique language
23 */
24 public class MultilanguageSet extends HashMap<Language, LanguageString> {
25
26 private static final long serialVersionUID = 7876604337076705862L;
27
28 static Logger logger = Logger.getLogger(MultilanguageSet.class);
29
30 /**
31 * Factory method
32 * @return
33 */
34 public static MultilanguageSet NewInstance(){
35 MultilanguageSet result = new MultilanguageSet();
36 return result;
37 }
38
39 /**
40 * Factory method
41 * @return
42 */
43 public static MultilanguageSet NewInstance(LanguageString languageString){
44 MultilanguageSet result = new MultilanguageSet(languageString);
45 return result;
46 }
47
48 public MultilanguageSet(){
49 super();
50 }
51
52 /**
53 * Constructor
54 */
55 protected MultilanguageSet (LanguageString languageString){
56 super();
57 this.add(languageString);
58 }
59
60 public String getText(Language language){
61 LanguageString languageString = super.get(language);
62 if (languageString != null){
63 return languageString.getText();
64 }else {
65 return null;
66 }
67 }
68
69 /**
70 * @param languageString
71 * @return String the previous text in the MultilanguageSet that was associated with the language
72 * defined in languageString, or null if there was no such text before. (A null return can also indicate that the text was previously null.)
73 */
74 public LanguageString add(LanguageString languageString){
75 if (languageString == null){
76 return null;
77 }else{
78 // Language language = languageString.getLanguage();
79 // String text = languageString.getText();
80 // String result =this.put(languageString.getLanguage(), languageString.getText());
81 // return result;
82 // }
83 return this.put(languageString.getLanguage(), languageString);
84 }
85 }
86
87
88 /**
89 *
90 * @param languages
91 * @return
92 */
93 public LanguageString getPreferredLanguageString(List<Language> languages){
94
95 LanguageString languageString = null;
96 for (Language language : languages) {
97 languageString = super.get(language);
98 if(languageString != null){
99 return languageString;
100 }
101 }
102 return super.get(Language.DEFAULT());
103 }
104
105
106 }