Interface ValueDatatype

All Superinterfaces:
Comparable<Datatype>, Datatype
All Known Subinterfaces:
EnumDatatype, NamedDatatype, NumericDatatype
All Known Implementing Classes:
AbstractPrimitiveDatatype, ArrayOfValueDatatype, BigDecimalDatatype, BooleanDatatype, CurrencyDatatype, DateDatatype, DecimalDatatype, DefaultGenericEnumDatatype, DefaultGenericValueDatatype, DoubleDatatype, GenericEnumDatatype, GenericValueDatatype, GregorianCalendarAsDateDatatype, GregorianCalendarDatatype, IntegerDatatype, InternationalStringDatatype, ListOfTypeDatatype, LocalDateDatatype, LocalDateTimeDatatype, LocalTimeDatatype, LongDatatype, MoneyDatatype, MonthDayDatatype, PrimitiveBooleanDatatype, PrimitiveIntegerDatatype, PrimitiveLongDatatype, StringDatatype, ValueClassDatatype, ValueClassNameDatatype, Void

public interface ValueDatatype extends Datatype
A datatype representing values (in contrast to reference objects).
  • Method Details

    • getWrapperType

      ValueDatatype getWrapperType()
      If this datatype represents a primitive type, this method returns the datatype that represents the wrapper class. Returns null if this datatype does not represent a primitive.
    • isParsable

      boolean isParsable(String value)
      Returns true if the given string can be parsed to a value of this datatype. Returns false otherwise.
    • isNull

      default boolean isNull(String value)
      Returns true if the given string is null or the representation of the null object (if the datatype value class makes use of the null object pattern.) Returns false otherwise.
      See Also:
      • NullObject
    • getNullObjectId

      default String getNullObjectId()
      Returns the string representation of the special null-object, if the datatype uses one.
      See Also:
    • isMutable

      boolean isMutable()
      Returns true if this is a mutable datatype, false if it is an immutable datatype.
      Returns:
      whether this is a mutable datatype
    • isImmutable

      boolean isImmutable()
      Returns true if this is an immutable datatype, false otherwise.
      Returns:
      whether this is an immutable datatype
    • getDefaultValue

      String getDefaultValue()
      Returns the datatype's default value. For datatypes representing objects the method returns null. For datatypes representing Java primitives the Java default value is returned, e.g. 0 for int.
      Throws:
      UnsupportedOperationException - if this datatype is the Datatype Void.
      See Also:
    • getValue

      Object getValue(String value)
      This method parses the given string and returns the value as an instance of the class this value datatype represents.

      Use with caution: During development time Faktor-IPS maintains all values with their string representation. This allows to change the value's datatype without the need to convert the value from one class to another (e.g. if the string representation is 42 you can change the datatype from integer to string without converting the integer object to a string object.

      May throw different exceptions if the given string does not represent any value, for example a NumberFormatException when "twelve" is passed to PrimitiveIntegerDatatype.getValue(String).

      Parameters:
      value - the string representation of a value
      Returns:
      the value as instance of the class this datatype represents
      See Also:
    • valueToString

      default String valueToString(Object value)
      Returns the string representation of the given value compatible to getValue(String).
      Parameters:
      value - a value of this datatype
      Returns:
      the value's string representation
      See Also:
    • supportsCompare

      boolean supportsCompare()
      Returns:
      true if this datatype is able to compare two values.
    • compare

      int compare(String valueA, String valueB) throws UnsupportedOperationException
      Compares the values created from the two given strings.
      Parameters:
      valueA - The value to compare to valueB
      valueB - The value to compare to valueA
      Returns:
      A value less than 0 if valueA is less than valueB, 0 if valueA is equal to valueB and a value greater than 0 if valueA is greater than valueB.
      Throws:
      UnsupportedOperationException - if compare is not supported by this datatype.
      See Also:
    • areValuesEqual

      boolean areValuesEqual(String valueA, String valueB)
      Returns true if both given strings represent the same value defined by this datatype. The String " 1" (a blank followed by the char '1') and "1" (just the char '1') are equal if the datatype is an Integer, but will not be equal if the datatype is a String.
      Parameters:
      valueA - The first parameter to compare
      valueB - The second parameter to compare
      Returns:
      true if the two values are equal according to the datatype, returns false if they are different.
      Throws:
      IllegalArgumentException - if one of the parameter values doesn't exist in the value set of this datatype.
    • checkReadyToUse

      org.faktorips.runtime.MessageList checkReadyToUse()
      Validates the value datatype and returns a message list containing error messages if the datatype is invalid. If the datatype is valid an empty list is returned.

      Value datatypes like the predefined datatypes (defined by the constants in this class) are always valid. However generic datatypes that implement this interface might be invalid.