merge 3.4.1 into trunk
[cdmlib.git] / cdmlib-model / src / main / java / eu / etaxonomy / cdm / hibernate / UUIDUserType.java
index 5afb989f7edf37e59fd64eb7ae9adbbec8a473a3..652cd648a622b91d67829e26012f91da66a72364 100644 (file)
@@ -17,35 +17,24 @@ import java.sql.Types;
 import java.util.UUID;\r
 \r
 import org.apache.log4j.Logger;\r
-import org.hibernate.Hibernate;\r
 import org.hibernate.HibernateException;\r
+import org.hibernate.engine.spi.SessionImplementor;\r
+import org.hibernate.type.StandardBasicTypes;\r
 import org.hibernate.usertype.UserType;\r
+import org.jadira.usertype.dateandtime.shared.spi.AbstractUserType;\r
 \r
 /**\r
  * @author a.mueller\r
  * @created 22.07.2008\r
- * @version 1.0\r
+ * @version 2.0\r
  */\r
-public class UUIDUserType implements UserType {\r
+public class UUIDUserType  extends AbstractUserType implements UserType {\r
+       static final long serialVersionUID = -3959049831344758708L;\r
+\r
        @SuppressWarnings("unused")\r
        private static final Logger logger = Logger.getLogger(UUIDUserType.class);\r
 \r
-       private static final int[] TYPES = { Types.VARCHAR };\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.hibernate.usertype.UserType#assemble(java.io.Serializable, java.lang.Object)\r
-        */\r
-       public Object assemble(Serializable cached, Object owner) throws HibernateException {\r
-               try {\r
-                       if(cached == null) {\r
-                               return null;\r
-                       } else {\r
-                           return UUID.fromString(cached.toString());\r
-                       }\r
-               } catch (IllegalArgumentException e) {\r
-                       throw new HibernateException(e);\r
-               }\r
-       }\r
+       private static final int[] SQL_TYPES = { Types.VARCHAR };\r
 \r
        /* (non-Javadoc)\r
         * @see org.hibernate.usertype.UserType#deepCopy(java.lang.Object)\r
@@ -76,33 +65,10 @@ public class UUIDUserType implements UserType {
                }\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see org.hibernate.usertype.UserType#equals(java.lang.Object, java.lang.Object)\r
-        */\r
-       public boolean equals(Object x, Object y) throws HibernateException {\r
-               return (x == y) || (x != null && y != null && (x.equals(y)));\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.hibernate.usertype.UserType#hashCode(java.lang.Object)\r
-        */\r
-       public int hashCode(Object x) throws HibernateException {\r
-               return x.hashCode();\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.hibernate.usertype.UserType#isMutable()\r
-        */\r
-       public boolean isMutable() {\r
-               return false;\r
-       }\r
-\r
-       /* (non-Javadoc)\r
-        * @see org.hibernate.usertype.UserType#nullSafeGet(java.sql.ResultSet, java.lang.String[], java.lang.Object)\r
-        */\r
-       public Object nullSafeGet(ResultSet resultSet, String[] names, Object o)\r
+       @Override\r
+       public UUID nullSafeGet(ResultSet rs, String[] names, SessionImplementor session, Object owner) \r
                        throws HibernateException, SQLException {\r
-        String val = (String) Hibernate.STRING.nullSafeGet(resultSet, names[0]);\r
+        String val = (String) StandardBasicTypes.STRING.nullSafeGet(rs, names, session, owner);\r
                \r
                if(val == null) {\r
                        return null;\r
@@ -116,38 +82,35 @@ public class UUIDUserType implements UserType {
                }\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see org.hibernate.usertype.UserType#nullSafeSet(java.sql.PreparedStatement, java.lang.Object, int)\r
-        */\r
-       public void nullSafeSet(PreparedStatement preparedStatement, Object o, int index)\r
+       @Override\r
+       public void nullSafeSet(PreparedStatement statement, Object value, int index, SessionImplementor session) \r
                        throws HibernateException, SQLException {\r
-               if (null == o) { \r
-            preparedStatement.setNull(index, Types.VARCHAR); \r
+               if (value == null) { \r
+//            statement.setNull(index, Types.VARCHAR); old version\r
+            StandardBasicTypes.STRING.nullSafeSet(statement, value, index, session);\r
         } else { \r
-               UUID uuid = (UUID)o;\r
-            preparedStatement.setString(index, uuid.toString()); \r
+               UUID uuid = (UUID)value;\r
+//            statement.setString(index, uuid.toString()); //old version\r
+            StandardBasicTypes.STRING.nullSafeSet(statement, uuid.toString(), index, session);\r
         }\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see org.hibernate.usertype.UserType#replace(java.lang.Object, java.lang.Object, java.lang.Object)\r
-        */\r
-       public Object replace(Object original, Object target, Object owner)\r
-                       throws HibernateException {\r
-               return original;\r
-       }\r
 \r
        /* (non-Javadoc)\r
-        * @see org.hibernate.usertype.UserType#returnedClass()\r
+        * @see org.jadira.usertype.dateandtime.shared.spi.AbstractSingleColumnUserType#returnedClass()\r
         */\r
+       @Override\r
        public Class returnedClass() {\r
                return UUID.class;\r
        }\r
 \r
-       /* (non-Javadoc)\r
-        * @see org.hibernate.usertype.UserType#sqlTypes()\r
-        */\r
+       @Override\r
        public int[] sqlTypes() {\r
-               return TYPES;\r
+               return SQL_TYPES;\r
        }\r
+\r
+       \r
+\r
+\r
+\r
 }\r