(no commit message)
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / common / IIdentifiableEntitiy.java
1 package eu.etaxonomy.cdm.model.common;
2
3 import java.util.Set;
4
5 import javax.persistence.ManyToMany;
6 import javax.persistence.OneToMany;
7
8 import org.hibernate.annotations.Cascade;
9 import org.hibernate.annotations.CascadeType;
10
11 import eu.etaxonomy.cdm.model.media.Rights;
12
13 import org.apache.log4j.Logger;
14
15 public interface IIdentifiableEntitiy<T extends IdentifiableEntity> {
16
17 public abstract String getLsid();
18
19 public abstract void setLsid(String lsid);
20
21 public abstract String generateTitle();
22
23 //@Index(name="titleCacheIndex")
24 public abstract String getTitleCache();
25
26 public abstract void setTitleCache(String titleCache);
27
28 public abstract void setTitleCache(String titleCache, boolean protectCache);
29
30 @ManyToMany
31 @Cascade( { CascadeType.SAVE_UPDATE })
32 public abstract Set<Rights> getRights();
33
34 public abstract void addRights(Rights right);
35
36 public abstract void removeRights(Rights right);
37
38 @OneToMany
39 //(mappedBy="extendedObj")
40 @Cascade( { CascadeType.SAVE_UPDATE })
41 public abstract Set<Extension> getExtensions();
42
43 public abstract void addExtension(Extension extension);
44
45 public abstract void removeExtension(Extension extension);
46
47 public abstract boolean isProtectedTitleCache();
48
49 public abstract void setProtectedTitleCache(boolean protectedTitleCache);
50
51 @OneToMany
52 //(mappedBy="sourcedObj")
53 @Cascade( { CascadeType.SAVE_UPDATE })
54 public abstract Set<OriginalSource> getSources();
55
56 public abstract void addSource(OriginalSource source);
57
58 public abstract void removeSource(OriginalSource source);
59
60 /**
61 * Overrides {@link eu.etaxonomy.cdm.model.common.CdmBase#toString()}.
62 * This returns an String that identifies the object well without beeing necessarily unique.
63 * Specification: This method should never call other object' methods so it can be well used for debugging
64 * without problems like lazy loading, unreal states etc.
65 * Note: If overriding this method's javadoc always copy or link the above requirement.
66 * If not overwritten by a subclass method returns the class, id and uuid as a string for any CDM object.
67 * For example: Taxon#13<b5938a98-c1de-4dda-b040-d5cc5bfb3bc0>
68 * @see java.lang.Object#toString()
69 */
70 public abstract String toString();
71
72 }