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
.cdm
.model
.common
;
12 import java
.util
.HashMap
;
13 import java
.util
.List
;
15 import org
.apache
.log4j
.Logger
;
17 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnitBase
;
21 * Special array that takes care that all LanguageString elements have a unique language
23 public class MultilanguageText
extends HashMap
<Language
, LanguageString
> implements Cloneable
, IMultiLanguageText
{
24 private static final long serialVersionUID
= 7876604337076705862L;
25 private static final Logger logger
= Logger
.getLogger(MultilanguageText
.class);
31 public static MultilanguageText
NewInstance(){
32 MultilanguageText result
= new MultilanguageText();
40 public static MultilanguageText
NewInstance(LanguageString languageString
){
41 MultilanguageText result
= new MultilanguageText(languageString
);
45 public MultilanguageText(){
53 protected MultilanguageText (LanguageString languageString
){
55 this.add(languageString
);
58 public MultilanguageText(int initialCapacity
, float loadFactor
) {
59 super(initialCapacity
, loadFactor
);
63 * @see eu.etaxonomy.cdm.model.common.IMultiLanguageText#getText(eu.etaxonomy.cdm.model.common.Language)
65 public String
getText(Language language
){
66 LanguageString languageString
= super.get(language
);
67 if (languageString
!= null){
68 return languageString
.getText();
75 * @see eu.etaxonomy.cdm.model.common.IMultiLanguageText#add(eu.etaxonomy.cdm.model.common.LanguageString)
77 public LanguageString
add(LanguageString languageString
){
78 if (languageString
== null){
81 return this.put(languageString
.getLanguage(), languageString
);
87 * @see eu.etaxonomy.cdm.model.common.IMultiLanguageText#getPreferredLanguageString(java.util.List)
89 public LanguageString
getPreferredLanguageString(List
<Language
> languages
){
90 return MultilanguageTextHelper
.getPreferredLanguageString(this, languages
);
93 //*********** CLONE **********************************/
96 * Clones <i>this</i> multi-language text. This is a shortcut that enables to
97 * create a new instance that differs only slightly from <i>this</i> multi-language text
98 * by modifying only some of the attributes.<BR>
99 * This method overrides the clone method from {@link DerivedUnitBase DerivedUnitBase}.
101 * @see DerivedUnitBase#clone()
102 * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
103 * @see java.lang.Object#clone()
106 public MultilanguageText
clone() {
107 MultilanguageText result
= (MultilanguageText
)super.clone();
109 for (LanguageString languageString
: this.values()){
110 LanguageString newLanguageString
;
112 newLanguageString
= (LanguageString
)languageString
.clone();
113 result
.put(newLanguageString
.getLanguage(), newLanguageString
);
114 } catch (CloneNotSupportedException e
) {