X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/ab44ad2130cc6e5875673e3dc5c9cd3c68217ad3..f7cf08c74a7a1f29b73b7513dea529dd17c8be36:/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Marker.java diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Marker.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Marker.java index 8805a89dda..a59e0238d7 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Marker.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Marker.java @@ -14,6 +14,10 @@ import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; import javax.persistence.*; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; /** * This class aims to make available some "flags" for identifiable entities in a @@ -23,14 +27,29 @@ import javax.persistence.*; * @version 1.0 * @created 08-Nov-2007 13:06:33 */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "Marker") @Entity -public class Marker extends VersionableEntity { +public class Marker extends VersionableEntity implements Cloneable{ private static final Logger logger = Logger.getLogger(Marker.class); + @XmlElement(name = "Flag") private boolean flag; + + @XmlElement(name = "MarkerType") private MarkerType markerType; + + @XmlElement(name = "MarkedObject") private AnnotatableEntity markedObj; + /** + * Factory method + * @return + */ + public static Marker NewInstance(){ + return new Marker(); + } + /** * Factory method * @param markerType The type of the marker @@ -41,14 +60,19 @@ public class Marker extends VersionableEntity { return new Marker(markerType, flag); } + /** + * Default Constructor + */ + private Marker() { + } + /** * Constructor - * @param flage + * @param flag */ protected Marker(MarkerType markerType, boolean flag){ this.markerType = markerType; this.flag = flag; - } /** @@ -59,15 +83,6 @@ public class Marker extends VersionableEntity { return markedObj; } protected void setMarkedObj(AnnotatableEntity newMarkedObject) { - // Hibernate bidirectional cascade hack: - // http://opensource.atlassian.com/projects/hibernate/browse/HHH-1054 - if(this.markedObj == newMarkedObject) return; - if (markedObj != null) { - markedObj.markers.remove(this); - } - if (newMarkedObject!= null) { - newMarkedObject.markers.add(this); - } this.markedObj = newMarkedObject; } @@ -93,5 +108,27 @@ public class Marker extends VersionableEntity { public void setFlag(boolean flag){ this.flag = flag; } + + +//****************** CLONE ************************************************/ + + /* (non-Javadoc) + * @see java.lang.Object#clone() + */ + public Object clone() throws CloneNotSupportedException{ + Marker result = (Marker)super.clone(); + //no changes to: type, flag + return result; + } + + /** + * Clones this marker and sets the clones marked object to 'markedObject' + * @see java.lang.Object#clone() + */ + public Marker clone(AnnotatableEntity markedObject) throws CloneNotSupportedException{ + Marker result = (Marker)clone(); + result.setMarkedObj(markedObject); + return result; + } } \ No newline at end of file