X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/blobdiff_plain/b484eedb31be1d4b5e73b5b31d68c2d53ae34590..69f27baabbe3ab6fbf27ad91d05cbb5688d9d050:/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/location/ReferenceSystem.java diff --git a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/location/ReferenceSystem.java b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/location/ReferenceSystem.java index fbf5766eb5..04411b4dde 100644 --- a/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/location/ReferenceSystem.java +++ b/cdmlib-model/src/main/java/eu/etaxonomy/cdm/model/location/ReferenceSystem.java @@ -10,41 +10,125 @@ package eu.etaxonomy.cdm.model.location; -import eu.etaxonomy.cdm.model.common.DefinedTermBase; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import javax.persistence.Entity; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + import org.apache.log4j.Logger; -import javax.persistence.*; +import org.hibernate.envers.Audited; +import org.hibernate.search.annotations.Indexed; + +import eu.etaxonomy.cdm.model.common.DefaultTermInitializer; +import eu.etaxonomy.cdm.model.common.DefinedTermBase; +import eu.etaxonomy.cdm.model.common.TermType; +import eu.etaxonomy.cdm.model.common.TermVocabulary; /** * Reference systems for coordinates also according to OGC (Open Geographical - * Consosrtium) The list should be extensible at runtime through configuration. + * Consortium) The list should be extensible at runtime through configuration. * This needs to be investigated. * @author m.doering * @version 1.0 * @created 08-Nov-2007 13:06:49 */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "ReferenceSystem") +@XmlRootElement(name = "ReferenceSystem") @Entity -public class ReferenceSystem extends DefinedTermBase { - static Logger logger = Logger.getLogger(ReferenceSystem.class); +@Indexed(index = "eu.etaxonomy.cdm.model.common.DefinedTermBase") +@Audited +public class ReferenceSystem extends DefinedTermBase { + private static final long serialVersionUID = -9060720949197749047L; + + @SuppressWarnings("unused") + private static final Logger logger = Logger.getLogger(ReferenceSystem.class); + + protected static Map termMap = null; + + private static final UUID uuidWGS84 = UUID.fromString("63f4dd55-00fa-49e7-96fd-2b7059a1c1ee"); + private static final UUID uuidGoogleEarth = UUID.fromString("1bb67042-2814-4b09-9e76-c8c1e68aa281"); + private static final UUID uuidGazetteer = UUID.fromString("e35f1d1c-9347-4190-bd47-a3b00632fcf3"); + private static final UUID uuidMap = UUID.fromString("6d72d148-458a-42eb-97b0-9824abcffc91"); + + /** + * Factory method + * @return + */ + public static ReferenceSystem NewInstance(){ + return new ReferenceSystem(); + } /** * Factory method * @return */ - public static ReferenceSystem NewInstance(String term, String label){ - return new ReferenceSystem(term, label); + public static ReferenceSystem NewInstance(String term, String label, String labelAbbrev){ + return new ReferenceSystem(term, label, labelAbbrev); + } + +//********************************** Constructor *******************************************************************/ + + //for hibernate use only + @Deprecated + protected ReferenceSystem() { + super(TermType.ReferenceSystem); } /** * Constructor */ - public ReferenceSystem(String term, String label) { - super(term, label); + private ReferenceSystem(String term, String label, String labelAbbrev) { + super(TermType.ReferenceSystem, term, label, labelAbbrev); + } + +// ************************************* MTEHODS ***************************************************/ + + /* (non-Javadoc) + * @see eu.etaxonomy.cdm.model.common.DefinedTermBase#resetTerms() + */ + @Override + public void resetTerms(){ + termMap = null; } + + protected static ReferenceSystem getTermByUuid(UUID uuid){ + if (termMap == null){ + DefaultTermInitializer vocabularyStore = new DefaultTermInitializer(); + vocabularyStore.initialize(); + } + return (ReferenceSystem)termMap.get(uuid); + } + public static final ReferenceSystem WGS84(){ - logger.warn("not yet implemented"); - return null; + return getTermByUuid(uuidWGS84); + } + + public static final ReferenceSystem GOOGLE_EARTH(){ + return getTermByUuid(uuidGoogleEarth); + } + + public static final ReferenceSystem GAZETTEER(){ + return getTermByUuid(uuidGazetteer); + } + + public static final ReferenceSystem MAP(){ + return getTermByUuid(uuidMap); + } + + @Override + protected void setDefaultTerms(TermVocabulary termVocabulary){ + termMap = new HashMap(); + for (ReferenceSystem term : termVocabulary.getTerms()){ + termMap.put(term.getUuid(), term); + } } } \ No newline at end of file