removed abstract method getGatheringEvent which was not implemented in DerivedUnitBase
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / occurrence / DerivedUnitBase.java
index ce07c5fd4799a0decb5f473d1bc533627aaf328e..3a352f9d62f023a1a1adf4ef4a1673465892db6c 100644 (file)
@@ -26,9 +26,15 @@ import javax.xml.bind.annotation.XmlType;
 import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
 import org.hibernate.envers.Audited;
+import org.hibernate.search.annotations.Field;
+import org.hibernate.search.annotations.Index;
+import org.hibernate.search.annotations.Indexed;
+import org.hibernate.search.annotations.IndexedEmbedded;
+import org.hibernate.validator.constraints.Length;
 
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
+import eu.etaxonomy.cdm.validation.annotation.NullOrNotEmpty;
 
 /**
  * http://www.bgbm.org/biodivinf/docs/CollectionModel/ReprintTNR.pdf
@@ -50,6 +56,7 @@ import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
 })
 @XmlRootElement(name = "DerivedUnitBase")
 @Entity
+@Indexed(index = "eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase")
 @Audited
 public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy> extends SpecimenOrObservationBase<S> implements Cloneable{
 
@@ -58,15 +65,25 @@ public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy
        @XmlSchemaType(name = "IDREF")
        @ManyToOne(fetch = FetchType.LAZY)
        @Cascade(CascadeType.SAVE_UPDATE)
+       @IndexedEmbedded
        private Collection collection;
 
        @XmlElement(name = "CatalogNumber")
+       @Field(index=Index.UN_TOKENIZED)
+       @NullOrNotEmpty
+       @Length(max = 255)
        private String catalogNumber;
        
        @XmlElement(name = "AccessionNumber")
+       @Field(index=Index.UN_TOKENIZED)
+       @NullOrNotEmpty
+       @Length(max = 255)
        private String accessionNumber;
        
        @XmlElement(name = "CollectorsNumber")
+       @Field(index=Index.UN_TOKENIZED)
+       @NullOrNotEmpty
+       @Length(max = 255)
        private String collectorsNumber;
        
        @XmlElement(name = "StoredUnder")
@@ -74,6 +91,7 @@ public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy
        @XmlSchemaType(name = "IDREF")
        @ManyToOne(fetch = FetchType.LAZY)
        @Cascade(CascadeType.SAVE_UPDATE)
+       @IndexedEmbedded
        private TaxonNameBase storedUnder;
        
        @XmlElement(name = "DerivedFrom")
@@ -81,6 +99,7 @@ public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy
        @XmlSchemaType(name = "IDREF")
        @ManyToOne(fetch = FetchType.LAZY)
        @Cascade(CascadeType.SAVE_UPDATE)
+       @IndexedEmbedded(depth = 4)
        private DerivationEvent derivationEvent;
 
        /**
@@ -109,7 +128,7 @@ public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy
         */
        protected DerivedUnitBase(GatheringEvent gatheringEvent) {
                this(new FieldObservation());
-               FieldObservation field = (FieldObservation) this.getOriginalUnit();
+               FieldObservation field = (FieldObservation)this.getOriginalUnit();
                field.setGatheringEvent(gatheringEvent);
        }
 
@@ -124,7 +143,7 @@ public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy
                }
                this.derivationEvent = derivedFrom;
                if (derivedFrom != null){
-                       derivedFrom.getDerivatives().add(this);
+                       derivedFrom.addDerivative(this);
                }
        }
        
@@ -133,14 +152,6 @@ public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy
                return this.getDerivedFrom().getOriginals();
        }
 
-       @Override
-       @Transient
-       public GatheringEvent getGatheringEvent() {
-               // FIXME: implement efficient way of getting original gathering event
-               // keep link to original gathering event for performance mainly.
-               return null;
-       }
-
        public Collection getCollection(){
                return this.collection;
        }
@@ -183,7 +194,7 @@ public abstract class DerivedUnitBase<S extends IIdentifiableEntityCacheStrategy
                return storedUnder;
        }
        
-       //*********** CLONE **********************************/ 
+//*********** CLONE **********************************/        
        
        /** 
         * Clones <i>this</i> derivedUnitBase. This is a shortcut that enables to