Project

General

Profile

Download (2.42 KB) Statistics
| Branch: | Tag: | Revision:
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
}
(4-4/13)