Project

General

Profile

Download (3.12 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.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;
16

    
17
/**
18
 * @author m.doering
19
 * Special array that takes care that all LanguageString elements have a unique language
20
 */
21
public class MultilanguageText
22
        extends HashMap<Language, LanguageString>
23
        implements Cloneable, IMultiLanguageText {
24

    
25
	private static final long serialVersionUID = 7876604337076705862L;
26
	private static final Logger logger = LogManager.getLogger(MultilanguageText.class);
27

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

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

    
46
	protected MultilanguageText(){
47
		super();
48
	}
49

    
50
//******************* CONSTRUCTOR ****************************************/
51
	protected MultilanguageText (LanguageString languageString){
52
		super();
53
		this.put(languageString);
54
	}
55

    
56
	public MultilanguageText(int initialCapacity, float loadFactor) {
57
		super(initialCapacity, loadFactor);
58
	}
59

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

    
71

    
72
	@Override
73
    public LanguageString put(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 getPreferredLanguageString(List<Language> languages){
83
		return MultilanguageTextHelper.getPreferredLanguageString(this, languages);
84
	}
85

    
86
//*********** CLONE **********************************/
87

    
88
	/**
89
	 * Clones <i>this</i> multi-language text. This is a shortcut that enables to
90
	 * create a new instance that differs only slightly from <i>this</i> multi-language text
91
	 * by modifying only some of the attributes.<BR>
92
	 *
93
	 * @see java.lang.Object#clone()
94
	 */
95
	@Override
96
	public MultilanguageText clone() {
97
		MultilanguageText result = (MultilanguageText)super.clone();
98

    
99
		for (LanguageString languageString : this.values()){
100
			LanguageString newLanguageString;
101
			try {
102
				newLanguageString = (LanguageString)languageString.clone();
103
				result.put(newLanguageString);
104
			} catch (CloneNotSupportedException e) {
105
				logger.error(e);
106
			}
107
		}
108
		//no changes to: -
109
		return result;
110
	}
111

    
112
    @Override
113
    public LanguageString put(Language language, String text) {
114
        LanguageString languageString = new LanguageString(text, language);
115
        put(languageString);
116
        return languageString;
117
    }
118

    
119
}
(45-45/58)