Class ValidationStrategies

java.lang.Object
com.amalgamasimulation.desktop.binding.ValidationStrategies

public class ValidationStrategies extends Object
  • Method Details

    • localDate

      public static ValidationStrategy<LocalDateTime,String> localDate(boolean canBeEmpty)
      Creates a default validation strategy for LocalDateTime date values (without time component) that allows empty values based on the parameter.

      Uses the default date format (day/month/year) for parsing and display.

      Parameters:
      canBeEmpty - If true, empty or null input values are considered valid
      Returns:
      A validation strategy for date-only LocalDateTime values
      See Also:
    • localDate

      public static ValidationStrategy<LocalDateTime,String> localDate()
      Creates a default validation strategy for LocalDateTime date values (without time component) that requires non-empty values.
      Returns:
      A validation strategy for required date-only LocalDateTime values
    • localDate

      public static ValidationStrategy<LocalDateTime,String> localDate(Function<String,LocalDateTime> stringToLocalDate, Function<LocalDateTime,String> localDateToString)
      Creates a customizable validation strategy for LocalDateTime date values that requires non-empty values.
      Parameters:
      stringToLocalDate - Function to parse string into LocalDateTime
      localDateToString - Function to format LocalDateTime into string
      Returns:
      Configured validation strategy for date values
      Throws:
      NullPointerException - if either converter function is null
    • localDate

      public static ValidationStrategy<LocalDateTime,String> localDate(Function<String,LocalDateTime> stringToLocalDate, Function<LocalDateTime,String> localDateToString, boolean canBeEmpty)
      Creates a fully customizable validation strategy for LocalDateTime date values.

      The strategy includes:

      • Optional empty value handling
      • Custom parsing and formatting
      • Localized error messages
      Parameters:
      stringToLocalDate - Function to parse string into LocalDateTime
      localDateToString - Function to format LocalDateTime into string
      canBeEmpty - If true, empty or null input values are considered valid
      Returns:
      Configured validation strategy for date values
      Throws:
      NullPointerException - if either converter function is null
    • localDateTime

      public static ValidationStrategy<LocalDateTime,String> localDateTime(boolean canBeEmpty)
      Creates a default validation strategy for LocalDateTime values that optionally allows empty values. Uses the default format (day/month/year hours:minutes) for parsing and display.
      Parameters:
      canBeEmpty - If true, empty or null input values are considered valid
      Returns:
      A validation strategy configured for LocalDateTime with optional empty values
      See Also:
    • localDateTime

      public static ValidationStrategy<LocalDateTime,String> localDateTime()
      Creates a default validation strategy for LocalDateTime values that requires non-empty input. Uses the default format (day/month/year hours:minutes) for parsing and display.
      Returns:
      A validation strategy configured for required LocalDateTime values
    • localDateTime

      public static ValidationStrategy<LocalDateTime,String> localDateTime(Function<String,LocalDateTime> stringToLocalDateTime, Function<LocalDateTime,String> localDateTimeToString, boolean canBeEmpty)
      Creates a fully customizable validation strategy for LocalDateTime values.

      The strategy provides:

      • Custom parsing and formatting
      • Optional empty value handling
      • Localized error messages with format example
      • Two-way conversion between String and LocalDateTime
      Parameters:
      stringToLocalDateTime - Function to parse string into LocalDateTime
      localDateTimeToString - Function to format LocalDateTime into string
      canBeEmpty - If true, empty or null input values are considered valid
      Returns:
      Configured validation strategy for LocalDateTime values
      Throws:
      NullPointerException - if either converter function is null
    • localTime

      public static ValidationStrategy<LocalTime,String> localTime()
      Creates a default validation strategy for LocalTime values that requires non-empty input. Uses the default time format (hours:minutes) for parsing and display.
      Returns:
      A validation strategy configured for required LocalTime values
      See Also:
    • localTime

      public static ValidationStrategy<LocalTime,String> localTime(boolean canBeEmpty)
      Creates a default validation strategy for LocalTime values with configurable empty value handling. Uses the default time format (hours:minutes) for parsing and display.
      Parameters:
      canBeEmpty - If true, empty or null input values are considered valid
      Returns:
      A validation strategy configured for LocalTime with optional empty values
    • localTime

      public static ValidationStrategy<LocalTime,String> localTime(Function<String,LocalTime> stringToLocalTime, Function<LocalTime,String> localTimeToString)
      Creates a customizable validation strategy for LocalTime values that requires non-empty input.
      Parameters:
      stringToLocalTime - Function to parse string into LocalTime
      localTimeToString - Function to format LocalTime into string
      Returns:
      Configured validation strategy for LocalTime values
      Throws:
      NullPointerException - if either converter function is null
    • localTime

      public static ValidationStrategy<LocalTime,String> localTime(Function<String,LocalTime> stringToLocalTime, Function<LocalTime,String> localTimeToString, boolean canBeEmpty)
      Creates a fully customizable validation strategy for LocalTime values.

      The strategy provides:

      • Custom time parsing and formatting
      • Configurable empty value handling
      • Localized error messages with format example
      • Two-way conversion between String and LocalTime
      • Automatic validation of time ranges (00:00-23:59)
      Parameters:
      stringToLocalTime - Function to parse string into LocalTime
      localTimeToString - Function to format LocalTime into string
      canBeEmpty - If true, empty or null input values are considered valid
      Returns:
      Configured validation strategy for LocalTime values
      Throws:
      NullPointerException - if either converter function is null
    • stringIsNotEmpty

      public static ValidationStrategy<String,String> stringIsNotEmpty()
    • stringAny

      public static ValidationStrategy<String,String> stringAny()
    • distribution

      public static ValidationStrategy<com.amalgamasimulation.randomdatamodel.Distribution,String> distribution()
    • realDistributionNonNegative

      public static ValidationStrategy<org.apache.commons.math3.distribution.RealDistribution,String> realDistributionNonNegative()
    • realDistributionPositiveWithoutZero

      public static ValidationStrategy<org.apache.commons.math3.distribution.RealDistribution,String> realDistributionPositiveWithoutZero()
    • realDistributionBetweenValues

      public static ValidationStrategy<org.apache.commons.math3.distribution.RealDistribution,String> realDistributionBetweenValues(double minValue, double maxValue)
    • realDistribution

      public static ValidationStrategy<org.apache.commons.math3.distribution.RealDistribution,String> realDistribution(Predicate<org.apache.commons.math3.distribution.RealDistribution> check, String errorMessage)
    • realDistributionPercentage

      public static ValidationStrategy<org.apache.commons.math3.distribution.RealDistribution,String> realDistributionPercentage(Predicate<org.apache.commons.math3.distribution.RealDistribution> check, String errorMessage)
    • realDistributionPercentageBetweenValues

      public static ValidationStrategy<org.apache.commons.math3.distribution.RealDistribution,String> realDistributionPercentageBetweenValues(double minValue, double maxValue)
    • realDistributionPercentage

      public static ValidationStrategy<org.apache.commons.math3.distribution.RealDistribution,String> realDistributionPercentage()
    • realDistribution

      public static ValidationStrategy<org.apache.commons.math3.distribution.RealDistribution,String> realDistribution()
    • timeSeries

      public static ValidationStrategy<com.amalgamasimulation.timeseriesdatamodel.TimeSeries,String> timeSeries(Function<com.amalgamasimulation.timeseriesdatamodel.TimeSeries,String> modelToTarget)
    • doubleAny

      public static ValidationStrategy<Double,String> doubleAny(int countSign)
      Creates a validation strategy accepting any double value with specified decimal places.
      Parameters:
      countSign - Number of decimal places to display
      Returns:
      ValidationStrategy for any double value
    • doubleMoreOrEqualValue

      public static ValidationStrategy<Double,String> doubleMoreOrEqualValue(int countSign, double minValue)
      Creates a validation strategy for values ≥ specified minimum.
      Parameters:
      countSign - Number of decimal places to display
      minValue - Minimum allowed value (inclusive)
      Returns:
      ValidationStrategy for values ≥ minValue
    • doubleMoreOrEqualValue

      public static ValidationStrategy<Double,String> doubleMoreOrEqualValue(double minValue)
      Creates a validation strategy for values ≥ specified minimum (2 decimal places).
      Parameters:
      minValue - Minimum allowed value (inclusive)
      Returns:
      ValidationStrategy for values ≥ minValue
    • doubleBetweenValues

      public static ValidationStrategy<Double,String> doubleBetweenValues(double minValue, double maxValue)
      Creates a validation strategy for values within inclusive range.
      Parameters:
      minValue - Minimum allowed value (inclusive)
      maxValue - Maximum allowed value (inclusive)
      Returns:
      ValidationStrategy for bounded values (2 decimal places)
    • doubleStrictlyBetweenValues

      public static ValidationStrategy<Double,String> doubleStrictlyBetweenValues(double minValue, double maxValue)
      Creates a validation strategy for values within exclusive range.
      Parameters:
      minValue - Minimum value (exclusive)
      maxValue - Maximum value (exclusive)
      Returns:
      ValidationStrategy for strictly bounded values (2 decimal places)
    • doubleAbsValueMoreOrEqualDelta

      public static ValidationStrategy<Double,String> doubleAbsValueMoreOrEqualDelta(double delta)
      Creates a validation strategy for absolute values ≥ delta.
      Parameters:
      delta - Minimum absolute value
      Returns:
      ValidationStrategy for |value| ≥ delta (2 decimal places)
    • doubleAny

      public static ValidationStrategy<Double,String> doubleAny()
      Creates a validation strategy accepting any double value (2 decimal places).
      Returns:
      ValidationStrategy for any double value
    • doublePositive

      public static ValidationStrategy<Double,String> doublePositive(int countSign)
      Creates a validation strategy for positive values (>0).
      Parameters:
      countSign - Number of decimal places to display
      Returns:
      ValidationStrategy for positive values
    • doublePositive

      public static ValidationStrategy<Double,String> doublePositive()
      Creates a validation strategy for positive values (>0) with 2 decimal places.
      Returns:
      ValidationStrategy for positive values
    • doublePositiveWithZero

      public static ValidationStrategy<Double,String> doublePositiveWithZero(int countSign)
      Creates a validation strategy for non-negative values (≥0).
      Parameters:
      countSign - Number of decimal places to display
      Returns:
      ValidationStrategy for non-negative values
    • doublePositiveWithZero

      public static ValidationStrategy<Double,String> doublePositiveWithZero()
      Creates a validation strategy for non-negative values (≥0) with 2 decimal places.
      Returns:
      ValidationStrategy for non-negative values
    • doubleMoreOrEqualsThanOne

      public static ValidationStrategy<Double,String> doubleMoreOrEqualsThanOne()
      Creates a validation strategy for values ≥1.
      Returns:
      ValidationStrategy for values ≥1 (2 decimal places)
    • doubleAny

      public static ValidationStrategy<Double,String> doubleAny(boolean setWithCountSign)
      Creates a validation strategy accepting any double value with formatting control.
      Parameters:
      setWithCountSign - If true, rounds parsed values to specified decimal places
      Returns:
      ValidationStrategy for any double value (2 decimal places)
    • createDoubleStrategy

      public static ValidationStrategy<Double,String> createDoubleStrategy(String errorMessage, DoublePredicate check, int countSign)
      Base factory method for creating double validation strategies.
      Parameters:
      errorMessage - Validation error message
      check - Validation predicate
      countSign - Number of decimal places to display
      Returns:
      Configured ValidationStrategy
    • doubleBetweenValues

      public static ValidationStrategy<Double,String> doubleBetweenValues(double minValue, double maxValue, boolean setWithCountSign)
      Creates a validation strategy for bounded values with formatting control.
      Parameters:
      minValue - Minimum value (inclusive)
      maxValue - Maximum value (inclusive)
      setWithCountSign - If true, rounds parsed values to specified decimal places
      Returns:
      ValidationStrategy for bounded values (2 decimal places)
    • doubleBetweenValues

      public static ValidationStrategy<Double,String> doubleBetweenValues(double minValue, double maxValue, int countSign, boolean setWithCountSign)
      Creates a validation strategy for bounded values with custom decimal places.
      Parameters:
      minValue - Minimum value (inclusive)
      maxValue - Maximum value (inclusive)
      countSign - Number of decimal places to display
      setWithCountSign - If true, rounds parsed values to specified decimal places
      Returns:
      Configured ValidationStrategy
    • createDoubleStrategy

      public static ValidationStrategy<Double,String> createDoubleStrategy(String errorMessage, DoublePredicate check, int countSign, boolean setWithCountSign)
      Core factory method for creating double validation strategies.
      Parameters:
      errorMessage - Validation error message
      check - Validation predicate
      countSign - Number of decimal places to display
      setWithCountSign - If true, rounds parsed values to specified decimal places
      Returns:
      Fully configured ValidationStrategy
    • doubleExponential

      public static ValidationStrategy<Double,String> doubleExponential()
      Creates a validation strategy for numbers in exponential (scientific) notation.

      Validates that:

      • Input is a valid number (in any format)
      • Null values are invalid

      Formatting behavior:

      • Displays values in exponential notation (e.g., "1.23e+05")
      • Accepts input in either standard or exponential notation
      • Uses zero decimal places for display (whole number exponents)
      Returns:
      Validation strategy for exponential number formatting

      Example valid inputs:

      • "123000" (displays as "1e+05")
      • "1.23e5" (displays as "1e+05")
      • "0.000123" (displays as "1e-04")
    • createDoubleExponentialStrategy

      public static ValidationStrategy<Double,String> createDoubleExponentialStrategy(String errorMessage, DoublePredicate check)
      Creates a customizable validation strategy for numbers with exponential notation display.
      Parameters:
      errorMessage - Error message to display for invalid inputs
      check - Custom validation predicate for the parsed number
      Returns:
      Configured exponential number validation strategy

      Formatting details:

      • Uses String.format("%1.0e") for display (1 significant digit)
      • Input parsing handles both '.' and ',' decimal separators
      • Internal storage is as standard double value
    • doublePercentage

      public static ValidationStrategy<Double,String> doublePercentage()
      Creates a validation strategy for percentage values (0-100).
      Returns:
      ValidationStrategy for 0-100% range with 2 decimal places
    • doublePercentageWithoutZero

      public static ValidationStrategy<Double,String> doublePercentageWithoutZero()
    • doublePercentage

      public static ValidationStrategy<Double,String> doublePercentage(double minValue, double maxValue)
      Creates a validation strategy for percentage values within a specific range.

      Validates that:

      • Input is a valid percentage (with or without '%' sign)
      • Value is between minValue and maxValue (inclusive)
      • Null values are invalid

      Note: Internally stores values as decimals (e.g., 50% → 0.5)

      Parameters:
      minValue - Minimum allowed percentage (inclusive)
      maxValue - Maximum allowed percentage (inclusive)
      Returns:
      Validation strategy for bounded percentages
    • createDoublePersentageStrategy

      public static ValidationStrategy<Double,String> createDoublePersentageStrategy(String errorMessage, DoublePredicate validator)
      Creates a customizable percentage validation strategy.

      Core validation includes:

      • Percentage sign handling (optional)
      • Decimal conversion (percentage → decimal)
      • Custom validation via predicate
      • Automatic formatting (decimal → percentage)
      Parameters:
      errorMessage - Error message to display for invalid inputs
      validator - Custom validation predicate (operates on percentage values)
      Returns:
      Configured percentage validation strategy

      Implementation notes:

      • Input values are divided by 100 for storage
      • Stored values are multiplied by 100 for display
      • Uses 2 decimal places for percentage display
      • Uses 4 decimal places for internal precision
    • integerPositive

      public static ValidationStrategy<Integer,String> integerPositive()
      Creates a validation strategy for positive integers (greater than zero).

      Validates that:

      • Input is a valid integer
      • Value is greater than 0
      • Null values are invalid
      Returns:
      Validation strategy for positive integers
    • integerPositiveWithZero

      public static ValidationStrategy<Integer,String> integerPositiveWithZero()
      Creates a validation strategy for non-negative integers (zero or greater).

      Validates that:

      • Input is a valid integer
      • Value is 0 or greater
      • Null values are invalid
      Returns:
      Validation strategy for non-negative integers
    • integerAny

      public static ValidationStrategy<Integer,String> integerAny()
      Creates a validation strategy that accepts any valid integer.

      Validates that:

      • Input is a valid integer
      • Null values are invalid
      Returns:
      Validation strategy for any integer
    • integerBetweenValues

      public static ValidationStrategy<Integer,String> integerBetweenValues(int minValue, int maxValue)
      Creates a validation strategy for integers within an inclusive range.

      Validates that:

      • Input is a valid integer
      • Value is between minValue and maxValue (inclusive)
      • Null values are invalid
      Parameters:
      minValue - Minimum allowed value (inclusive)
      maxValue - Maximum allowed value (inclusive)
      Returns:
      Validation strategy for bounded integers
    • integerStriclyBetweenValues

      public static ValidationStrategy<Integer,String> integerStriclyBetweenValues(int minValue, int maxValue)
      Creates a validation strategy for integers within an exclusive range.

      Validates that:

      • Input is a valid integer
      • Value is strictly greater than minValue and less than maxValue
      • Null values are invalid
      Parameters:
      minValue - Minimum value (exclusive)
      maxValue - Maximum value (exclusive)
      Returns:
      Validation strategy for strictly bounded integers
    • createIntegerStrategy

      public static ValidationStrategy<Integer,String> createIntegerStrategy(String errorMessage, IntPredicate check)
      Creates a customizable integer validation strategy.

      Core validation includes:

      • Basic integer parsing
      • Null value checking
      • Custom validation via predicate
      Parameters:
      errorMessage - Error message to display for invalid inputs
      check - Custom validation predicate
      Returns:
      Configured integer validation strategy
    • colorSWT

      public static ValidationStrategy<org.eclipse.swt.graphics.Color,String> colorSWT()
      Creates a validation strategy for SWT Color values.

      Validates and converts between color strings and SWT Color objects.

      Returns:
      A validation strategy for SWT Color values
      See Also:
      • Color
    • colorAWT

      public static ValidationStrategy<Color,String> colorAWT()
      Creates a validation strategy for AWT Color values.

      Validates and converts between color strings and AWT Color objects.

      Returns:
      A validation strategy for AWT Color values
    • identifiedObject

      public static <V> ValidationStrategy<V,String> identifiedObject(List<V> values, Function<V,String> identifierExtractor)
    • uniqID

      public static ValidationStrategy<String,String> uniqID(Supplier<List<?>> elements, org.eclipse.emf.ecore.EStructuralFeature feature, Supplier<Object> currentObject)