All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.j256.ormlite.field.types.BooleanCharType Maven / Gradle / Ivy

package com.j256.ormlite.field.types;

import java.sql.SQLException;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.field.FieldType;
import com.j256.ormlite.field.SqlType;
import com.j256.ormlite.support.DatabaseResults;

/**
 * Booleans can be stored in the database as the character '1' '0'. You can change the characters by specifying a format
 * string. It must be a string with 2 characters. The first character is the value for TRUE, the second is FALSE. You
 * must choose this DataType specifically with the {@link DatabaseField#dataType()} specifier.
 * 
 * 
 * @DatabaseField(format = "YN", dataType = DataType.BOOLEAN_CHAR)
 * 
* * Thanks much to stew. * * @author graywatson */ public class BooleanCharType extends BooleanType { private static final String DEFAULT_TRUE_FALSE_FORMAT = "10"; private static final BooleanCharType singleTon = new BooleanCharType(); public static BooleanCharType getSingleton() { return singleTon; } public BooleanCharType() { super(SqlType.CHAR); } @Override public Object parseDefaultString(FieldType fieldType, String defaultStr) { return javaToSqlArg(fieldType, Boolean.parseBoolean(defaultStr)); } @Override public Object javaToSqlArg(FieldType fieldType, Object obj) { String format = (String) fieldType.getDataTypeConfigObj(); return ((Boolean) obj ? format.charAt(0) : format.charAt(1)); } @Override public Object resultToSqlArg(FieldType fieldType, DatabaseResults results, int columnPos) throws SQLException { return results.getChar(columnPos); } @Override public Object sqlArgToJava(FieldType fieldType, Object sqlArg, int columnPos) { String format = (String) fieldType.getDataTypeConfigObj(); return ((Character) sqlArg == format.charAt(0) ? Boolean.TRUE : Boolean.FALSE); } @Override public Object resultStringToJava(FieldType fieldType, String stringValue, int columnPos) { if (stringValue.length() == 0) { return Boolean.FALSE; } else { return sqlArgToJava(fieldType, stringValue.charAt(0), columnPos); } } @Override public Object makeConfigObject(FieldType fieldType) throws SQLException { String format = fieldType.getFormat(); if (format == null) { return DEFAULT_TRUE_FALSE_FORMAT; } else if (format.length() == 2 && format.charAt(0) != format.charAt(1)) { return format; } else { throw new SQLException( "Invalid boolean format must have 2 different characters that represent true/false like \"10\" or \"tf\": " + format); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy