| 1 | /** |
|---|
| 2 | * Copyright (C) 2007 EDIT |
|---|
| 3 | * European Distributed Institute of Taxonomy |
|---|
| 4 | * http://www.e-taxonomy.eu |
|---|
| 5 | * |
|---|
| 6 | * The contents of this file are subject to the Mozilla Public License Version 1.1 |
|---|
| 7 | * See LICENSE.TXT at the top of this package for the full license terms. |
|---|
| 8 | */ |
|---|
| 9 | |
|---|
| 10 | package eu.etaxonomy.cdm.model.common; |
|---|
| 11 | |
|---|
| 12 | |
|---|
| 13 | import java.util.HashMap; |
|---|
| 14 | import java.util.Map; |
|---|
| 15 | import java.util.UUID; |
|---|
| 16 | |
|---|
| 17 | import javax.persistence.Entity; |
|---|
| 18 | import javax.xml.bind.annotation.XmlAccessType; |
|---|
| 19 | import javax.xml.bind.annotation.XmlAccessorType; |
|---|
| 20 | import javax.xml.bind.annotation.XmlRootElement; |
|---|
| 21 | import javax.xml.bind.annotation.XmlType; |
|---|
| 22 | |
|---|
| 23 | import org.apache.log4j.Logger; |
|---|
| 24 | import org.hibernate.envers.Audited; |
|---|
| 25 | import org.hibernate.search.annotations.Indexed; |
|---|
| 26 | import org.springframework.util.Assert; |
|---|
| 27 | |
|---|
| 28 | /** |
|---|
| 29 | * Annotation types ... |
|---|
| 30 | * @author a.mueller |
|---|
| 31 | * @version 1.0 |
|---|
| 32 | * @created 12-Nov-2008 15:37:33 |
|---|
| 33 | */ |
|---|
| 34 | @XmlAccessorType(XmlAccessType.FIELD) |
|---|
| 35 | @XmlType(name = "AnnotationType") |
|---|
| 36 | @XmlRootElement(name = "AnnotationType") |
|---|
| 37 | @Entity |
|---|
| 38 | @Indexed(index = "eu.etaxonomy.cdm.model.common.DefinedTermBase") |
|---|
| 39 | @Audited |
|---|
| 40 | public class AnnotationType extends DefinedTermBase<AnnotationType> { |
|---|
| 41 | private static final long serialVersionUID = 49629121282854575L; |
|---|
| 42 | @SuppressWarnings("unused") |
|---|
| 43 | private static final Logger logger = Logger.getLogger(AnnotationType.class); |
|---|
| 44 | |
|---|
| 45 | protected static Map<UUID, AnnotationType> termMap = null; |
|---|
| 46 | |
|---|
| 47 | private static final UUID uuidTechnical = UUID.fromString("6a5f9ea4-1bdd-4906-89ad-6e669f982d69"); |
|---|
| 48 | private static final UUID uuidEditorial = UUID.fromString("e780d5fd-abfc-4025-938a-46deb751d808"); |
|---|
| 49 | |
|---|
| 50 | public static AnnotationType NewInstance(String term, String label, String labelAbbrev){ |
|---|
| 51 | return new AnnotationType(term, label, labelAbbrev); |
|---|
| 52 | } |
|---|
| 53 | |
|---|
| 54 | /** |
|---|
| 55 | * Constructor |
|---|
| 56 | * @param term |
|---|
| 57 | * @param label |
|---|
| 58 | */ |
|---|
| 59 | public AnnotationType() { |
|---|
| 60 | } |
|---|
| 61 | |
|---|
| 62 | /** |
|---|
| 63 | * Constructor |
|---|
| 64 | * @param term |
|---|
| 65 | * @param label |
|---|
| 66 | */ |
|---|
| 67 | protected AnnotationType(String term, String label, String labelAbbrev) { |
|---|
| 68 | super(term, label, labelAbbrev); |
|---|
| 69 | } |
|---|
| 70 | |
|---|
| 71 | |
|---|
| 72 | //************************** METHODS ******************************** |
|---|
| 73 | |
|---|
| 74 | /* (non-Javadoc) |
|---|
| 75 | * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#resetTerms() |
|---|
| 76 | */ |
|---|
| 77 | @Override |
|---|
| 78 | public void resetTerms(){ |
|---|
| 79 | termMap = null; |
|---|
| 80 | } |
|---|
| 81 | |
|---|
| 82 | protected static AnnotationType getTermByUuid(UUID uuid){ |
|---|
| 83 | if (termMap == null){ |
|---|
| 84 | return null; //better return null then initialize the termMap in an unwanted way |
|---|
| 85 | } |
|---|
| 86 | return (AnnotationType)termMap.get(uuid); |
|---|
| 87 | } |
|---|
| 88 | |
|---|
| 89 | |
|---|
| 90 | public static final AnnotationType TECHNICAL(){ |
|---|
| 91 | return getTermByUuid(uuidTechnical); |
|---|
| 92 | } |
|---|
| 93 | |
|---|
| 94 | public static final AnnotationType EDITORIAL(){ |
|---|
| 95 | return getTermByUuid(uuidEditorial); |
|---|
| 96 | } |
|---|
| 97 | |
|---|
| 98 | protected void setDefaultTerms(TermVocabulary<AnnotationType> termVocabulary) { |
|---|
| 99 | termMap = new HashMap<UUID, AnnotationType>(); |
|---|
| 100 | for (AnnotationType term : termVocabulary.getTerms()){ |
|---|
| 101 | termMap.put(term.getUuid(), (AnnotationType)term); |
|---|
| 102 | } |
|---|
| 103 | } |
|---|
| 104 | |
|---|
| 105 | } |
|---|