Project

General

Profile

Download (3.61 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
	/* (non-Javadoc)
63
	 * @see eu.etaxonomy.cdm.model.common.IMultiLanguageText#getText(eu.etaxonomy.cdm.model.common.Language)
64
	 */
65
	public String getText(Language language){
66
		LanguageString languageString = super.get(language);
67
		if (languageString != null){
68
			return languageString.getText();
69
		}else {
70
			return null;
71
		}
72
	}
73
	
74
	/* (non-Javadoc)
75
	 * @see eu.etaxonomy.cdm.model.common.IMultiLanguageText#add(eu.etaxonomy.cdm.model.common.LanguageString)
76
	 */
77
	@Deprecated
78
	public LanguageString add(LanguageString languageString){
79
		if (languageString == null){
80
			return null;
81
		}else{
82
			return this.put(languageString.getLanguage(), languageString);
83
		}
84
	}
85
	/* (non-Javadoc)
86
	 * @see eu.etaxonomy.cdm.model.common.IMultiLanguageText#put(eu.etaxonomy.cdm.model.common.LanguageString)
87
	 */
88
	public LanguageString put(LanguageString languageString){
89
		if (languageString == null){
90
			return null;
91
		}else{
92
			return this.put(languageString.getLanguage(), languageString);
93
		}
94
	}
95
	
96
	/* (non-Javadoc)
97
	 * @see eu.etaxonomy.cdm.model.common.IMultiLanguageText#getPreferredLanguageString(java.util.List)
98
	 */
99
	public LanguageString getPreferredLanguageString(List<Language> languages){
100
		return MultilanguageTextHelper.getPreferredLanguageString(this, languages);
101
	}
102
	
103
//*********** CLONE **********************************/	
104
	
105
	/** 
106
	 * Clones <i>this</i> multi-language text. This is a shortcut that enables to
107
	 * create a new instance that differs only slightly from <i>this</i> multi-language text
108
	 * by modifying only some of the attributes.<BR>
109
	 * This method overrides the clone method from {@link DerivedUnit DerivedUnit}.
110
	 * 
111
	 * @see DerivedUnit#clone()
112
	 * @see eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity#clone()
113
	 * @see java.lang.Object#clone()
114
	 */
115
	@Override
116
	public MultilanguageText clone() {
117
		MultilanguageText result = (MultilanguageText)super.clone();
118
		
119
		for (LanguageString languageString : this.values()){
120
			LanguageString newLanguageString;
121
			try {
122
				newLanguageString = (LanguageString)languageString.clone();
123
				result.put(newLanguageString);
124
			} catch (CloneNotSupportedException e) {
125
				logger.error(e);
126
			}
127
		}
128
		//no changes to: -
129
		return result;
130
	}
131

    
132
	
133

    
134
}
(48-48/72)