Project

General

Profile

Download (3.13 KB) Statistics
| Branch: | Tag: | Revision:
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.HashMap;
13
import java.util.List;
14

    
15
import org.apache.log4j.Logger;
16

    
17
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
18

    
19
/**
20
 * @author m.doering
21
 * Special array that takes care that all LanguageString elements have a unique language
22
 */
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);
26

    
27
	/**
28
	 * Factory method
29
	 * @return
30
	 */
31
	public static MultilanguageText NewInstance(){
32
		MultilanguageText result =  new MultilanguageText();
33
		return result;
34
	}
35

    
36
	/**
37
	 * Factory method
38
	 * @return
39
	 */
40
	public static MultilanguageText NewInstance(LanguageString languageString){
41
		MultilanguageText result =  new MultilanguageText(languageString);
42
		return result;
43
	}
44

    
45
	public MultilanguageText(){
46
		super();
47
	}
48

    
49

    
50
	/**
51
	 * Constructor
52
	 */
53
	protected MultilanguageText (LanguageString languageString){
54
		super();
55
		this.add(languageString);
56
	}
57

    
58
	public MultilanguageText(int initialCapacity, float loadFactor) {
59
		super(initialCapacity, loadFactor);
60
	}
61

    
62
    @Override
63
	public String getText(Language language){
64
		LanguageString languageString = super.get(language);
65
		if (languageString != null){
66
			return languageString.getText();
67
		}else {
68
			return null;
69
		}
70
	}
71

    
72
	@Override
73
	public LanguageString add(LanguageString languageString){
74
		if (languageString == null){
75
			return null;
76
		}else{
77
			return this.put(languageString.getLanguage(), languageString);
78
		}
79
	}
80

    
81
	@Override
82
    public LanguageString put(LanguageString languageString){
83
		if (languageString == null){
84
			return null;
85
		}else{
86
			return this.put(languageString.getLanguage(), languageString);
87
		}
88
	}
89

    
90
	@Override
91
    public LanguageString getPreferredLanguageString(List<Language> languages){
92
		return MultilanguageTextHelper.getPreferredLanguageString(this, languages);
93
	}
94

    
95
//*********** CLONE **********************************/
96

    
97
	/**
98
	 * Clones <i>this</i> multi-language text. This is a shortcut that enables to
99
	 * create a new instance that differs only slightly from <i>this</i> multi-language text
100
	 * by modifying only some of the attributes.<BR>
101
	 * This method overrides the clone method from {@link DerivedUnit DerivedUnit}.
102
	 *
103
	 * @see DerivedUnit#clone()
104
	 * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
105
	 * @see java.lang.Object#clone()
106
	 */
107
	@Override
108
	public MultilanguageText clone() {
109
		MultilanguageText result = (MultilanguageText)super.clone();
110

    
111
		for (LanguageString languageString : this.values()){
112
			LanguageString newLanguageString;
113
			try {
114
				newLanguageString = (LanguageString)languageString.clone();
115
				result.put(newLanguageString);
116
			} catch (CloneNotSupportedException e) {
117
				logger.error(e);
118
			}
119
		}
120
		//no changes to: -
121
		return result;
122
	}
123

    
124

    
125

    
126
}
(51-51/80)