[hibernate-commits] Hibernate SVN: r15162 - core/branches/Branch_3_2/src/org/hibernate/type.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Sep 9 14:46:01 EDT 2008


Author: steve.ebersole at jboss.com
Date: 2008-09-09 14:46:01 -0400 (Tue, 09 Sep 2008)
New Revision: 15162

Added:
   core/branches/Branch_3_2/src/org/hibernate/type/NumericBooleanType.java
Log:
HHH-3471 : add NumericBooleanType

Added: core/branches/Branch_3_2/src/org/hibernate/type/NumericBooleanType.java
===================================================================
--- core/branches/Branch_3_2/src/org/hibernate/type/NumericBooleanType.java	                        (rev 0)
+++ core/branches/Branch_3_2/src/org/hibernate/type/NumericBooleanType.java	2008-09-09 18:46:01 UTC (rev 15162)
@@ -0,0 +1,94 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors.  All third-party contributions are
+ * distributed under license by Red Hat Middleware LLC.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ *
+ */
+package org.hibernate.type;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.PreparedStatement;
+import java.sql.Types;
+
+import org.hibernate.dialect.Dialect;
+
+/**
+ * Maps {@link Types#INTEGER interger} database values to boolean java values.  Zero is considered false;
+ * <tt>NULL</tt> maps to {@link #getDefaultValue()}; any other value is considered true.
+ *
+ * @author Steve Ebersole
+ * @see #getName()
+ */
+public class NumericBooleanType extends BooleanType {
+
+	/**
+	 * {@inheritDoc}
+	 * <p/>
+	 * This type's name is <tt>numeric_boolean</tt>
+	 */
+	public String getName() {
+		return "numeric_boolean";
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public Object get(ResultSet rs, String name) throws SQLException {
+		int value = rs.getInt( name );
+		if ( rs.wasNull() ) {
+			return getDefaultValue();
+		}
+		else if ( value == 0 ) {
+			return Boolean.FALSE;
+		}
+		else {
+			return Boolean.TRUE;
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public void set(PreparedStatement st, Object value, int index) throws SQLException {
+		if ( value == null ) {
+			st.setNull( index, Types.INTEGER );
+		}
+		else {
+			boolean bool = ( ( Boolean ) value ).booleanValue();
+			st.setInt( index, bool ? 1 : 0 );
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public String objectToSQLString(Object value, Dialect dialect) throws Exception {
+		return ( ( Boolean ) value ).booleanValue() ? "1" : "0";
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public int sqlType() {
+		return Types.INTEGER;
+	}
+}




More information about the hibernate-commits mailing list