View Javadoc
1   package org.opentrafficsim.base.parameters.constraint;
2   
3   /**
4    * List of default constraint for ParameterTypes.
5    * <p>
6    * Copyright (c) 2013-2026 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
7    * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
8    * </p>
9    * @author Alexander Verbraeck
10   * @author Peter Knoppers
11   * @author Wouter Schakel
12   */
13  public enum NumericConstraint implements Constraint<Number>
14  {
15  
16      /** Checks for &gt;0. */
17      POSITIVE("Value of parameter '%s' must be above zero.")
18      {
19          @Override
20          public boolean accept(final Number value)
21          {
22              return value.doubleValue() > 0.0;
23          }
24      },
25  
26      /** Checks for &lt;0. */
27      NEGATIVE("Value of parameter '%s' must be below zero.")
28      {
29          @Override
30          public boolean accept(final Number value)
31          {
32              return value.doubleValue() < 0.0;
33          }
34      },
35  
36      /** Checks for &ge;0. */
37      POSITIVEZERO("Value of parameter '%s' may not be below zero.")
38      {
39          @Override
40          public boolean accept(final Number value)
41          {
42              return value.doubleValue() >= 0.0;
43          }
44      },
45  
46      /** Checks for &le;0. */
47      NEGATIVEZERO("Value of parameter '%s' may not be above zero.")
48      {
49          @Override
50          public boolean accept(final Number value)
51          {
52              return value.doubleValue() <= 0.0;
53          }
54      },
55  
56      /** Checks for &ne;0. */
57      NONZERO("Value of parameter '%s' may not be zero.")
58      {
59          @Override
60          public boolean accept(final Number value)
61          {
62              return value.doubleValue() != 0.0;
63          }
64      },
65  
66      /** Checks for &ge;1. */
67      ATLEASTONE("Value of parameter '%s' may not be below one.")
68      {
69          @Override
70          public boolean accept(final Number value)
71          {
72              return value.doubleValue() >= 1.0;
73          }
74      };
75  
76      /** Message for value failure, pointing to a parameter using '%s'. */
77      private final String failMessage;
78  
79      /**
80       * Constructor with message for value failure, pointing to a parameter using '%s'.
81       * @param failMessage Message for value failure, pointing to a parameter using '%s'
82       */
83      NumericConstraint(final String failMessage)
84      {
85          this.failMessage = failMessage;
86      }
87  
88      @Override
89      public String failMessage()
90      {
91          return this.failMessage;
92      }
93  
94  }