root/trunk/cdmlib/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/MultilanguageText.java

Revision 11934, 3.6 kB (checked in by k.luther, 13 months ago)

clone methods

  • Property svn:keywords set to Id
Line 
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
10package eu.etaxonomy.cdm.model.common;
11
12import java.util.HashMap;
13import java.util.List;
14
15import org.apache.log4j.Logger;
16
17import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
18
19/**
20 * @author m.doering
21 * Special array that takes care that all LanguageString elements have a unique language
22 */
23public 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 DerivedUnitBase DerivedUnitBase}.
110         *
111         * @see DerivedUnitBase#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}
Note: See TracBrowser for help on using the browser.