/**\r
* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
* http://www.e-taxonomy.eu\r
-* \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
import org.hibernate.usertype.UserType;\r
import org.jadira.usertype.dateandtime.shared.spi.AbstractUserType;\r
\r
-import eu.etaxonomy.cdm.model.common.IKeyTerm;\r
import eu.etaxonomy.cdm.model.common.OriginalSourceType;\r
-import eu.etaxonomy.cdm.model.common.TermType;\r
+import eu.etaxonomy.cdm.model.media.ExternalLinkType;\r
+import eu.etaxonomy.cdm.model.metadata.CdmMetaDataPropertyName;\r
import eu.etaxonomy.cdm.model.molecular.SequenceDirection;\r
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
import eu.etaxonomy.cdm.model.name.RankClass;\r
+import eu.etaxonomy.cdm.model.name.RegistrationStatus;\r
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;\r
+import eu.etaxonomy.cdm.model.reference.AuthorityType;\r
import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
+import eu.etaxonomy.cdm.model.term.IKeyTerm;\r
+import eu.etaxonomy.cdm.model.term.TermType;\r
\r
/**\r
* User type for IEnumTerm\r
* Partly copied from http://stackoverflow.com/questions/9839553/hibernate-map-enum-to-varchar\r
* @author a.mueller\r
- * @created 15-07-2013\r
+ * @since 15-07-2013\r
*/\r
public class EnumUserType<E extends Enum<E>> extends AbstractUserType implements UserType, ParameterizedType {\r
private static final long serialVersionUID = 4641078915907621907L;\r
@SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(EnumUserType.class);\r
- \r
- private Class<E> clazz = null; \r
- \r
- public EnumUserType(){};\r
- \r
- public EnumUserType(Class<E> c) { \r
- this.clazz = c; \r
- } \r
- \r
+\r
+ private Class<E> clazz = null;\r
+\r
+ public EnumUserType(){}\r
+\r
+ public EnumUserType(Class<E> c) {\r
+ this.clazz = c;\r
+ }\r
+\r
\r
@Override\r
@SuppressWarnings("unchecked")\r
throw new RuntimeException(e);\r
}\r
}\r
- \r
+\r
private static final int[] SQL_TYPES = { Types.VARCHAR };\r
\r
\r
}\r
\r
@Override\r
- public IKeyTerm nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner) \r
+ public IKeyTerm nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner)\r
throws HibernateException, SQLException {\r
String val = (String) StandardBasicTypes.STRING.nullSafeGet(rs, names, session, owner);\r
- \r
+\r
if(val == null) {\r
return null;\r
} else {\r
- // TermType\r
- if (clazz.equals(TermType.class)){\r
- return TermType.getByKey(val);\r
- //Reference Type\r
- }else if (clazz.equals(ReferenceType.class)){\r
- return ReferenceType.getByKey(val);\r
- //OriginalSourceType\r
- }else if (clazz.equals(OriginalSourceType.class)){\r
- return OriginalSourceType.getByKey(val);\r
- //NomenclaturalCode\r
- }else if (clazz.equals(NomenclaturalCode.class)){\r
- return NomenclaturalCode.getByKey(val);\r
- //RankClass\r
- }else if (clazz.equals(RankClass.class)){\r
- return RankClass.getByKey(val);\r
- //SpecimenOrObservationType\r
- }else if (clazz.equals(SpecimenOrObservationType.class)){\r
- return SpecimenOrObservationType.getByKey(val);\r
- //SequenceDirection\r
- }else if (clazz.equals(SequenceDirection.class)){\r
- return SequenceDirection.getByKey(val);\r
- }else{\r
- throw new IllegalArgumentException(String.format("EnumType %s not supported by %s.", clazz.getSimpleName(), EnumUserType.class.getSimpleName()));\r
- }\r
+\r
+ return getTerm(clazz, val);\r
}\r
}\r
\r
+ /**\r
+ * @param val\r
+ * @return\r
+ */\r
+ public static <E extends Enum<E>> IKeyTerm getTerm(Class<E> clazz, String val) {\r
+ // TermType\r
+ if (clazz.equals(TermType.class)){\r
+ return TermType.getByKey(val);\r
+ //Reference Type\r
+ }else if (clazz.equals(ReferenceType.class)){\r
+ return ReferenceType.getByKey(val);\r
+ //OriginalSourceType\r
+ }else if (clazz.equals(OriginalSourceType.class)){\r
+ return OriginalSourceType.getByKey(val);\r
+ //NomenclaturalCode\r
+ }else if (clazz.equals(NomenclaturalCode.class)){\r
+ return NomenclaturalCode.getByKey(val);\r
+ //RankClass\r
+ }else if (clazz.equals(RankClass.class)){\r
+ return RankClass.getByKey(val);\r
+ //SpecimenOrObservationType\r
+ }else if (clazz.equals(SpecimenOrObservationType.class)){\r
+ return SpecimenOrObservationType.getByKey(val);\r
+ //SequenceDirection\r
+ }else if (clazz.equals(SequenceDirection.class)){\r
+ return SequenceDirection.getByKey(val);\r
+ //RegistrationStatus\r
+ }else if (clazz.equals(RegistrationStatus.class)){\r
+ return RegistrationStatus.getByKey(val);\r
+ //CdmMetaDataPropertyName\r
+ }else if (clazz.equals(CdmMetaDataPropertyName.class)){\r
+ return CdmMetaDataPropertyName.getByKey(val);\r
+ //EntityAuthority\r
+ }else if (clazz.equals(AuthorityType.class)){\r
+ return AuthorityType.getByKey(val);\r
+ //ExternalLinkType\r
+ }else if (clazz.equals(ExternalLinkType.class)){\r
+ return ExternalLinkType.getByKey(val);\r
+ }else{\r
+ throw new IllegalArgumentException(String.format("EnumType %s not supported by %s.", clazz.getSimpleName(), EnumUserType.class.getSimpleName()));\r
+ }\r
+ }\r
+\r
@Override\r
- public void nullSafeSet(PreparedStatement statement, Object value, int index, SessionImplementor session) \r
+ public void nullSafeSet(PreparedStatement statement, Object value, int index, SessionImplementor session)\r
throws HibernateException, SQLException {\r
- if (value == null) { \r
+ if (value == null) {\r
StandardBasicTypes.STRING.nullSafeSet(statement, value, index, session);\r
- } else { \r
+ } else {\r
IKeyTerm term = (IKeyTerm)value;\r
StandardBasicTypes.STRING.nullSafeSet(statement, term.getKey(), index, session);\r
}\r