Enum Type

  • All Implemented Interfaces:
    Serializable, Comparable<Type>

    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: 2019-03-20 13:34:55 +0100 (ons, 20 mars 2019) $
    • Enum Constant Detail

      • 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 Detail

      • 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
    • Constructor Detail

      • Type

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

      • values

        public static Type[] values()
        Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
        for (Type c : Type.values())
            System.out.println(c);
        
        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
      • 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
      • 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
      • 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