org.yestech.lib.hibernate.PersistentUUID Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of yeslib Show documentation
Show all versions of yeslib Show documentation
A collection of classes that can be used across yestech artifacts/components, but must not be dependant
on any yestech component. Most of the code is utility type code. When more than a few classes are
found to be in a package or the package start to handle more that a few reposibilities then a new
independant component is created and the existing code in yeslib is ported to the new component.
/*
* Copyright LGPL3
* YES Technology Association
* http://yestech.org
*
* http://www.opensource.org/licenses/lgpl-3.0.html
*/
package org.yestech.lib.hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Hibernate;
import org.hibernate.usertype.EnhancedUserType;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.UUID;
/**
* @author Artie Copeland
* @version $Revision: $
*/
public class PersistentUUID implements EnhancedUserType {
public final static PersistentUUID INSTANCE = new PersistentUUID();
public PersistentUUID() {
}
private static final int[] SQL_TYPES = new int[]
{
Types.VARCHAR,
};
@Override
public int[] sqlTypes() {
return SQL_TYPES;
}
@Override
public Class returnedClass() {
return UUID.class;
}
@Override
public boolean equals(Object x, Object y) throws HibernateException {
if (x == y) {
return true;
}
if (x == null || y == null) {
return false;
}
UUID uidx = (UUID) x;
UUID uidy = (UUID) y;
return uidx.equals(uidy);
}
@Override
public int hashCode(Object object) throws HibernateException {
return object.hashCode();
}
@Override
public Object nullSafeGet(ResultSet resultSet, String[] strings, Object object) throws HibernateException, SQLException {
return nullSafeGet(resultSet, strings[0]);
}
public Object nullSafeGet(ResultSet resultSet, String string) throws SQLException {
Object uuid = Hibernate.STRING.nullSafeGet(resultSet, string);
if (uuid == null) {
return null;
}
return UUID.fromString((String)uuid);
}
@Override
public void nullSafeSet(PreparedStatement preparedStatement, Object value, int index) throws HibernateException, SQLException {
if (value == null) {
Hibernate.STRING.nullSafeSet(preparedStatement, null, index);
} else {
Hibernate.STRING.nullSafeSet(preparedStatement, value.toString(), index);
}
}
@Override
public Object deepCopy(Object value) throws HibernateException {
if (value == null) {
return null;
}
return UUID.fromString(value.toString());
}
@Override
public boolean isMutable() {
return false;
}
@Override
public Serializable disassemble(Object value) throws HibernateException {
return (Serializable) value;
}
@Override
public Object assemble(Serializable cached, Object value) throws HibernateException {
return cached;
}
@Override
public Object replace(Object original, Object target, Object owner) throws HibernateException {
return original;
}
@Override
public String objectToSQLString(Object object) {
throw new UnsupportedOperationException();
}
@Override
public String toXMLString(Object object) {
return object.toString();
}
@Override
public Object fromXMLString(String string) {
return UUID.fromString(string);
}
}