1 package org.djunits.unit;
2
3 import org.djunits.unit.unitsystem.UnitSystem;
4
5
6
7
8
9
10
11
12
13
14
15 public class MoneyPerDurationUnit extends LinearUnit<MoneyPerDurationUnit>
16 {
17
18 private static final long serialVersionUID = 20150905L;
19
20
21 private final MoneyUnit moneyUnit;
22
23
24 private final DurationUnit durationUnit;
25
26
27 public static final MoneyPerDurationUnit EUR_PER_HOUR;
28
29
30 public static final MoneyPerDurationUnit EUR_PER_DAY;
31
32
33 public static final MoneyPerDurationUnit USD_PER_HOUR;
34
35
36 public static final MoneyPerDurationUnit USD_PER_DAY;
37
38
39 private static MoneyPerDurationUnit standardMoneyPerDurationUnit;
40
41 static
42 {
43 EUR_PER_HOUR = new MoneyPerDurationUnit(MoneyUnit.EUR, DurationUnit.HOUR, "EUR per hour", "\u20AC/h", false);
44 EUR_PER_DAY = new MoneyPerDurationUnit(MoneyUnit.EUR, DurationUnit.DAY, "EUR per day", "\u20AC/day", false);
45 USD_PER_HOUR = new MoneyPerDurationUnit(MoneyUnit.USD, DurationUnit.HOUR, "USD per hour", "US$/h", false);
46 USD_PER_DAY = new MoneyPerDurationUnit(MoneyUnit.USD, DurationUnit.DAY, "USD per day", "US$/day", false);
47 standardMoneyPerDurationUnit = EUR_PER_HOUR;
48 }
49
50
51
52
53
54
55
56
57
58
59 private MoneyPerDurationUnit(final MoneyUnit moneyUnit, final DurationUnit durationUnit, final String nameOrNameKey,
60 final String abbreviationOrAbbreviationKey, final boolean standardUnit)
61 {
62 super(nameOrNameKey, abbreviationOrAbbreviationKey, UnitSystem.OTHER, standardMoneyPerDurationUnit,
63 moneyUnit.getScaleFactor() / durationUnit.getScaleFactor(), standardUnit);
64 this.moneyUnit = moneyUnit;
65 this.durationUnit = durationUnit;
66 }
67
68
69
70
71
72
73
74
75 public MoneyPerDurationUnit(final MoneyUnit moneyUnit, final DurationUnit durationUnit, final String name,
76 final String abbreviation)
77 {
78 this(moneyUnit, durationUnit, name, abbreviation, false);
79 }
80
81
82
83
84
85
86
87
88
89
90 private MoneyPerDurationUnit(final String nameOrNameKey, final String abbreviationOrAbbreviationKey,
91 final MoneyPerDurationUnit referenceUnit, final double scaleFactorToReferenceUnit, final boolean standardUnit)
92 {
93 super(nameOrNameKey, abbreviationOrAbbreviationKey, UnitSystem.OTHER, referenceUnit, scaleFactorToReferenceUnit,
94 standardUnit);
95 this.moneyUnit = referenceUnit.getMoneyUnit();
96 this.durationUnit = referenceUnit.getDurationUnit();
97 }
98
99
100
101
102
103
104
105
106 public MoneyPerDurationUnit(final String name, final String abbreviation, final MoneyPerDurationUnit referenceUnit,
107 final double scaleFactorToReferenceUnit)
108 {
109 this(name, abbreviation, referenceUnit, scaleFactorToReferenceUnit, false);
110 }
111
112
113
114
115 public final MoneyUnit getMoneyUnit()
116 {
117 return this.moneyUnit;
118 }
119
120
121
122
123 public final DurationUnit getDurationUnit()
124 {
125 return this.durationUnit;
126 }
127
128
129
130
131
132 protected static void setStandardUnit(final MoneyUnit standardMoneyUnit)
133 {
134 try
135 {
136 standardMoneyPerDurationUnit = new MoneyPerDurationUnit(standardMoneyUnit, DurationUnit.HOUR,
137 standardMoneyUnit.getName() + " per hour", standardMoneyUnit.getAbbreviation() + "/h");
138 }
139 catch (Exception e)
140 {
141
142 e = null;
143 }
144 }
145
146
147 @Override
148 public final MoneyPerDurationUnit getStandardUnit()
149 {
150 return standardMoneyPerDurationUnit;
151 }
152
153
154
155
156 public static MoneyPerDurationUnit getStandardMoneyPerDurationUnit()
157 {
158 return standardMoneyPerDurationUnit;
159 }
160
161
162 @Override
163 public final String getSICoefficientsString()
164 {
165 return "1/s";
166 }
167
168 }