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