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 MoneyPerEnergyUnit extends LinearUnit<MoneyPerEnergyUnit>
16 {
17
18 private static final long serialVersionUID = 20150905L;
19
20
21 private final MoneyUnit moneyUnit;
22
23
24 private final EnergyUnit energyUnit;
25
26
27 public static final MoneyPerEnergyUnit EUR_PER_KILOWATTHOUR;
28
29
30 public static final MoneyPerEnergyUnit EUR_PER_MEGAWATTHOUR;
31
32
33 public static final MoneyPerEnergyUnit EUR_PER_MEGAJOULE;
34
35
36 public static final MoneyPerEnergyUnit USD_PER_KILOWATTHOUR;
37
38
39 public static final MoneyPerEnergyUnit USD_PER_MEGAWATTHOUR;
40
41
42 public static final MoneyPerEnergyUnit USD_PER_MEGAJOULE;
43
44
45 private static MoneyPerEnergyUnit standardMoneyPerEnergyUnit;
46
47 static
48 {
49 EUR_PER_KILOWATTHOUR =
50 new MoneyPerEnergyUnit(MoneyUnit.EUR, EnergyUnit.KILOWATT_HOUR, "EUR per kilowatthour", "\u20AC/kWh", false);
51 EUR_PER_MEGAWATTHOUR =
52 new MoneyPerEnergyUnit(MoneyUnit.EUR, EnergyUnit.MEGAWATT_HOUR, "EUR per megawatthour", "\u20AC/MWh", false);
53 EUR_PER_MEGAJOULE =
54 new MoneyPerEnergyUnit(MoneyUnit.EUR, EnergyUnit.MEGAJOULE, "EUR per megajoule", "\u20AC/MJ", false);
55 USD_PER_KILOWATTHOUR =
56 new MoneyPerEnergyUnit(MoneyUnit.USD, EnergyUnit.KILOWATT_HOUR, "USD per kilowatthour", "US$/kWh", false);
57 USD_PER_MEGAWATTHOUR =
58 new MoneyPerEnergyUnit(MoneyUnit.USD, EnergyUnit.MEGAWATT_HOUR, "USD per megawatthour", "US$/MWh", false);
59 USD_PER_MEGAJOULE = new MoneyPerEnergyUnit(MoneyUnit.USD, EnergyUnit.MEGAJOULE, "USD per megajoule", "US$/MJ", false);
60 standardMoneyPerEnergyUnit = EUR_PER_KILOWATTHOUR;
61 }
62
63
64
65
66
67
68
69
70
71
72 private MoneyPerEnergyUnit(final MoneyUnit moneyUnit, final EnergyUnit energyUnit, final String nameOrNameKey,
73 final String abbreviationOrAbbreviationKey, final boolean standardUnit)
74 {
75 super(nameOrNameKey, abbreviationOrAbbreviationKey, UnitSystem.OTHER, standardMoneyPerEnergyUnit,
76 moneyUnit.getScaleFactor() / energyUnit.getScaleFactor(), standardUnit);
77 this.moneyUnit = moneyUnit;
78 this.energyUnit = energyUnit;
79 }
80
81
82
83
84
85
86
87
88 public MoneyPerEnergyUnit(final MoneyUnit moneyUnit, final EnergyUnit energyUnit, final String name,
89 final String abbreviation)
90 {
91 this(moneyUnit, energyUnit, name, abbreviation, false);
92 }
93
94
95
96
97
98
99
100
101
102
103 private MoneyPerEnergyUnit(final String nameOrNameKey, final String abbreviationOrAbbreviationKey,
104 final MoneyPerEnergyUnit referenceUnit, final double scaleFactorToReferenceUnit, final boolean standardUnit)
105 {
106 super(nameOrNameKey, abbreviationOrAbbreviationKey, UnitSystem.OTHER, referenceUnit, scaleFactorToReferenceUnit,
107 standardUnit);
108 this.moneyUnit = referenceUnit.getMoneyUnit();
109 this.energyUnit = referenceUnit.getEnergyUnit();
110 }
111
112
113
114
115
116
117
118
119 public MoneyPerEnergyUnit(final String name, final String abbreviation, final MoneyPerEnergyUnit referenceUnit,
120 final double scaleFactorToReferenceUnit)
121 {
122 this(name, abbreviation, referenceUnit, scaleFactorToReferenceUnit, false);
123 }
124
125
126
127
128 public final MoneyUnit getMoneyUnit()
129 {
130 return this.moneyUnit;
131 }
132
133
134
135
136 public final EnergyUnit getEnergyUnit()
137 {
138 return this.energyUnit;
139 }
140
141
142
143
144
145 protected static void setStandardUnit(final MoneyUnit standardMoneyUnit)
146 {
147 try
148 {
149 standardMoneyPerEnergyUnit = new MoneyPerEnergyUnit(standardMoneyUnit, EnergyUnit.KILOWATT_HOUR,
150 standardMoneyUnit.getName() + " per kilowatthour", standardMoneyUnit.getAbbreviation() + "/kWh");
151 }
152 catch (Exception e)
153 {
154
155 e = null;
156 }
157 }
158
159
160 @Override
161 public final MoneyPerEnergyUnit getStandardUnit()
162 {
163 return standardMoneyPerEnergyUnit;
164 }
165
166
167
168
169 public static MoneyPerEnergyUnit getStandardMoneyPerEnergyUnit()
170 {
171 return standardMoneyPerEnergyUnit;
172 }
173
174
175 @Override
176 public final String getSICoefficientsString()
177 {
178 return "s2/kgm2";
179 }
180
181 }