Extension bidirectional
authorAndreas Müller <a.mueller@bgbm.org>
Tue, 9 Jun 2009 11:30:08 +0000 (11:30 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Tue, 9 Jun 2009 11:30:08 +0000 (11:30 +0000)
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/Extension.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/IdentifiableEntity.java
cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/reference/StrictReferenceBase.java

index 0b49775085b6b61a00da3ef13113901e3052b212..d4015064d05237440e1602324d8c30e6a51d5413 100644 (file)
@@ -72,17 +72,12 @@ public class Extension extends VersionableEntity implements Cloneable {
        public static Extension NewInstance(){
                return new Extension();
        }
-
-       public static Extension NewInstance(IdentifiableEntity<?> extendedObject, String value){
-               Extension extension = new Extension();
-               extension.setExtendedObj(extendedObject);
-               extension.setValue(value);
-               return extension;
-       }
        
        public static Extension NewInstance(IdentifiableEntity<?> extendedObject, String value, ExtensionType extensionType){
-               Extension extension = NewInstance(extendedObject, value);
+               Extension extension = new Extension();
+               extension.setValue(value);
                extension.setType(extensionType);
+               extendedObject.addExtension(extension);
                return extension;
        }
        
@@ -96,7 +91,8 @@ public class Extension extends VersionableEntity implements Cloneable {
        public IdentifiableEntity getExtendedObj() {
                return extendedObj;
        }
-       public void setExtendedObj(IdentifiableEntity extendedObj) {
+       //for hibernate use only
+       protected void setExtendedObj(IdentifiableEntity extendedObj) {
                this.extendedObj = extendedObj;
        }
 
index 66edbbf13c7e23522d31837d38f8f46b5e496ef6..fdfa98b9247f190c2fb201fb4c04ad2cec833068 100644 (file)
@@ -255,18 +255,28 @@ implements ISourceable, IIdentifiableEntity, Comparable<IdentifiableEntity> {
        public Set<Extension> getExtensions(){
                return this.extensions;
        }
+
+       public void addExtension(String value, ExtensionType extensionType){
+               Extension.NewInstance(this, value, extensionType);
+       }
        
        /* (non-Javadoc)
         * @see eu.etaxonomy.cdm.model.common.IIdentifiableEntity#addExtension(eu.etaxonomy.cdm.model.common.Extension)
         */
        public void addExtension(Extension extension){
-               this.extensions.add(extension);
+               if (extension != null){
+                       extension.setExtendedObj(this);
+                       this.extensions.add(extension);
+               }
        }
        /* (non-Javadoc)
         * @see eu.etaxonomy.cdm.model.common.IIdentifiableEntity#removeExtension(eu.etaxonomy.cdm.model.common.Extension)
         */
        public void removeExtension(Extension extension){
-               this.extensions.remove(extension);
+               if (extension != null){
+                       extension.setExtendedObj(null);
+                       this.extensions.remove(extension);
+               }
        }
 
        
index 4707d306a8334ce9117e52101c003dfb49dcdd35..802c9ff111c01ce455d245196d4c0469cea65816 100644 (file)
@@ -65,8 +65,9 @@ public abstract class StrictReferenceBase<S extends IReferenceBaseCacheStrategy>
        
        //Title of the reference
        @XmlElement(name ="Title" )
-       @Column(length=4096, name="title")
-       @Lob
+//     @Column(length=4096, name="title")
+//     @Lob
+       @Column(length=256, name="title")  //FIXME H2 has problem with clob
        @Field(index=Index.TOKENIZED)
        private String title;