From f3d5cdf3bc89ca7ce4acb74789cefc0c0cc40d30 Mon Sep 17 00:00:00 2001 From: Davide D'Alto Date: Fri, 15 May 2015 19:15:23 +0100 Subject: [PATCH] OGM-717 [CASSANDRA] Add classes to convert YesNoType and TrueFalseType OGM uses these types to convert a Boolean into a Character. Cassandra does not support the Character type. These new classes will save the values as String. --- .../type/impl/CassandraTrueFalseType.java | 36 +++++++++++++++++++ .../type/impl/CassandraYesNoType.java | 36 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 cassandra/src/main/java/org/hibernate/ogm/datastore/cassandra/type/impl/CassandraTrueFalseType.java create mode 100644 cassandra/src/main/java/org/hibernate/ogm/datastore/cassandra/type/impl/CassandraYesNoType.java diff --git a/cassandra/src/main/java/org/hibernate/ogm/datastore/cassandra/type/impl/CassandraTrueFalseType.java b/cassandra/src/main/java/org/hibernate/ogm/datastore/cassandra/type/impl/CassandraTrueFalseType.java new file mode 100644 index 0000000000..25bf834c70 --- /dev/null +++ b/cassandra/src/main/java/org/hibernate/ogm/datastore/cassandra/type/impl/CassandraTrueFalseType.java @@ -0,0 +1,36 @@ +/* + * Hibernate OGM, Domain model persistence for NoSQL datastores + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.ogm.datastore.cassandra.type.impl; + +import org.hibernate.MappingException; +import org.hibernate.engine.spi.Mapping; +import org.hibernate.ogm.type.descriptor.impl.StringMappedGridTypeDescriptor; +import org.hibernate.ogm.type.impl.AbstractGenericBasicType; + +/** + * Maps {@link Boolean} to {@code T} or {@code F} strings. + * + * @author Davide D'Alto + */ +public class CassandraTrueFalseType extends AbstractGenericBasicType { + + public static final CassandraTrueFalseType INSTANCE = new CassandraTrueFalseType(); + + public CassandraTrueFalseType() { + super( StringMappedGridTypeDescriptor.INSTANCE, org.hibernate.type.TrueFalseType.INSTANCE.getJavaTypeDescriptor() ); + } + + @Override + public int getColumnSpan(Mapping mapping) throws MappingException { + return 1; + } + + @Override + public String getName() { + return "true_false"; + } +} diff --git a/cassandra/src/main/java/org/hibernate/ogm/datastore/cassandra/type/impl/CassandraYesNoType.java b/cassandra/src/main/java/org/hibernate/ogm/datastore/cassandra/type/impl/CassandraYesNoType.java new file mode 100644 index 0000000000..f62426896a --- /dev/null +++ b/cassandra/src/main/java/org/hibernate/ogm/datastore/cassandra/type/impl/CassandraYesNoType.java @@ -0,0 +1,36 @@ +/* + * Hibernate OGM, Domain model persistence for NoSQL datastores + * + * License: GNU Lesser General Public License (LGPL), version 2.1 or later + * See the lgpl.txt file in the root directory or . + */ +package org.hibernate.ogm.datastore.cassandra.type.impl; + +import org.hibernate.MappingException; +import org.hibernate.engine.spi.Mapping; +import org.hibernate.ogm.type.descriptor.impl.StringMappedGridTypeDescriptor; +import org.hibernate.ogm.type.impl.AbstractGenericBasicType; + +/** + * Maps {@link Boolean} to {@code Y} or {@code N} strings. + * + * @author Davide D'Alto + */ +public class CassandraYesNoType extends AbstractGenericBasicType { + + public static final CassandraYesNoType INSTANCE = new CassandraYesNoType(); + + public CassandraYesNoType() { + super( StringMappedGridTypeDescriptor.INSTANCE, org.hibernate.type.YesNoType.INSTANCE.getJavaTypeDescriptor() ); + } + + @Override + public int getColumnSpan(Mapping mapping) throws MappingException { + return 1; + } + + @Override + public String getName() { + return "yes_no"; + } +}