javadoc
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / model / occurrence / SpecimenOrObservationBase.java
index 0cf91d451996a80f3bbb90d32ff858672d71d1b0..a0a7dcb2fd39752d7f6bb6f79e1e6e745b08a71b 100644 (file)
@@ -16,7 +16,6 @@ import java.util.Set;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
-import javax.persistence.Enumerated;
 import javax.persistence.FetchType;
 import javax.persistence.Inheritance;
 import javax.persistence.InheritanceType;
@@ -43,6 +42,7 @@ import org.hibernate.annotations.Cascade;
 import org.hibernate.annotations.CascadeType;
 import org.hibernate.annotations.Index;
 import org.hibernate.annotations.Table;
+import org.hibernate.annotations.Type;
 import org.hibernate.envers.Audited;
 import org.hibernate.search.annotations.Analyze;
 import org.hibernate.search.annotations.ContainedIn;
@@ -57,6 +57,7 @@ import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.MultilanguageText;
+import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
@@ -103,7 +104,9 @@ public abstract class SpecimenOrObservationBase<S extends IIdentifiableEntityCac
        @XmlAttribute(name ="RecordBasis")
        @Column(name="recordBasis")
        @NotNull
-       @Enumerated  //TODO use UserType 
+    @Type(type = "eu.etaxonomy.cdm.hibernate.EnumUserType",
+       parameters = {@org.hibernate.annotations.Parameter(name  = "enumClass", value = "eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType")}
+    )
        private SpecimenOrObservationType recordBasis;
 
        
@@ -141,6 +144,7 @@ public abstract class SpecimenOrObservationBase<S extends IIdentifiableEntityCac
         * Example: fruits, seeds, tissue, gDNA, leaves
         * 
         * @see ABCD: DataSets/DataSet/Units/Unit/KindOfUnit
+        * @see TermType#KindOfUnit
         */
        @XmlElement(name = "KindOfUnit")
     @XmlIDREF
@@ -180,14 +184,15 @@ public abstract class SpecimenOrObservationBase<S extends IIdentifiableEntityCac
     private boolean publish = true;
 
 
-// ********************** CONSTRUCTOR ******************************/
-       
-    //Constructor for hibernate use only
-       protected SpecimenOrObservationBase(){super();}
+//********************************** CONSTRUCTOR *********************************/    
+
+       //for hibernate use only
+       @Deprecated
+       protected SpecimenOrObservationBase(){super();}
 
-       public SpecimenOrObservationBase(SpecimenOrObservationType recordBasis) {
+       protected SpecimenOrObservationBase(SpecimenOrObservationType recordBasis) {
                super();
-               assert recordBasis != null : "RecordBasis must not be null";
+               if (recordBasis == null){ throw new IllegalArgumentException("RecordBasis must not be null");}
                this.recordBasis = recordBasis;
        }