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
.location
;
12 import java
.util
.HashSet
;
13 import java
.util
.List
;
16 import java
.util
.UUID
;
18 import javax
.persistence
.Entity
;
19 import javax
.persistence
.FetchType
;
20 import javax
.persistence
.JoinTable
;
21 import javax
.persistence
.ManyToMany
;
22 import javax
.persistence
.ManyToOne
;
23 import javax
.persistence
.Transient
;
24 import javax
.xml
.bind
.annotation
.XmlAccessType
;
25 import javax
.xml
.bind
.annotation
.XmlAccessorType
;
26 import javax
.xml
.bind
.annotation
.XmlElement
;
27 import javax
.xml
.bind
.annotation
.XmlElementWrapper
;
28 import javax
.xml
.bind
.annotation
.XmlIDREF
;
29 import javax
.xml
.bind
.annotation
.XmlRootElement
;
30 import javax
.xml
.bind
.annotation
.XmlSchemaType
;
31 import javax
.xml
.bind
.annotation
.XmlSeeAlso
;
32 import javax
.xml
.bind
.annotation
.XmlType
;
34 import org
.apache
.log4j
.Logger
;
35 import org
.hibernate
.annotations
.Cascade
;
36 import org
.hibernate
.annotations
.CascadeType
;
37 import org
.hibernate
.envers
.Audited
;
39 import eu
.etaxonomy
.cdm
.hibernate
.HibernateProxyHelper
;
40 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
41 import eu
.etaxonomy
.cdm
.model
.common
.OrderedTermBase
;
42 import eu
.etaxonomy
.cdm
.model
.common
.TermVocabulary
;
43 import eu
.etaxonomy
.cdm
.model
.common
.TimePeriod
;
44 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
49 * @created 08-Nov-2007 13:06:36
51 @XmlAccessorType(XmlAccessType
.PROPERTY
)
52 @XmlType(name
= "NamedArea", propOrder
= {
60 "waterbodiesOrCountries",
64 @XmlRootElement(name
= "NamedArea")
65 @XmlSeeAlso({TdwgArea
.class})
68 public class NamedArea
extends OrderedTermBase
<NamedArea
> {
69 private static final long serialVersionUID
= 6248434369557403036L;
70 private static final Logger logger
= Logger
.getLogger(NamedArea
.class);
72 //description of time valid context of this area. e.g. year range
73 private TimePeriod validPeriod
= TimePeriod
.NewInstance();
75 //Binary shape definition for user's defined area as polygon
76 @ManyToOne(fetch
= FetchType
.LAZY
)
77 @Cascade(CascadeType
.SAVE_UPDATE
)
80 private Point pointApproximation
;
82 @ManyToMany(fetch
= FetchType
.LAZY
)
83 @JoinTable(name
="DefinedTermBase_WaterbodyOrCountry")
84 private Set
<WaterbodyOrCountry
> waterbodiesOrCountries
= new HashSet
<WaterbodyOrCountry
>();
86 @ManyToOne(fetch
= FetchType
.LAZY
)
87 private NamedAreaType type
;
89 @ManyToOne(fetch
= FetchType
.LAZY
)
90 private NamedAreaLevel level
;
96 public static NamedArea
NewInstance(){
97 logger
.debug("NewInstance");
98 return new NamedArea();
105 public static NamedArea
NewInstance(String term
, String label
, String labelAbbrev
){
106 return new NamedArea(term
, label
, labelAbbrev
);
116 public NamedArea(String term
, String label
, String labelAbbrev
) {
117 super(term
, label
, labelAbbrev
);
120 @XmlElement(name
= "NamedAreaType")
122 @XmlSchemaType(name
= "IDREF")
123 public NamedAreaType
getType(){
127 public void setType(NamedAreaType type
){
131 @XmlElement(name
= "NamedAreaLevel")
133 @XmlSchemaType(name
= "IDREF")
134 public NamedAreaLevel
getLevel(){
138 public void setLevel(NamedAreaLevel level
){
142 @XmlElement(name
= "ValidPeriod")
143 public TimePeriod
getValidPeriod(){
144 return this.validPeriod
;
147 public void setValidPeriod(TimePeriod validPeriod
){
148 this.validPeriod
= validPeriod
;
151 @XmlElement(name
= "Shape")
153 @XmlSchemaType(name
= "IDREF")
154 public Media
getShape(){
157 public void setShape(Media shape
){
161 @XmlElementWrapper(name
= "WaterbodiesOrCountries")
162 @XmlElement(name
= "WaterbodiesOrCountry")
164 @XmlSchemaType(name
= "IDREF")
165 public Set
<WaterbodyOrCountry
> getWaterbodiesOrCountries() {
166 return waterbodiesOrCountries
;
169 public void addWaterbodyOrCountry(WaterbodyOrCountry waterbodyOrCountry
) {
170 this.waterbodiesOrCountries
.add(waterbodyOrCountry
);
173 public void removeWaterbodyOrCountry(WaterbodyOrCountry waterbodyOrCountry
) {
174 this.waterbodiesOrCountries
.remove(waterbodyOrCountry
);
177 @XmlElement(name
= "PointApproximation")
178 public Point
getPointApproximation() {
179 return pointApproximation
;
181 public void setPointApproximation(Point pointApproximation
) {
182 this.pointApproximation
= pointApproximation
;
185 @XmlElement(name
= "KindOf", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0")
187 @XmlSchemaType(name
= "IDREF")
188 public NamedArea
getKindOf(){
189 return super.getKindOf();
192 public void setKindOf(NamedArea kindOf
){
193 super.setKindOf(kindOf
);
196 @XmlElement(name
= "PartOf", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0")
198 @XmlSchemaType(name
= "IDREF")
199 public NamedArea
getPartOf(){
201 * Object area = super.getPartOf();
203 if(!(area instanceof NamedArea)){
204 area = HibernateProxyHelper.deproxy(area, NamedArea.class);
207 return (NamedArea) area;
209 TODO workaround replaced by field
210 the partOf getter and setter seem to be superfluous, can the be removed?
215 public void setPartOf(NamedArea partOf
){
216 this.partOf
= partOf
;
219 @XmlElementWrapper(name
= "Generalizations", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0")
220 @XmlElement(name
= "GeneralizationOf", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0")
222 @XmlSchemaType(name
= "IDREF")
223 public Set
<NamedArea
> getGeneralizationOf(){
224 return super.getGeneralizationOf();
227 protected void setGeneralizationOf(Set
<NamedArea
> value
){
228 super.setGeneralizationOf(value
);
231 @XmlElementWrapper(name
= "Includes", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0")
232 @XmlElement(name
= "Include", namespace
= "http://etaxonomy.eu/cdm/model/common/1.0")
234 @XmlSchemaType(name
= "IDREF")
235 public Set
<NamedArea
> getIncludes(){
236 return super.getIncludes();
239 protected void setIncludes(Set
<NamedArea
> includes
) {
240 super.setIncludes(includes
);
245 * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#readCsvLine(java.util.List)
248 public NamedArea
readCsvLine(Class
<NamedArea
> termClass
, List
<String
> csvLine
, Map
<UUID
,DefinedTermBase
> terms
) {
249 NamedArea newInstance
= super.readCsvLine(termClass
, csvLine
, terms
);
251 String levelString
= (String
)csvLine
.get(6);
253 if(levelString
!= null && levelString
.length() != 0) {
254 UUID levelUuid
= UUID
.fromString(levelString
);
255 NamedAreaLevel level
= (NamedAreaLevel
)terms
.get(levelUuid
);
256 newInstance
.setLevel(level
);
259 String partOfString
= (String
)csvLine
.get(7);
261 if(partOfString
!= null && partOfString
.length() != 0) {
262 UUID partOfUuid
= UUID
.fromString(partOfString
);
263 NamedArea partOf
= (NamedArea
)terms
.get(partOfUuid
);
264 partOf
.addIncludes(newInstance
);
270 protected void setDefaultTerms(TermVocabulary
<NamedArea
> termVocabulary
) {
271 // TODO Auto-generated method stub