1 |
ca21f846
|
Andreas Müller
|
package eu.etaxonomy.cdm.model.media;
|
2 |
9479da48
|
Andreas Müller
|
|
3 |
|
|
import java.util.HashSet;
|
4 |
|
|
import java.util.Set;
|
5 |
|
|
|
6 |
f6765014
|
ben.clark
|
import javax.persistence.FetchType;
|
7 |
ee91bcd9
|
ben.clark
|
import javax.persistence.ManyToMany;
|
8 |
2beb45d7
|
ben.clark
|
import javax.persistence.MappedSuperclass;
|
9 |
ddae61ce
|
a.babadshanjan
|
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 |
9479da48
|
Andreas Müller
|
|
17 |
|
|
import org.apache.log4j.Logger;
|
18 |
|
|
import org.hibernate.annotations.Cascade;
|
19 |
|
|
import org.hibernate.annotations.CascadeType;
|
20 |
|
|
|
21 |
ca21f846
|
Andreas Müller
|
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
|
22 |
4208745a
|
ben.clark
|
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
|
23 |
53befb32
|
Andreas Müller
|
import eu.etaxonomy.cdm.strategy.merge.Merge;
|
24 |
|
|
import eu.etaxonomy.cdm.strategy.merge.MergeMode;
|
25 |
ca21f846
|
Andreas Müller
|
|
26 |
ddae61ce
|
a.babadshanjan
|
@XmlAccessorType(XmlAccessType.FIELD)
|
27 |
dc776ce0
|
a.babadshanjan
|
@XmlType(name = "IdentifiableMediaEntity", propOrder = {
|
28 |
ddae61ce
|
a.babadshanjan
|
"media"
|
29 |
|
|
})
|
30 |
9479da48
|
Andreas Müller
|
@MappedSuperclass
|
31 |
4208745a
|
ben.clark
|
public abstract class IdentifiableMediaEntity<S extends IIdentifiableEntityCacheStrategy> extends IdentifiableEntity<S> implements IMediaDocumented, IMediaEntity{
|
32 |
961ee94b
|
Andreas Müller
|
|
33 |
|
|
private static final long serialVersionUID = 4038647011021908313L;
|
34 |
ddae61ce
|
a.babadshanjan
|
|
35 |
4208745a
|
ben.clark
|
protected static Logger logger = Logger.getLogger(IdentifiableMediaEntity.class);
|
36 |
9479da48
|
Andreas Müller
|
|
37 |
ddae61ce
|
a.babadshanjan
|
@XmlElementWrapper(name = "Media")
|
38 |
|
|
@XmlElement(name = "Medium")
|
39 |
|
|
@XmlIDREF
|
40 |
|
|
@XmlSchemaType(name = "IDREF")
|
41 |
ee91bcd9
|
ben.clark
|
@ManyToMany(fetch = FetchType.LAZY)
|
42 |
|
|
@Cascade({CascadeType.SAVE_UPDATE})
|
43 |
53befb32
|
Andreas Müller
|
//TODO
|
44 |
|
|
@Merge(MergeMode.ADD_CLONE)
|
45 |
ee91bcd9
|
ben.clark
|
private Set<Media> media = new HashSet<Media>();
|
46 |
9479da48
|
Andreas Müller
|
|
47 |
|
|
|
48 |
71dcc146
|
Andreas Müller
|
/* (non-Javadoc)
|
49 |
|
|
* @see eu.etaxonomy.cdm.model.media.IMediaEntity#getMedia()
|
50 |
|
|
*/
|
51 |
9479da48
|
Andreas Müller
|
public Set<Media> getMedia() {
|
52 |
|
|
return media;
|
53 |
|
|
}
|
54 |
ee91bcd9
|
ben.clark
|
|
55 |
71dcc146
|
Andreas Müller
|
/* (non-Javadoc)
|
56 |
|
|
* @see eu.etaxonomy.cdm.model.media.IMediaEntity#addMedia(eu.etaxonomy.cdm.model.media.Media)
|
57 |
|
|
*/
|
58 |
9479da48
|
Andreas Müller
|
public void addMedia(Media media) {
|
59 |
|
|
this.media.add(media);
|
60 |
|
|
}
|
61 |
71dcc146
|
Andreas Müller
|
/* (non-Javadoc)
|
62 |
|
|
* @see eu.etaxonomy.cdm.model.media.IMediaEntity#removeMedia(eu.etaxonomy.cdm.model.media.Media)
|
63 |
|
|
*/
|
64 |
9479da48
|
Andreas Müller
|
public void removeMedia(Media media) {
|
65 |
|
|
this.media.remove(media);
|
66 |
|
|
}
|
67 |
835c12dd
|
Andreas Müller
|
|
68 |
|
|
//******************** CLONE **********************************************/
|
69 |
|
|
|
70 |
|
|
/* (non-Javadoc)
|
71 |
|
|
* @see eu.etaxonomy.cdm.model.common.IdentifiableEntity#clone()
|
72 |
|
|
*/
|
73 |
e1c9b32e
|
a.babadshanjan
|
@Override
|
74 |
835c12dd
|
Andreas Müller
|
public Object clone() throws CloneNotSupportedException{
|
75 |
dc776ce0
|
a.babadshanjan
|
IdentifiableMediaEntity result = (IdentifiableMediaEntity)super.clone();
|
76 |
835c12dd
|
Andreas Müller
|
//Media
|
77 |
ee91bcd9
|
ben.clark
|
result.media = new HashSet<Media>();
|
78 |
|
|
for(Media media : this.media) {
|
79 |
|
|
result.addMedia(media);
|
80 |
|
|
}
|
81 |
835c12dd
|
Andreas Müller
|
//no changes to: -
|
82 |
|
|
return result;
|
83 |
|
|
}
|
84 |
9479da48
|
Andreas Müller
|
|
85 |
|
|
}
|