-/**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-
-package eu.etaxonomy.cdm.model.occurrence;
-
-import java.util.UUID;
-
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
-
-import org.apache.log4j.Logger;
-
-import javax.persistence.*;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-
-/**
- * http://rs.tdwg.org/ontology/voc/Collection.rdf#SpecimenPreservationMethodTypeTerm
- * @author m.doering
- * @version 1.0
- * @created 08-Nov-2007 13:06:44
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlRootElement(name = "PreservationMethod")
-@Entity
-//@Audited
-public class PreservationMethod extends DefinedTermBase<PreservationMethod> {
- private static final Logger logger = Logger.getLogger(PreservationMethod.class);
-
- /**
- * Factory method
- * @return
- */
- public static PreservationMethod NewInstance(){
- return new PreservationMethod();
- }
-
- /**
- * Constructor
- */
- public PreservationMethod() {
- super();
- }
-
- /**
- * Factory method
- * @return
- */
- public static PreservationMethod NewInstance(String term, String label, String labelAbbrev) {
- return new PreservationMethod(term, label, labelAbbrev);
- }
-
- /**
- * Constructor
- */
- protected PreservationMethod(String term, String label, String labelAbbrev) {
- super(term, label, labelAbbrev);
- }
-
- @Override
- protected void setDefaultTerms(TermVocabulary<PreservationMethod> termVocabulary) {
- // TODO Auto-generated method stub
-
- }
-
-}
\ No newline at end of file
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+package eu.etaxonomy.cdm.model.occurrence;\r
+\r
+import javax.persistence.Entity;\r
+import javax.persistence.FetchType;\r
+import javax.persistence.ManyToOne;\r
+import javax.xml.bind.annotation.XmlAccessType;\r
+import javax.xml.bind.annotation.XmlAccessorType;\r
+import javax.xml.bind.annotation.XmlElement;\r
+import javax.xml.bind.annotation.XmlIDREF;\r
+import javax.xml.bind.annotation.XmlRootElement;\r
+import javax.xml.bind.annotation.XmlSchemaType;\r
+import javax.xml.bind.annotation.XmlType;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.hibernate.envers.Audited;\r
+import org.hibernate.search.annotations.Analyze;\r
+import org.hibernate.search.annotations.Field;\r
+import org.hibernate.search.annotations.IndexedEmbedded;\r
+import org.hibernate.search.annotations.NumericField;\r
+\r
+import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
+import eu.etaxonomy.cdm.model.common.EventBase;\r
+import eu.etaxonomy.cdm.model.common.TermType;\r
+import eu.etaxonomy.cdm.model.molecular.Cloning;\r
+\r
+/**\r
+ * This class is a specialization of {@link MaterialOrMethodEvent} which allows to\r
+ * specifically store temperature and XXX which are common parameters for preparation.\r
+ * \r
+ * {@link #getMaterialMethodTerm() Defined methods} taken to describe a Preservation Method\r
+ * should be taken from a vocabulary of type {@link TermType#PreservationMethod}\r
+ * \r
+ * http://rs.tdwg.org/ontology/voc/Collection.rdf#SpecimenPreservationMethodTypeTerm\r
+ *\r
+ * @author a.mueller\r
+ * @created 2013-09-11\r
+ *\r
+ */\r
+@XmlAccessorType(XmlAccessType.FIELD)\r
+@XmlType(name = "PreservationMethod", propOrder = {\r
+ "medium",\r
+ "temperature"\r
+})\r
+@XmlRootElement(name = "PreservationMethod")\r
+@Entity\r
+//TODO @Indexed(index = "eu.etaxonomy.cdm.model.common.DefinedTermBase")\r
+@Audited\r
+public class PreservationMethod extends MaterialOrMethodEvent implements Cloneable {\r
+ private static final long serialVersionUID = 2366116167028862401L;\r
+ @SuppressWarnings("unused")\r
+ private static final Logger logger = Logger.getLogger(PreservationMethod.class);\r
+\r
+ @XmlElement(name = "Medium")\r
+ @XmlIDREF\r
+ @XmlSchemaType(name = "IDREF")\r
+ @ManyToOne(fetch = FetchType.LAZY)\r
+ @IndexedEmbedded // no depth for terms\r
+ private DefinedTerm medium;\r
+ \r
+ @XmlElement(name = "Temperature")\r
+ @Field(analyze = Analyze.NO)\r
+ @NumericField\r
+ private Double temperature;\r
+ \r
+ \r
+ // ******************** FACTORY METHOD ******************/ \r
+ \r
+ public static PreservationMethod NewInstance(){\r
+ return new PreservationMethod();\r
+ }\r
+ \r
+ public static PreservationMethod NewInstance(DefinedTerm methodTerm, String methodText){\r
+ return new PreservationMethod(methodTerm, methodText, null, null);\r
+ }\r
+\r
+ public static PreservationMethod NewInstance(DefinedTerm methodTerm, String methodText, DefinedTerm preservationMedium, Double temperature){\r
+ return new PreservationMethod(methodTerm, methodText, preservationMedium, temperature);\r
+ }\r
+\r
+ \r
+ // ********************* CONSTRUCTOR ********************/\r
+ \r
+ //for hibernate use only\r
+ private PreservationMethod(){};\r
+ \r
+ private PreservationMethod(DefinedTerm methodTerm, String methodText, DefinedTerm medium, Double temperature){\r
+ super(methodTerm, methodText);\r
+ this.medium = medium;\r
+ this.temperature = temperature;\r
+ }\r
+ \r
+ // ********************* GETTER / SETTER ********************/\r
+\r
+ public DefinedTerm getMedium() {\r
+ return medium;\r
+ }\r
+\r
+\r
+ public void setMedium(DefinedTerm medium) {\r
+ this.medium = medium;\r
+ }\r
+\r
+\r
+ public Double getTemperature() {\r
+ return temperature;\r
+ }\r
+\r
+\r
+ public void setTemperature(Double temperature) {\r
+ this.temperature = temperature;\r
+ }\r
+ \r
+ // ********************* CLONE ********************/\r
+ /** \r
+ * Clones <i>this</i> {@link Cloning}. This is a shortcut that enables to create\r
+ * a new instance that differs only slightly from <i>this</i> cloning by\r
+ * modifying only some of the attributes.<BR><BR>\r
+ * \r
+ * @see EventBase#clone()\r
+ * @see java.lang.Object#clone()\r
+ */\r
+ @Override\r
+ public Object clone() {\r
+ PreservationMethod result = (PreservationMethod)super.clone();\r
+ \r
+ //don't change medium, temperature\r
+ return result;\r
+ }\r
+}\r