Lots of changes, but primarily:
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / media / IdentifiableMediaEntity.java
1 package eu.etaxonomy.cdm.model.media;
2
3 import java.util.HashSet;
4 import java.util.Set;
5
6 import javax.persistence.FetchType;
7 import javax.persistence.MappedSuperclass;
8 import javax.persistence.ManyToMany;
9 import javax.xml.bind.annotation.XmlAccessType;
10 import javax.xml.bind.annotation.XmlAccessorType;
11 import javax.xml.bind.annotation.XmlElement;
12 import javax.xml.bind.annotation.XmlElementWrapper;
13 import javax.xml.bind.annotation.XmlIDREF;
14 import javax.xml.bind.annotation.XmlSchemaType;
15 import javax.xml.bind.annotation.XmlType;
16
17 import org.apache.log4j.Logger;
18 import org.hibernate.annotations.Cascade;
19 import org.hibernate.annotations.CascadeType;
20
21 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
22 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
23
24 @XmlAccessorType(XmlAccessType.FIELD)
25 @XmlType(name = "IdentifiableMediaEntity", propOrder = {
26 "media"
27 })
28 @MappedSuperclass
29 public abstract class IdentifiableMediaEntity<S extends IIdentifiableEntityCacheStrategy> extends IdentifiableEntity<S> implements IMediaDocumented, IMediaEntity{
30
31 private static final long serialVersionUID = 4038647011021908313L;
32
33 protected static Logger logger = Logger.getLogger(IdentifiableMediaEntity.class);
34
35 @XmlElementWrapper(name = "Media")
36 @XmlElement(name = "Medium")
37 @XmlIDREF
38 @XmlSchemaType(name = "IDREF")
39 @ManyToMany(fetch = FetchType.LAZY)
40 @Cascade({CascadeType.SAVE_UPDATE})
41 private Set<Media> media = new HashSet<Media>();
42
43
44 /* (non-Javadoc)
45 * @see eu.etaxonomy.cdm.model.media.IMediaEntity#getMedia()
46 */
47 public Set<Media> getMedia() {
48 return media;
49 }
50
51 /* (non-Javadoc)
52 * @see eu.etaxonomy.cdm.model.media.IMediaEntity#addMedia(eu.etaxonomy.cdm.model.media.Media)
53 */
54 public void addMedia(Media media) {
55 this.media.add(media);
56 }
57 /* (non-Javadoc)
58 * @see eu.etaxonomy.cdm.model.media.IMediaEntity#removeMedia(eu.etaxonomy.cdm.model.media.Media)
59 */
60 public void removeMedia(Media media) {
61 this.media.remove(media);
62 }
63
64 //******************** CLONE **********************************************/
65
66 /* (non-Javadoc)
67 * @see eu.etaxonomy.cdm.model.common.IdentifiableEntity#clone()
68 */
69 @Override
70 public Object clone() throws CloneNotSupportedException{
71 IdentifiableMediaEntity result = (IdentifiableMediaEntity)super.clone();
72 //Media
73 result.media = new HashSet<Media>();
74 for(Media media : this.media) {
75 result.addMedia(media);
76 }
77 //no changes to: -
78 return result;
79 }
80
81 }