X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/17f0cc4b15eabb34717d24ef162171782c14679a..cd84b7b4fdd3757136f0c0fd87c3d402e69f8513:/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/AnnotationType.java diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/AnnotationType.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/AnnotationType.java index 870c283a1e..a68c732ad9 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/AnnotationType.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/common/AnnotationType.java @@ -10,6 +10,8 @@ package eu.etaxonomy.cdm.model.common; +import java.util.HashMap; +import java.util.Map; import java.util.UUID; import javax.persistence.Entity; @@ -20,40 +22,39 @@ import javax.xml.bind.annotation.XmlType; import org.apache.log4j.Logger; import org.hibernate.envers.Audited; +import org.hibernate.search.annotations.Indexed; /** * Annotation types ... * @author a.mueller - * @version 1.0 * @created 12-Nov-2008 15:37:33 */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "AnnotationType") @XmlRootElement(name = "AnnotationType") @Entity +@Indexed(index = "eu.etaxonomy.cdm.model.common.DefinedTermBase") @Audited public class AnnotationType extends DefinedTermBase { private static final long serialVersionUID = 49629121282854575L; @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(AnnotationType.class); - private static final UUID uuidTechnical = UUID.fromString("6a5f9ea4-1bdd-4906-89ad-6e669f982d69"); - private static final UUID uuidEditorial = UUID.fromString("34204192-b41d-4857-a1d4-28992bef2a2a"); - - private static AnnotationType TECHNICAL; - private static AnnotationType EDITORIAL; + protected static Map termMap = null; + private static final UUID uuidTechnical = UUID.fromString("6a5f9ea4-1bdd-4906-89ad-6e669f982d69"); + private static final UUID uuidEditorial = UUID.fromString("e780d5fd-abfc-4025-938a-46deb751d808"); + public static AnnotationType NewInstance(String term, String label, String labelAbbrev){ return new AnnotationType(term, label, labelAbbrev); } - /** - * Constructor - * @param term - * @param label - */ - public AnnotationType() { - super(); +//********************************** Constructor *******************************************************************/ + + //for hibernate use only + @Deprecated + protected AnnotationType() { + super(TermType.AnnotationType); } /** @@ -62,23 +63,41 @@ public class AnnotationType extends DefinedTermBase { * @param label */ protected AnnotationType(String term, String label, String labelAbbrev) { - super(term, label, labelAbbrev); + super(TermType.AnnotationType , term, label, labelAbbrev); } + +//************************** METHODS ******************************** + + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#resetTerms() + */ + @Override + public void resetTerms(){ + termMap = null; + } + + protected static AnnotationType getTermByUuid(UUID uuid){ + if (termMap == null){ + return null; //better return null then initialize the termMap in an unwanted way + } + return (AnnotationType)termMap.get(uuid); + } + + public static final AnnotationType TECHNICAL(){ - return AnnotationType.TECHNICAL; + return getTermByUuid(uuidTechnical); } public static final AnnotationType EDITORIAL(){ - return AnnotationType.EDITORIAL; + return getTermByUuid(uuidEditorial); } protected void setDefaultTerms(TermVocabulary termVocabulary) { - AnnotationType.TECHNICAL = termVocabulary.findTermByUuid(uuidTechnical); - AnnotationType.EDITORIAL = termVocabulary.findTermByUuid(uuidEditorial); - } - - public int compareTo(Object o) { - return 0; + termMap = new HashMap(); + for (AnnotationType term : termVocabulary.getTerms()){ + termMap.put(term.getUuid(), (AnnotationType)term); + } } + } \ No newline at end of file