Enum Type

java.lang.Object
java.lang.Enum<Type>
net.sf.basedb.core.Type
All Implemented Interfaces:
Serializable, Comparable<Type>, java.lang.constant.Constable

public enum Type
extends Enum<Type>
This class defines constants for supported value types in BASE.
Version:
2.0
Author:
Samuel, Nicklas
Last modified
$Date: 2023-11-20 09:28:00 +0100 (Mon, 20 Nov 2023) $
  • Enum Constant Details

    • INT

      public static final Type INT
      Integer type.
    • LONG

      public static final Type LONG
      Long integer type.
    • FLOAT

      public static final Type FLOAT
      Float type.
    • DOUBLE

      public static final Type DOUBLE
      Double type.
    • STRING

      public static final Type STRING
      String type where maximum length allowed is 255 characters.
      See Also:
      TEXT
    • TEXT

      public static final Type TEXT
      Text blob type.
      See Also:
      STRING
    • BOOLEAN

      public static final Type BOOLEAN
      Boolean type.
    • DATE

      public static final Type DATE
      The parameter is a date value.
    • TIMESTAMP

      public static final Type TIMESTAMP
      The parameter is a date+time value.
      Since:
      2.16
  • Field Details

    • valueMapping

      private static final Map<Integer,​Type> valueMapping
    • stringMapping

      private static final Map<String,​Type> stringMapping
    • typeWrapper

      private final TypeWrapper<?> typeWrapper
    • value

      private final int value
    • valueClass

      private final Class<?> valueClass
    • tableName

      private final String tableName
    • stringValue

      private final String stringValue
    • displayValue

      private final String displayValue
    • canEnumerate

      private final boolean canEnumerate
    • isNumerical

      private final boolean isNumerical
    • isTemporal

      private final boolean isTemporal
    • isText

      private final boolean isText
  • Constructor Details

    • Type

      private Type​(TypeWrapper<?> typeWrapper, int value, Class<?> valueClass, String stringValue, String displayValue, String tableName, boolean canEnumerate, boolean isNumerical, boolean isTemporal, boolean isText)
  • Method Details

    • values

      public static Type[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      Returns:
      an array containing the constants of this enum type, in the order they are declared
    • valueOf

      public static Type valueOf​(String name)
      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum type has no constant with the specified name
      NullPointerException - if the argument is null
    • toString

      public String toString()
      Overrides:
      toString in class Enum<Type>
    • getTypeWrapper

      public TypeWrapper<?> getTypeWrapper()
      Get a wrapper for accessing underlying type information from Hibernate.
      Since:
      2.16
    • getValue

      public int getValue()
      Get the integer value that is used when storing a type in the database.
      Returns:
      an int.
    • getValueClass

      public Class<?> getValueClass()
      Get the class of objects that can be used as values for this type.
      Returns:
      a Class
      See Also:
      isCorrectType(Object)
    • getStringValue

      public String getStringValue()
      Get the string value representation of this type.
      Returns:
      a java.lang.String
    • getSQLType

      public int getSQLType()
      Get the type of this parameter as specified by the java.sql.Types class.
      Returns:
      The type-code of the parameter
    • getTableName

      public String getTableName()
      Get the name of the database table, parameter and annotation values of this value type are stored in.
      Since:
      2.9
    • canEnumerate

      public boolean canEnumerate()
      If it makes sense to use values of this type as an enumeration to choose from. For example, the BOOLEAN and TEXT type can't be enumerated.
      Returns:
      TRUE if it does, FALSE otherwise.
    • isNumerical

      public boolean isNumerical()
      If the values of this type are numerical values.
      Returns:
      TRUE if the values are numerical, FALSE otherwise
    • isTemporal

      public boolean isTemporal()
      If the values of this type are date/time related.
      Returns:
      TRUE if the values are temporal, FALSE otherwise
      Since:
      2.16
    • isText

      public boolean isText()
      If the values of this type are text values.
      Returns:
      TRUE if the values are text, FALSE otherwise
      Since:
      3.19.9
    • validate

      public void validate​(Object value) throws InvalidDataException
      Check if an object is a value of the correct type. Null is allowed.
      Parameters:
      value - Value object to be checked.
      Throws:
      InvalidDataException - If the value isn't of the correct type
    • validate

      public void validate​(List<?> values) throws InvalidDataException
      Check if a list of values contain only objects of the correct type.
      Parameters:
      values - List of objects to be checked.
      Throws:
      InvalidDataException - If the list contains one or more nulls or values of incorrect object type
    • isCorrectType

      public boolean isCorrectType​(Object value)
      Check if the value is an object of the correct type.
      Parameters:
      value - Value object to be checked.
      Returns:
      TRUE if it is of correct type, FALSE otherwise.
    • newParameterValueData

      abstract ParameterValueData<?> newParameterValueData()
      Create a new ParameterValueData subclass which is used to store values of this value type in the database.
    • sizeOf

      public abstract int sizeOf​(Object value)
      Get the size in bytes an object of this type requires when stored in the database. If the value is null, 0 is returned, otherwise the actual value is only used if it affects the size, ie. it is a string.
      Parameters:
      value - The value to get the size of
      Returns:
      an integer
    • writeValue

      public abstract void writeValue​(Serializable value, ObjectOutputStream out) throws IOException
      Write a value of this type to the output stream. Eg. depending on which Type is ised one of ObjectOutputStream.write*(value) methods should be used.
      Parameters:
      value - A value which must be of the correct type (not checked)
      out - Stream to write to
      Throws:
      IOException
      Since:
      3.4
    • readValue

      public abstract Serializable readValue​(ObjectInputStream in) throws IOException, ClassNotFoundException
      Read a value of this type to the input stream. Eg. depending on which Type is ised one of ObjectInputStream.read*(value) methods should be used.
      Parameters:
      in - Stream to read from
      Throws:
      IOException
      ClassNotFoundException
      Since:
      3.4
    • convertNumber

      public Number convertNumber​(Number num)
      Convert a number to the appropriate class. The default implementation returns null. Each numeric type overrides this method to create a number of the correct type.
      Parameters:
      num - The number to convert.
      Returns:
      Null if this method not have been overridden.
      Since:
      2.2
    • parseString

      public abstract Object parseString​(String value) throws InvalidDataException
      Parse a string and return a value of the correct type.
      Parameters:
      value - The string to get the type object from.
      Returns:
      a java.lang.Object or null if the parameter is null.
      Throws:
      InvalidDataException - If the argument is corrupt.
    • parseString

      public Object parseString​(String value, NumberFormat numberFormat, boolean nullIfException)
      Parse a string and return a value of the correct type using a specific number format for numerical values, optionally ignoring unparsable numbers.
      Parameters:
      value - The string value to parse
      numberFormat - The number format, or null to use parseString(String)
      nullIfException - TRUE to return null for unparsable numeric values, or FALSE to throw an exception
      Returns:
      a java.lang.Object, or null.
      Throws:
      NumberFormatException - If the type is numerical and the string can't be parsed as a number and the nullIfException parameter is false
      Since:
      2.4
    • parseString

      public Object parseString​(String value, Formatter<Date> dateFormat, boolean nullIfException)
      Parse a string and return a value of the correct type using a specific date format for date values, optionally ignoring unparsable dates.
      Parameters:
      value - The string value to parse
      dateFormat - The date format, or null to use parseString(String)
      nullIfException - TRUE to return null for unparsable date values, or FALSE to throw an exception
      Returns:
      a java.lang.Object, or null.
      Since:
      3.15
    • parseStrings

      public Object[] parseStrings​(String[] values) throws InvalidDataException
      Parse an array of strings and try to convert them to values of the correct object type.
      Parameters:
      values - An array of values to parse through.
      Returns:
      An array of objects, or null of the array is null
      Throws:
      InvalidDataException - If at least one of the strings could not be parsed to the correct type
    • fromValue

      public static Type fromValue​(int value)
      Get the Type object when you know the integer code.
      Parameters:
      value - The integer code to get the Type object for.
      Returns:
      a net.sf.basedb.core.Type object
    • fromValue

      public static Type fromValue​(String value)
      Get the Type object when you know the string value.
      Parameters:
      value - The string value to get the Type object for.
      Returns:
      a net.sf.basedb.core.Type object.
    • fromHibernateType

      public static Type fromHibernateType​(Type hibernateType)
      Try to find a matching Type instance given a Hibernate Type object.
      Parameters:
      hibernateType - The Hibernate type
      Returns:
      A Type instance or null if not found
      Since:
      2.15