Package org.optaplanner.core.impl.score.definition

## Class AbstractScoreDefinition<S extends Score<S>>

- java.lang.Object
- - org.optaplanner.core.impl.score.definition.AbstractScoreDefinition<S>

- All Implemented Interfaces:
    `Serializable`, `ScoreDefinition<S>`
  Direct Known Subclasses:
    `AbstractBendableScoreDefinition`, `HardMediumSoftBigDecimalScoreDefinition`, `HardMediumSoftLongScoreDefinition`, `HardMediumSoftScoreDefinition`, `HardSoftBigDecimalScoreDefinition`, `HardSoftDoubleScoreDefinition`, `HardSoftLongScoreDefinition`, `HardSoftScoreDefinition`, `SimpleBigDecimalScoreDefinition`, `SimpleDoubleScoreDefinition`, `SimpleLongScoreDefinition`, `SimpleScoreDefinition`

      public abstract class AbstractScoreDefinition<S extends Score<S>>
      extends Object
      implements ScoreDefinition<S>, Serializable

  Abstract superclass for `ScoreDefinition`.
  See Also:
    `ScoreDefinition`, `HardSoftScoreDefinition`, Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AbstractScoreDefinition​(String[] levelLabels)` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected static double` | `divide​(double dividend, double divisor)` |
    `protected static int` | `divide​(int dividend, int divisor)` |
    `protected static long` | `divide​(long dividend, long divisor)` |
    `protected static BigDecimal` | `divide​(BigDecimal dividend, BigDecimal divisor)` |
    `String` | `formatScore​(S score)` | Returns a `String` representation of the `Score`.
    `String` | `getInitLabel()` | Returns the label for `Score.getInitScore()`.
    `String[]` | `getLevelLabels()` | Returns a label for each score level.
    `int` | `getLevelsSize()` | Returns the length of `Score.toLevelNumbers()` for every `Score` of this definition.
    `boolean` | `isCompatibleArithmeticArgument​(Score score)` |
    `protected static double` | `sanitize​(double number)` |
    `protected static int` | `sanitize​(int number)` |
    `protected static long` | `sanitize​(long number)` |
    `protected static BigDecimal` | `sanitize​(BigDecimal number)` |
    `String` | `toString()` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.optaplanner.core.impl.score.definition.ScoreDefinition

      `buildOptimisticBound, buildPessimisticBound, buildScoreHolder, buildScoreInliner, divideBySanitizedDivisor, fromLevelNumbers, getFeasibleLevelsSize, getOneSoftestScore, getScoreClass, getZeroScore, isNegativeOrZero, isPositiveOrZero, parseScore`

- - ### Constructor Detail

    - #### AbstractScoreDefinition

          public AbstractScoreDefinition​(String[] levelLabels)

      Parameters:
        `levelLabels` - never null, as defined by `ScoreDefinition.getLevelLabels()`

  - ### Method Detail

    - #### sanitize

          protected static int sanitize​(int number)

    - #### sanitize

          protected static long sanitize​(long number)

    - #### sanitize

          protected static double sanitize​(double number)

    - #### sanitize

          protected static BigDecimal sanitize​(BigDecimal number)

    - #### divide

          protected static int divide​(int dividend,
                                      int divisor)

    - #### divide

          protected static long divide​(long dividend,
                                       long divisor)

    - #### divide

          protected static double divide​(double dividend,
                                         double divisor)

    - #### divide

          protected static BigDecimal divide​(BigDecimal dividend,
                                             BigDecimal divisor)

    - #### getInitLabel

          public String getInitLabel()

      Description copied from interface: `ScoreDefinition`
      Returns the label for `Score.getInitScore()`.
      Specified by:
        `getInitLabel` in interface `ScoreDefinition<S extends Score<S>>`
      Returns:
        never null
      See Also:
        `ScoreDefinition.getLevelLabels()`

    - #### getLevelsSize

          public int getLevelsSize()

      Description copied from interface: `ScoreDefinition`
      Returns the length of `Score.toLevelNumbers()` for every `Score` of this definition. For example: returns 2 on `HardSoftScoreDefinition`.
      Specified by:
        `getLevelsSize` in interface `ScoreDefinition<S extends Score<S>>`
      Returns:
        at least 1

    - #### getLevelLabels

          public String[] getLevelLabels()

      Description copied from interface: `ScoreDefinition`
      Returns a label for each score level. Each label includes the suffix "score" and must start in lower case. For example: returns `{"hard score", "soft score "}` on `HardSoftScoreDefinition`.

      It does not include the `ScoreDefinition.getInitLabel()`.

      Specified by:
        `getLevelLabels` in interface `ScoreDefinition<S extends Score<S>>`
      Returns:
        never null, array with length of `ScoreDefinition.getLevelsSize()`, each element is never null

    - #### formatScore

          public String formatScore​(S score)

      Description copied from interface: `ScoreDefinition`
      Returns a `String` representation of the `Score`.
      Specified by:
        `formatScore` in interface `ScoreDefinition<S extends Score<S>>`
      Parameters:
        `score` - never null
      Returns:
        never null
      See Also:
        `ScoreDefinition.parseScore(String)`

    - #### isCompatibleArithmeticArgument

          public boolean isCompatibleArithmeticArgument​(Score score)

      Specified by:
        `isCompatibleArithmeticArgument` in interface `ScoreDefinition<S extends Score<S>>`
      Parameters:
        `score` - never null
      Returns:
        true if the otherScore is accepted as a parameter of `Score.add(Score)`, `Score.subtract(Score)` and `Comparable.compareTo(Object)` for scores of this score definition.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`