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
})
@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{
@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")
@XmlSchemaType(name = "IDREF")
@ManyToOne(fetch = FetchType.LAZY)
@Cascade(CascadeType.SAVE_UPDATE)
+ @IndexedEmbedded
private TaxonNameBase storedUnder;
@XmlElement(name = "DerivedFrom")
@XmlSchemaType(name = "IDREF")
@ManyToOne(fetch = FetchType.LAZY)
@Cascade(CascadeType.SAVE_UPDATE)
+ @IndexedEmbedded(depth = 4)
private DerivationEvent derivationEvent;
/**
*/
protected DerivedUnitBase(GatheringEvent gatheringEvent) {
this(new FieldObservation());
- FieldObservation field = (FieldObservation) this.getOriginalUnit();
+ FieldObservation field = (FieldObservation)this.getOriginalUnit();
field.setGatheringEvent(gatheringEvent);
}
}
this.derivationEvent = derivedFrom;
if (derivedFrom != null){
- derivedFrom.getDerivatives().add(this);
+ derivedFrom.addDerivative(this);
}
}
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;
}
return storedUnder;
}
- //*********** CLONE **********************************/
+//*********** CLONE **********************************/
/**
* Clones <i>this</i> derivedUnitBase. This is a shortcut that enables to