1 package org.opentrafficsim.core.gtu.behavioralcharacteristics;
2
3 import java.io.Serializable;
4
5 import org.djunits.unit.DimensionlessUnit;
6 import org.djunits.value.formatter.EngineeringFormatter;
7 import org.djunits.value.vdouble.scalar.Dimensionless;
8
9 import nl.tudelft.simulation.language.Throw;
10
11
12
13
14
15
16
17
18
19
20
21 public class ParameterTypeDouble extends AbstractParameterType<Dimensionless> implements Serializable
22 {
23
24
25 private static final long serialVersionUID = 120160400;
26
27
28
29
30
31
32 public ParameterTypeDouble(final String id, final String description)
33 {
34 this(id, description, Double.NaN, null, false);
35 }
36
37
38
39
40
41
42
43 public ParameterTypeDouble(final String id, final String description, final double defaultValue)
44 {
45 this(id, description, defaultValue, null, true);
46 }
47
48
49
50
51
52
53
54 public ParameterTypeDouble(final String id, final String description, final Check check)
55 {
56 this(id, description, Double.NaN, check, false);
57 }
58
59
60
61
62
63
64
65
66 public ParameterTypeDouble(final String id, final String description, final double defaultValue, final Check check)
67 {
68 super(id, description, Dimensionless.class, new Dimensionless(defaultValue, DimensionlessUnit.SI), check, true);
69 }
70
71
72
73
74
75
76
77
78
79 private ParameterTypeDouble(final String id, final String description, final double defaultValue, final Check check,
80 final boolean hasDefaultValue)
81 {
82 super(id, description, Dimensionless.class,
83 hasDefaultValue ? new Dimensionless(defaultValue, DimensionlessUnit.SI) : null, check, hasDefaultValue);
84 try
85 {
86
87
88 check(defaultValue, new BehavioralCharacteristics());
89 }
90 catch (ParameterException exception)
91 {
92 throw new RuntimeException("Default value does not comply with constraints.", exception);
93 }
94 }
95
96
97 public final Double getDefaultValue() throws ParameterException
98 {
99 Throw.when(null == this.defaultValue, ParameterException.class, "No default value was set for '%s'.", getId());
100 return super.defaultValue.si;
101 }
102
103
104 public final String printValue(final BehavioralCharacteristics behavioralCharacteristics) throws ParameterException
105 {
106 return EngineeringFormatter.format(behavioralCharacteristics.getParameter(this));
107 }
108
109
110
111
112
113
114
115 public void check(final double value, final BehavioralCharacteristics bc) throws ParameterException
116 {
117
118 }
119
120
121 @SuppressWarnings("checkstyle:designforextension")
122 @Override
123 public String toString()
124 {
125 return "ParameterTypeDouble [id=" + getId() + ", description=" + getDescription() + "]";
126 }
127
128 }