View Javadoc
1   package org.djunits.unit;
2   
3   import java.util.ArrayList;
4   
5   import org.djunits.unit.unitsystem.UnitSystem;
6   import org.joda.money.CurrencyUnit;
7   
8   /**
9    * MoneyUnit defines a monetary unit, and wraps the joda money currency unit. At this time, conversion rates between monetary
10   * units are not used. A standard monetary unit, defined as a static variable, can be set to be used in the code.
11   * <p>
12   * Copyright (c) 2015-2019 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
13   * BSD-style license. See <a href="http://djunits.org/docs/license.html">DJUNITS License</a>.
14   * <p>
15   * $LastChangedDate: 2019-03-02 19:06:46 +0100 (Sat, 02 Mar 2019) $, @version $Revision: 342 $, by $Author: averbraeck $,
16   * initial version Sep 03, 2015 <br>
17   * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
18   */
19  public class MoneyUnit extends LinearUnit<MoneyUnit>
20  {
21      // TODO allow for static conversion factors between MoneyUnits.
22      // TODO allow for dynamic conversion factors between MoneyUnits.
23  
24      /** */
25      private static final long serialVersionUID = 20150903L;
26  
27      /** The joda-money CurrencyUnit on which this djunits unit is based. */
28      private final CurrencyUnit currencyUnit;
29  
30      /** the code number of the currency to identify it uniquely. */
31      private final int codeNumber;
32  
33      /** the code string of the currency to identify it uniquely. */
34      private final String codeString;
35  
36      /** The currency 'AED' - United Arab Emirates dirham. */
37      public static final MoneyUnit AED;
38  
39      /** The currency 'AFN' - Afghan afghani. */
40      public static final MoneyUnit AFN;
41  
42      /** The currency 'ALL' - Albanian lek. */
43      public static final MoneyUnit ALL;
44  
45      /** The currency 'AMD' - Armenian dram. */
46      public static final MoneyUnit AMD;
47  
48      /** The currency 'ANG' - Netherlands Antillean guilder. */
49      public static final MoneyUnit ANG;
50  
51      /** The currency 'AOA' - Angolan kwanza. */
52      public static final MoneyUnit AOA;
53  
54      /** The currency 'ARS' - Argentine peso. */
55      public static final MoneyUnit ARS;
56  
57      /** The currency 'AUD' - Australian dollar. */
58      public static final MoneyUnit AUD;
59  
60      /** The currency 'AWG' - Aruban florin. */
61      public static final MoneyUnit AWG;
62  
63      /** The currency 'AZN' - Azerbaijani manat. */
64      public static final MoneyUnit AZN;
65  
66      /** The currency 'BAM' - Bosnia and Herzegovina convertible mark. */
67      public static final MoneyUnit BAM;
68  
69      /** The currency 'BBD' - Barbados dollar. */
70      public static final MoneyUnit BBD;
71  
72      /** The currency 'BDT' - Bangladeshi taka. */
73      public static final MoneyUnit BDT;
74  
75      /** The currency 'BGN' - Bulgarian lev. */
76      public static final MoneyUnit BGN;
77  
78      /** The currency 'BHD' - Bahraini dinar. */
79      public static final MoneyUnit BHD;
80  
81      /** The currency 'BIF' - Burundian franc. */
82      public static final MoneyUnit BIF;
83  
84      /** The currency 'BMD' - Bermudian dollar. */
85      public static final MoneyUnit BMD;
86  
87      /** The currency 'BND' - Brunei dollar. */
88      public static final MoneyUnit BND;
89  
90      /** The currency 'BOB' - Boliviano. */
91      public static final MoneyUnit BOB;
92  
93      /** The currency 'BOV' - Bolivian Mvdol (funds code). */
94      public static final MoneyUnit BOV;
95  
96      /** The currency 'BRL' - Brazilian real. */
97      public static final MoneyUnit BRL;
98  
99      /** The currency 'BSD' - Bahamian dollar. */
100     public static final MoneyUnit BSD;
101 
102     /** The currency 'BTN' - Bhutanese ngultrum. */
103     public static final MoneyUnit BTN;
104 
105     /** The currency 'BWP' - Botswana pula. */
106     public static final MoneyUnit BWP;
107 
108     /** The currency 'BYN' - New Belarusian ruble. */
109     public static final MoneyUnit BYN;
110 
111     /** The currency 'BYR' - Belarusian ruble. */
112     public static final MoneyUnit BYR;
113 
114     /** The currency 'BZD' - Belize dollar. */
115     public static final MoneyUnit BZD;
116 
117     /** The currency 'CAD' - Canadian dollar. */
118     public static final MoneyUnit CAD;
119 
120     /** The currency 'CDF' - Congolese franc. */
121     public static final MoneyUnit CDF;
122 
123     /** The currency 'CHE' - WIR Euro (complementary currency). */
124     public static final MoneyUnit CHE;
125 
126     /** The currency 'CHF' - Swiss franc. */
127     public static final MoneyUnit CHF;
128 
129     /** The currency 'CHW' - WIR Franc (complementary currency). */
130     public static final MoneyUnit CHW;
131 
132     /** The currency 'CLF' - Unidad de Fomento (funds code). */
133     public static final MoneyUnit CLF;
134 
135     /** The currency 'CLP' - Chilean peso. */
136     public static final MoneyUnit CLP;
137 
138     /** The currency 'CNY' - Chinese yuan. */
139     public static final MoneyUnit CNY;
140 
141     /** The currency 'COP' - Colombian peso. */
142     public static final MoneyUnit COP;
143 
144     /** The currency 'COU' - Unidad de Valor Real (UVR) (funds code)[7]. */
145     public static final MoneyUnit COU;
146 
147     /** The currency 'CRC' - Costa Rican colon. */
148     public static final MoneyUnit CRC;
149 
150     /** The currency 'CUC' - Cuban convertible peso. */
151     public static final MoneyUnit CUC;
152 
153     /** The currency 'CUP' - Cuban peso. */
154     public static final MoneyUnit CUP;
155 
156     /** The currency 'CVE' - Cape Verde escudo. */
157     public static final MoneyUnit CVE;
158 
159     /** The currency 'CZK' - Czech koruna. */
160     public static final MoneyUnit CZK;
161 
162     /** The currency 'DJF' - Djiboutian franc. */
163     public static final MoneyUnit DJF;
164 
165     /** The currency 'DKK' - Danish krone. */
166     public static final MoneyUnit DKK;
167 
168     /** The currency 'DOP' - Dominican peso. */
169     public static final MoneyUnit DOP;
170 
171     /** The currency 'DZD' - Algerian dinar. */
172     public static final MoneyUnit DZD;
173 
174     /** The currency 'EGP' - Egyptian pound. */
175     public static final MoneyUnit EGP;
176 
177     /** The currency 'ERN' - Eritrean nakfa. */
178     public static final MoneyUnit ERN;
179 
180     /** The currency 'ETB' - Ethiopian birr. */
181     public static final MoneyUnit ETB;
182 
183     /** The currency 'EUR' - Euro. */
184     public static final MoneyUnit EUR;
185 
186     /** The currency 'FJD' - Fiji dollar. */
187     public static final MoneyUnit FJD;
188 
189     /** The currency 'FKP' - Falkland Islands pound. */
190     public static final MoneyUnit FKP;
191 
192     /** The currency 'GBP' - Pound sterling. */
193     public static final MoneyUnit GBP;
194 
195     /** The currency 'GEL' - Georgian lari. */
196     public static final MoneyUnit GEL;
197 
198     /** The currency 'GHS' - Ghanaian cedi. */
199     public static final MoneyUnit GHS;
200 
201     /** The currency 'GIP' - Gibraltar pound. */
202     public static final MoneyUnit GIP;
203 
204     /** The currency 'GMD' - Gambian dalasi. */
205     public static final MoneyUnit GMD;
206 
207     /** The currency 'GNF' - Guinean franc. */
208     public static final MoneyUnit GNF;
209 
210     /** The currency 'GTQ' - Guatemalan quetzal. */
211     public static final MoneyUnit GTQ;
212 
213     /** The currency 'GYD' - Guyanese dollar. */
214     public static final MoneyUnit GYD;
215 
216     /** The currency 'HKD' - Hong Kong dollar. */
217     public static final MoneyUnit HKD;
218 
219     /** The currency 'HNL' - Honduran lempira. */
220     public static final MoneyUnit HNL;
221 
222     /** The currency 'HRK' - Croatian kuna. */
223     public static final MoneyUnit HRK;
224 
225     /** The currency 'HTG' - Haitian gourde. */
226     public static final MoneyUnit HTG;
227 
228     /** The currency 'HUF' - Hungarian forint. */
229     public static final MoneyUnit HUF;
230 
231     /** The currency 'IDR' - Indonesian rupiah. */
232     public static final MoneyUnit IDR;
233 
234     /** The currency 'ILS' - Israeli new shekel. */
235     public static final MoneyUnit ILS;
236 
237     /** The currency 'INR' - Indian rupee. */
238     public static final MoneyUnit INR;
239 
240     /** The currency 'IQD' - Iraqi dinar. */
241     public static final MoneyUnit IQD;
242 
243     /** The currency 'IRR' - Iranian rial. */
244     public static final MoneyUnit IRR;
245 
246     /** The currency 'ISK' - Icelandic króna. */
247     public static final MoneyUnit ISK;
248 
249     /** The currency 'JMD' - Jamaican dollar. */
250     public static final MoneyUnit JMD;
251 
252     /** The currency 'JOD' - Jordanian dinar. */
253     public static final MoneyUnit JOD;
254 
255     /** The currency 'JPY' - Japanese yen. */
256     public static final MoneyUnit JPY;
257 
258     /** The currency 'KES' - Kenyan shilling. */
259     public static final MoneyUnit KES;
260 
261     /** The currency 'KGS' - Kyrgyzstani som. */
262     public static final MoneyUnit KGS;
263 
264     /** The currency 'KHR' - Cambodian riel. */
265     public static final MoneyUnit KHR;
266 
267     /** The currency 'KMF' - Comoro franc. */
268     public static final MoneyUnit KMF;
269 
270     /** The currency 'KPW' - North Korean won. */
271     public static final MoneyUnit KPW;
272 
273     /** The currency 'KRW' - South Korean won. */
274     public static final MoneyUnit KRW;
275 
276     /** The currency 'KWD' - Kuwaiti dinar. */
277     public static final MoneyUnit KWD;
278 
279     /** The currency 'KYD' - Cayman Islands dollar. */
280     public static final MoneyUnit KYD;
281 
282     /** The currency 'KZT' - Kazakhstani tenge. */
283     public static final MoneyUnit KZT;
284 
285     /** The currency 'LAK' - Lao kip. */
286     public static final MoneyUnit LAK;
287 
288     /** The currency 'LBP' - Lebanese pound. */
289     public static final MoneyUnit LBP;
290 
291     /** The currency 'LKR' - Sri Lankan rupee. */
292     public static final MoneyUnit LKR;
293 
294     /** The currency 'LRD' - Liberian dollar. */
295     public static final MoneyUnit LRD;
296 
297     /** The currency 'LSL' - Lesotho loti. */
298     public static final MoneyUnit LSL;
299 
300     /** The currency 'LYD' - Libyan dinar. */
301     public static final MoneyUnit LYD;
302 
303     /** The currency 'MAD' - Moroccan dirham. */
304     public static final MoneyUnit MAD;
305 
306     /** The currency 'MDL' - Moldovan leu. */
307     public static final MoneyUnit MDL;
308 
309     /** The currency 'MGA' - Malagasy ariary. */
310     public static final MoneyUnit MGA;
311 
312     /** The currency 'MKD' - Macedonian denar. */
313     public static final MoneyUnit MKD;
314 
315     /** The currency 'MMK' - Myanmar kyat. */
316     public static final MoneyUnit MMK;
317 
318     /** The currency 'MNT' - Mongolian tögrög. */
319     public static final MoneyUnit MNT;
320 
321     /** The currency 'MOP' - Macanese pataca. */
322     public static final MoneyUnit MOP;
323 
324     /** The currency 'MRO' - Mauritanian ouguiya. */
325     public static final MoneyUnit MRO;
326 
327     /** The currency 'MUR' - Mauritian rupee. */
328     public static final MoneyUnit MUR;
329 
330     /** The currency 'MVR' - Maldivian rufiyaa. */
331     public static final MoneyUnit MVR;
332 
333     /** The currency 'MWK' - Malawian kwacha. */
334     public static final MoneyUnit MWK;
335 
336     /** The currency 'MXN' - Mexican peso. */
337     public static final MoneyUnit MXN;
338 
339     /** The currency 'MXV' - Mexican Unidad de Inversion (UDI) (funds code). */
340     public static final MoneyUnit MXV;
341 
342     /** The currency 'MYR' - Malaysian ringgit. */
343     public static final MoneyUnit MYR;
344 
345     /** The currency 'MZN' - Mozambican metical. */
346     public static final MoneyUnit MZN;
347 
348     /** The currency 'NAD' - Namibian dollar. */
349     public static final MoneyUnit NAD;
350 
351     /** The currency 'NGN' - Nigerian naira. */
352     public static final MoneyUnit NGN;
353 
354     /** The currency 'NIO' - Nicaraguan córdoba. */
355     public static final MoneyUnit NIO;
356 
357     /** The currency 'NOK' - Norwegian krone. */
358     public static final MoneyUnit NOK;
359 
360     /** The currency 'NPR' - Nepalese rupee. */
361     public static final MoneyUnit NPR;
362 
363     /** The currency 'NZD' - New Zealand dollar. */
364     public static final MoneyUnit NZD;
365 
366     /** The currency 'OMR' - Omani rial. */
367     public static final MoneyUnit OMR;
368 
369     /** The currency 'PAB' - Panamanian balboa. */
370     public static final MoneyUnit PAB;
371 
372     /** The currency 'PEN' - Peruvian Sol. */
373     public static final MoneyUnit PEN;
374 
375     /** The currency 'PGK' - Papua New Guinean kina. */
376     public static final MoneyUnit PGK;
377 
378     /** The currency 'PHP' - Philippine peso. */
379     public static final MoneyUnit PHP;
380 
381     /** The currency 'PKR' - Pakistani rupee. */
382     public static final MoneyUnit PKR;
383 
384     /** The currency 'PLN' - Polish zloty. */
385     public static final MoneyUnit PLN;
386 
387     /** The currency 'PYG' - Paraguayan guaraní. */
388     public static final MoneyUnit PYG;
389 
390     /** The currency 'QAR' - Qatari riyal. */
391     public static final MoneyUnit QAR;
392 
393     /** The currency 'RON' - Romanian leu. */
394     public static final MoneyUnit RON;
395 
396     /** The currency 'RSD' - Serbian dinar. */
397     public static final MoneyUnit RSD;
398 
399     /** The currency 'RUB' - Russian ruble. */
400     public static final MoneyUnit RUB;
401 
402     /** The currency 'RWF' - Rwandan franc. */
403     public static final MoneyUnit RWF;
404 
405     /** The currency 'SAR' - Saudi riyal. */
406     public static final MoneyUnit SAR;
407 
408     /** The currency 'SBD' - Solomon Islands dollar. */
409     public static final MoneyUnit SBD;
410 
411     /** The currency 'SCR' - Seychelles rupee. */
412     public static final MoneyUnit SCR;
413 
414     /** The currency 'SDG' - Sudanese pound. */
415     public static final MoneyUnit SDG;
416 
417     /** The currency 'SEK' - Swedish krona/kronor. */
418     public static final MoneyUnit SEK;
419 
420     /** The currency 'SGD' - Singapore dollar. */
421     public static final MoneyUnit SGD;
422 
423     /** The currency 'SHP' - Saint Helena pound. */
424     public static final MoneyUnit SHP;
425 
426     /** The currency 'SLL' - Sierra Leonean leone. */
427     public static final MoneyUnit SLL;
428 
429     /** The currency 'SOS' - Somali shilling. */
430     public static final MoneyUnit SOS;
431 
432     /** The currency 'SRD' - Surinamese dollar. */
433     public static final MoneyUnit SRD;
434 
435     /** The currency 'SSP' - South Sudanese pound. */
436     public static final MoneyUnit SSP;
437 
438     /** The currency 'STD' - São Tomé and Príncipe dobra. */
439     public static final MoneyUnit STD;
440 
441     /** The currency 'SVC' - Salvadoran colón. */
442     public static final MoneyUnit SVC;
443 
444     /** The currency 'SYP' - Syrian pound. */
445     public static final MoneyUnit SYP;
446 
447     /** The currency 'SZL' - Swazi lilangeni. */
448     public static final MoneyUnit SZL;
449 
450     /** The currency 'THB' - Thai baht. */
451     public static final MoneyUnit THB;
452 
453     /** The currency 'TJS' - Tajikistani somoni. */
454     public static final MoneyUnit TJS;
455 
456     /** The currency 'TMT' - Turkmenistani manat. */
457     public static final MoneyUnit TMT;
458 
459     /** The currency 'TND' - Tunisian dinar. */
460     public static final MoneyUnit TND;
461 
462     /** The currency 'TOP' - Tongan pa?anga. */
463     public static final MoneyUnit TOP;
464 
465     /** The currency 'TRY' - Turkish lira. */
466     public static final MoneyUnit TRY;
467 
468     /** The currency 'TTD' - Trinidad and Tobago dollar. */
469     public static final MoneyUnit TTD;
470 
471     /** The currency 'TWD' - New Taiwan dollar. */
472     public static final MoneyUnit TWD;
473 
474     /** The currency 'TZS' - Tanzanian shilling. */
475     public static final MoneyUnit TZS;
476 
477     /** The currency 'UAH' - Ukrainian hryvnia. */
478     public static final MoneyUnit UAH;
479 
480     /** The currency 'UGX' - Ugandan shilling. */
481     public static final MoneyUnit UGX;
482 
483     /** The currency 'USD' - United States dollar. */
484     public static final MoneyUnit USD;
485 
486     /** The currency 'USN' - United States dollar (next day) (funds code). */
487     public static final MoneyUnit USN;
488 
489     /** The currency 'UYI' - Uruguay Peso en Unidades Indexadas (URUIURUI) (funds code). */
490     public static final MoneyUnit UYI;
491 
492     /** The currency 'UYU' - Uruguayan peso. */
493     public static final MoneyUnit UYU;
494 
495     /** The currency 'UZS' - Uzbekistan som. */
496     public static final MoneyUnit UZS;
497 
498     /** The currency 'VEF' - Venezuelan bolívar. */
499     public static final MoneyUnit VEF;
500 
501     /** The currency 'VND' - Vietnamese dong. */
502     public static final MoneyUnit VND;
503 
504     /** The currency 'VUV' - Vanuatu vatu. */
505     public static final MoneyUnit VUV;
506 
507     /** The currency 'WST' - Samoan tala. */
508     public static final MoneyUnit WST;
509 
510     /** The currency 'XAF' - CFA franc BEAC. */
511     public static final MoneyUnit XAF;
512 
513     /** The currency 'XAG' - Silver (one troy ounce). */
514     public static final MoneyUnit XAG;
515 
516     /** The currency 'XAU' - Gold (one troy ounce). */
517     public static final MoneyUnit XAU;
518 
519     /** The currency 'XBA' - European Composite Unit (EURCO) (bond market unit). */
520     public static final MoneyUnit XBA;
521 
522     /** The currency 'XBB' - European Monetary Unit (E.M.U.-6) (bond market unit). */
523     public static final MoneyUnit XBB;
524 
525     /** The currency 'XBC' - European Unit of Account 9 (E.U.A.-9) (bond market unit). */
526     public static final MoneyUnit XBC;
527 
528     /** The currency 'XBD' - European Unit of Account 17 (E.U.A.-17) (bond market unit). */
529     public static final MoneyUnit XBD;
530 
531     /** The currency 'XCD' - East Caribbean dollar. */
532     public static final MoneyUnit XCD;
533 
534     /** The currency 'XDR' - Special drawing rights. */
535     public static final MoneyUnit XDR;
536 
537     /** The currency 'XOF' - CFA franc BCEAO. */
538     public static final MoneyUnit XOF;
539 
540     /** The currency 'XPD' - Palladium (one troy ounce). */
541     public static final MoneyUnit XPD;
542 
543     /** The currency 'XPF' - CFP franc (franc Pacifique). */
544     public static final MoneyUnit XPF;
545 
546     /** The currency 'XPT' - Platinum (one troy ounce). */
547     public static final MoneyUnit XPT;
548 
549     /** The currency 'XSU' - SUCRE. */
550     public static final MoneyUnit XSU;
551 
552     /** The currency 'XTS' - Code reserved for testing purposes. */
553     public static final MoneyUnit XTS;
554 
555     /** The currency 'XUA' - ADB Unit of Account. */
556     public static final MoneyUnit XUA;
557 
558     /** The currency 'X X X' - No currency. */
559     public static final MoneyUnit XXX;
560 
561     /** The currency 'YER' - Yemeni rial. */
562     public static final MoneyUnit YER;
563 
564     /** The currency 'ZAR' - South African rand. */
565     public static final MoneyUnit ZAR;
566 
567     /** The currency 'ZMW' - Zambian kwacha. */
568     public static final MoneyUnit ZMW;
569 
570     /** The currency 'ZWL' - Zimbabwean dollar A/10. */
571     public static final MoneyUnit ZWL;
572 
573     /** The currency 'XBT' - Bitcoin. */
574     public static final MoneyUnit XBT;
575 
576     /** The standard unit to use. */
577     private static MoneyUnit standardMoneyUnit;
578 
579     static
580     {
581         CurrencyUnit.registerCurrency("BOV", 984, 2, new ArrayList<String>());
582         CurrencyUnit.registerCurrency("BYR", 974, 0, new ArrayList<String>());
583         CurrencyUnit.registerCurrency("CHE", 947, 2, new ArrayList<String>());
584         CurrencyUnit.registerCurrency("CHW", 948, 2, new ArrayList<String>());
585         CurrencyUnit.registerCurrency("CLF", 990, 4, new ArrayList<String>());
586         CurrencyUnit.registerCurrency("COU", 970, 2, new ArrayList<String>());
587         CurrencyUnit.registerCurrency("CUC", 931, 2, new ArrayList<String>());
588         CurrencyUnit.registerCurrency("MXV", 979, 2, new ArrayList<String>());
589         CurrencyUnit.registerCurrency("USN", 997, 2, new ArrayList<String>());
590         CurrencyUnit.registerCurrency("UYI", 940, 0, new ArrayList<String>());
591         CurrencyUnit.registerCurrency("XBT", -1, 8, new ArrayList<String>());
592 
593         AED = new MoneyUnit(CurrencyUnit.getInstance("AED"), "MoneyUnit.AED");
594         AFN = new MoneyUnit(CurrencyUnit.getInstance("AFN"), "MoneyUnit.AFN");
595         ALL = new MoneyUnit(CurrencyUnit.getInstance("ALL"), "MoneyUnit.ALL");
596         AMD = new MoneyUnit(CurrencyUnit.getInstance("AMD"), "MoneyUnit.AMD");
597         ANG = new MoneyUnit(CurrencyUnit.getInstance("ANG"), "MoneyUnit.ANG");
598         AOA = new MoneyUnit(CurrencyUnit.getInstance("AOA"), "MoneyUnit.AOA");
599         ARS = new MoneyUnit(CurrencyUnit.getInstance("ARS"), "MoneyUnit.ARS");
600         AUD = new MoneyUnit(CurrencyUnit.getInstance("AUD"), "MoneyUnit.AUD");
601         AWG = new MoneyUnit(CurrencyUnit.getInstance("AWG"), "MoneyUnit.AWG");
602         AZN = new MoneyUnit(CurrencyUnit.getInstance("AZN"), "MoneyUnit.AZN");
603         BAM = new MoneyUnit(CurrencyUnit.getInstance("BAM"), "MoneyUnit.BAM");
604         BBD = new MoneyUnit(CurrencyUnit.getInstance("BBD"), "MoneyUnit.BBD");
605         BDT = new MoneyUnit(CurrencyUnit.getInstance("BDT"), "MoneyUnit.BDT");
606         BGN = new MoneyUnit(CurrencyUnit.getInstance("BGN"), "MoneyUnit.BGN");
607         BHD = new MoneyUnit(CurrencyUnit.getInstance("BHD"), "MoneyUnit.BHD");
608         BIF = new MoneyUnit(CurrencyUnit.getInstance("BIF"), "MoneyUnit.BIF");
609         BMD = new MoneyUnit(CurrencyUnit.getInstance("BMD"), "MoneyUnit.BMD");
610         BND = new MoneyUnit(CurrencyUnit.getInstance("BND"), "MoneyUnit.BND");
611         BOB = new MoneyUnit(CurrencyUnit.getInstance("BOB"), "MoneyUnit.BOB");
612         BOV = new MoneyUnit(CurrencyUnit.getInstance("BOV"), "MoneyUnit.BOV");
613         BRL = new MoneyUnit(CurrencyUnit.getInstance("BRL"), "MoneyUnit.BRL");
614         BSD = new MoneyUnit(CurrencyUnit.getInstance("BSD"), "MoneyUnit.BSD");
615         BTN = new MoneyUnit(CurrencyUnit.getInstance("BTN"), "MoneyUnit.BTN");
616         BWP = new MoneyUnit(CurrencyUnit.getInstance("BWP"), "MoneyUnit.BWP");
617         BYN = new MoneyUnit(CurrencyUnit.getInstance("BYN"), "MoneyUnit.BYN");
618         BYR = new MoneyUnit(CurrencyUnit.getInstance("BYR"), "MoneyUnit.BYR");
619         BZD = new MoneyUnit(CurrencyUnit.getInstance("BZD"), "MoneyUnit.BZD");
620         CAD = new MoneyUnit(CurrencyUnit.getInstance("CAD"), "MoneyUnit.CAD");
621         CDF = new MoneyUnit(CurrencyUnit.getInstance("CDF"), "MoneyUnit.CDF");
622         CHE = new MoneyUnit(CurrencyUnit.getInstance("CHE"), "MoneyUnit.CHE");
623         CHF = new MoneyUnit(CurrencyUnit.getInstance("CHF"), "MoneyUnit.CHF");
624         CHW = new MoneyUnit(CurrencyUnit.getInstance("CHW"), "MoneyUnit.CHW");
625         CLF = new MoneyUnit(CurrencyUnit.getInstance("CLF"), "MoneyUnit.CLF");
626         CLP = new MoneyUnit(CurrencyUnit.getInstance("CLP"), "MoneyUnit.CLP");
627         CNY = new MoneyUnit(CurrencyUnit.getInstance("CNY"), "MoneyUnit.CNY");
628         COP = new MoneyUnit(CurrencyUnit.getInstance("COP"), "MoneyUnit.COP");
629         COU = new MoneyUnit(CurrencyUnit.getInstance("COU"), "MoneyUnit.COU");
630         CRC = new MoneyUnit(CurrencyUnit.getInstance("CRC"), "MoneyUnit.CRC");
631         CUC = new MoneyUnit(CurrencyUnit.getInstance("CUC"), "MoneyUnit.CUC");
632         CUP = new MoneyUnit(CurrencyUnit.getInstance("CUP"), "MoneyUnit.CUP");
633         CVE = new MoneyUnit(CurrencyUnit.getInstance("CVE"), "MoneyUnit.CVE");
634         CZK = new MoneyUnit(CurrencyUnit.getInstance("CZK"), "MoneyUnit.CZK");
635         DJF = new MoneyUnit(CurrencyUnit.getInstance("DJF"), "MoneyUnit.DJF");
636         DKK = new MoneyUnit(CurrencyUnit.getInstance("DKK"), "MoneyUnit.DKK");
637         DOP = new MoneyUnit(CurrencyUnit.getInstance("DOP"), "MoneyUnit.DOP");
638         DZD = new MoneyUnit(CurrencyUnit.getInstance("DZD"), "MoneyUnit.DZD");
639         EGP = new MoneyUnit(CurrencyUnit.getInstance("EGP"), "MoneyUnit.EGP");
640         ERN = new MoneyUnit(CurrencyUnit.getInstance("ERN"), "MoneyUnit.ERN");
641         ETB = new MoneyUnit(CurrencyUnit.getInstance("ETB"), "MoneyUnit.ETB");
642         EUR = new MoneyUnit(CurrencyUnit.getInstance("EUR"), "MoneyUnit.EUR");
643         FJD = new MoneyUnit(CurrencyUnit.getInstance("FJD"), "MoneyUnit.FJD");
644         FKP = new MoneyUnit(CurrencyUnit.getInstance("FKP"), "MoneyUnit.FKP");
645         GBP = new MoneyUnit(CurrencyUnit.getInstance("GBP"), "MoneyUnit.GBP");
646         GEL = new MoneyUnit(CurrencyUnit.getInstance("GEL"), "MoneyUnit.GEL");
647         GHS = new MoneyUnit(CurrencyUnit.getInstance("GHS"), "MoneyUnit.GHS");
648         GIP = new MoneyUnit(CurrencyUnit.getInstance("GIP"), "MoneyUnit.GIP");
649         GMD = new MoneyUnit(CurrencyUnit.getInstance("GMD"), "MoneyUnit.GMD");
650         GNF = new MoneyUnit(CurrencyUnit.getInstance("GNF"), "MoneyUnit.GNF");
651         GTQ = new MoneyUnit(CurrencyUnit.getInstance("GTQ"), "MoneyUnit.GTQ");
652         GYD = new MoneyUnit(CurrencyUnit.getInstance("GYD"), "MoneyUnit.GYD");
653         HKD = new MoneyUnit(CurrencyUnit.getInstance("HKD"), "MoneyUnit.HKD");
654         HNL = new MoneyUnit(CurrencyUnit.getInstance("HNL"), "MoneyUnit.HNL");
655         HRK = new MoneyUnit(CurrencyUnit.getInstance("HRK"), "MoneyUnit.HRK");
656         HTG = new MoneyUnit(CurrencyUnit.getInstance("HTG"), "MoneyUnit.HTG");
657         HUF = new MoneyUnit(CurrencyUnit.getInstance("HUF"), "MoneyUnit.HUF");
658         IDR = new MoneyUnit(CurrencyUnit.getInstance("IDR"), "MoneyUnit.IDR");
659         ILS = new MoneyUnit(CurrencyUnit.getInstance("ILS"), "MoneyUnit.ILS");
660         INR = new MoneyUnit(CurrencyUnit.getInstance("INR"), "MoneyUnit.INR");
661         IQD = new MoneyUnit(CurrencyUnit.getInstance("IQD"), "MoneyUnit.IQD");
662         IRR = new MoneyUnit(CurrencyUnit.getInstance("IRR"), "MoneyUnit.IRR");
663         ISK = new MoneyUnit(CurrencyUnit.getInstance("ISK"), "MoneyUnit.ISK");
664         JMD = new MoneyUnit(CurrencyUnit.getInstance("JMD"), "MoneyUnit.JMD");
665         JOD = new MoneyUnit(CurrencyUnit.getInstance("JOD"), "MoneyUnit.JOD");
666         JPY = new MoneyUnit(CurrencyUnit.getInstance("JPY"), "MoneyUnit.JPY");
667         KES = new MoneyUnit(CurrencyUnit.getInstance("KES"), "MoneyUnit.KES");
668         KGS = new MoneyUnit(CurrencyUnit.getInstance("KGS"), "MoneyUnit.KGS");
669         KHR = new MoneyUnit(CurrencyUnit.getInstance("KHR"), "MoneyUnit.KHR");
670         KMF = new MoneyUnit(CurrencyUnit.getInstance("KMF"), "MoneyUnit.KMF");
671         KPW = new MoneyUnit(CurrencyUnit.getInstance("KPW"), "MoneyUnit.KPW");
672         KRW = new MoneyUnit(CurrencyUnit.getInstance("KRW"), "MoneyUnit.KRW");
673         KWD = new MoneyUnit(CurrencyUnit.getInstance("KWD"), "MoneyUnit.KWD");
674         KYD = new MoneyUnit(CurrencyUnit.getInstance("KYD"), "MoneyUnit.KYD");
675         KZT = new MoneyUnit(CurrencyUnit.getInstance("KZT"), "MoneyUnit.KZT");
676         LAK = new MoneyUnit(CurrencyUnit.getInstance("LAK"), "MoneyUnit.LAK");
677         LBP = new MoneyUnit(CurrencyUnit.getInstance("LBP"), "MoneyUnit.LBP");
678         LKR = new MoneyUnit(CurrencyUnit.getInstance("LKR"), "MoneyUnit.LKR");
679         LRD = new MoneyUnit(CurrencyUnit.getInstance("LRD"), "MoneyUnit.LRD");
680         LSL = new MoneyUnit(CurrencyUnit.getInstance("LSL"), "MoneyUnit.LSL");
681         LYD = new MoneyUnit(CurrencyUnit.getInstance("LYD"), "MoneyUnit.LYD");
682         MAD = new MoneyUnit(CurrencyUnit.getInstance("MAD"), "MoneyUnit.MAD");
683         MDL = new MoneyUnit(CurrencyUnit.getInstance("MDL"), "MoneyUnit.MDL");
684         MGA = new MoneyUnit(CurrencyUnit.getInstance("MGA"), "MoneyUnit.MGA");
685         MKD = new MoneyUnit(CurrencyUnit.getInstance("MKD"), "MoneyUnit.MKD");
686         MMK = new MoneyUnit(CurrencyUnit.getInstance("MMK"), "MoneyUnit.MMK");
687         MNT = new MoneyUnit(CurrencyUnit.getInstance("MNT"), "MoneyUnit.MNT");
688         MOP = new MoneyUnit(CurrencyUnit.getInstance("MOP"), "MoneyUnit.MOP");
689         MRO = new MoneyUnit(CurrencyUnit.getInstance("MRO"), "MoneyUnit.MRO");
690         MUR = new MoneyUnit(CurrencyUnit.getInstance("MUR"), "MoneyUnit.MUR");
691         MVR = new MoneyUnit(CurrencyUnit.getInstance("MVR"), "MoneyUnit.MVR");
692         MWK = new MoneyUnit(CurrencyUnit.getInstance("MWK"), "MoneyUnit.MWK");
693         MXN = new MoneyUnit(CurrencyUnit.getInstance("MXN"), "MoneyUnit.MXN");
694         MXV = new MoneyUnit(CurrencyUnit.getInstance("MXV"), "MoneyUnit.MXV");
695         MYR = new MoneyUnit(CurrencyUnit.getInstance("MYR"), "MoneyUnit.MYR");
696         MZN = new MoneyUnit(CurrencyUnit.getInstance("MZN"), "MoneyUnit.MZN");
697         NAD = new MoneyUnit(CurrencyUnit.getInstance("NAD"), "MoneyUnit.NAD");
698         NGN = new MoneyUnit(CurrencyUnit.getInstance("NGN"), "MoneyUnit.NGN");
699         NIO = new MoneyUnit(CurrencyUnit.getInstance("NIO"), "MoneyUnit.NIO");
700         NOK = new MoneyUnit(CurrencyUnit.getInstance("NOK"), "MoneyUnit.NOK");
701         NPR = new MoneyUnit(CurrencyUnit.getInstance("NPR"), "MoneyUnit.NPR");
702         NZD = new MoneyUnit(CurrencyUnit.getInstance("NZD"), "MoneyUnit.NZD");
703         OMR = new MoneyUnit(CurrencyUnit.getInstance("OMR"), "MoneyUnit.OMR");
704         PAB = new MoneyUnit(CurrencyUnit.getInstance("PAB"), "MoneyUnit.PAB");
705         PEN = new MoneyUnit(CurrencyUnit.getInstance("PEN"), "MoneyUnit.PEN");
706         PGK = new MoneyUnit(CurrencyUnit.getInstance("PGK"), "MoneyUnit.PGK");
707         PHP = new MoneyUnit(CurrencyUnit.getInstance("PHP"), "MoneyUnit.PHP");
708         PKR = new MoneyUnit(CurrencyUnit.getInstance("PKR"), "MoneyUnit.PKR");
709         PLN = new MoneyUnit(CurrencyUnit.getInstance("PLN"), "MoneyUnit.PLN");
710         PYG = new MoneyUnit(CurrencyUnit.getInstance("PYG"), "MoneyUnit.PYG");
711         QAR = new MoneyUnit(CurrencyUnit.getInstance("QAR"), "MoneyUnit.QAR");
712         RON = new MoneyUnit(CurrencyUnit.getInstance("RON"), "MoneyUnit.RON");
713         RSD = new MoneyUnit(CurrencyUnit.getInstance("RSD"), "MoneyUnit.RSD");
714         RUB = new MoneyUnit(CurrencyUnit.getInstance("RUB"), "MoneyUnit.RUB");
715         RWF = new MoneyUnit(CurrencyUnit.getInstance("RWF"), "MoneyUnit.RWF");
716         SAR = new MoneyUnit(CurrencyUnit.getInstance("SAR"), "MoneyUnit.SAR");
717         SBD = new MoneyUnit(CurrencyUnit.getInstance("SBD"), "MoneyUnit.SBD");
718         SCR = new MoneyUnit(CurrencyUnit.getInstance("SCR"), "MoneyUnit.SCR");
719         SDG = new MoneyUnit(CurrencyUnit.getInstance("SDG"), "MoneyUnit.SDG");
720         SEK = new MoneyUnit(CurrencyUnit.getInstance("SEK"), "MoneyUnit.SEK");
721         SGD = new MoneyUnit(CurrencyUnit.getInstance("SGD"), "MoneyUnit.SGD");
722         SHP = new MoneyUnit(CurrencyUnit.getInstance("SHP"), "MoneyUnit.SHP");
723         SLL = new MoneyUnit(CurrencyUnit.getInstance("SLL"), "MoneyUnit.SLL");
724         SOS = new MoneyUnit(CurrencyUnit.getInstance("SOS"), "MoneyUnit.SOS");
725         SRD = new MoneyUnit(CurrencyUnit.getInstance("SRD"), "MoneyUnit.SRD");
726         SSP = new MoneyUnit(CurrencyUnit.getInstance("SSP"), "MoneyUnit.SSP");
727         STD = new MoneyUnit(CurrencyUnit.getInstance("STD"), "MoneyUnit.STD");
728         SVC = new MoneyUnit(CurrencyUnit.getInstance("SVC"), "MoneyUnit.SVC");
729         SYP = new MoneyUnit(CurrencyUnit.getInstance("SYP"), "MoneyUnit.SYP");
730         SZL = new MoneyUnit(CurrencyUnit.getInstance("SZL"), "MoneyUnit.SZL");
731         THB = new MoneyUnit(CurrencyUnit.getInstance("THB"), "MoneyUnit.THB");
732         TJS = new MoneyUnit(CurrencyUnit.getInstance("TJS"), "MoneyUnit.TJS");
733         TMT = new MoneyUnit(CurrencyUnit.getInstance("TMT"), "MoneyUnit.TMT");
734         TND = new MoneyUnit(CurrencyUnit.getInstance("TND"), "MoneyUnit.TND");
735         TOP = new MoneyUnit(CurrencyUnit.getInstance("TOP"), "MoneyUnit.TOP");
736         TRY = new MoneyUnit(CurrencyUnit.getInstance("TRY"), "MoneyUnit.TRY");
737         TTD = new MoneyUnit(CurrencyUnit.getInstance("TTD"), "MoneyUnit.TTD");
738         TWD = new MoneyUnit(CurrencyUnit.getInstance("TWD"), "MoneyUnit.TWD");
739         TZS = new MoneyUnit(CurrencyUnit.getInstance("TZS"), "MoneyUnit.TZS");
740         UAH = new MoneyUnit(CurrencyUnit.getInstance("UAH"), "MoneyUnit.UAH");
741         UGX = new MoneyUnit(CurrencyUnit.getInstance("UGX"), "MoneyUnit.UGX");
742         USD = new MoneyUnit(CurrencyUnit.getInstance("USD"), "MoneyUnit.USD");
743         USN = new MoneyUnit(CurrencyUnit.getInstance("USN"), "MoneyUnit.USN");
744         UYI = new MoneyUnit(CurrencyUnit.getInstance("UYI"), "MoneyUnit.UYI");
745         UYU = new MoneyUnit(CurrencyUnit.getInstance("UYU"), "MoneyUnit.UYU");
746         UZS = new MoneyUnit(CurrencyUnit.getInstance("UZS"), "MoneyUnit.UZS");
747         VEF = new MoneyUnit(CurrencyUnit.getInstance("VEF"), "MoneyUnit.VEF");
748         VND = new MoneyUnit(CurrencyUnit.getInstance("VND"), "MoneyUnit.VND");
749         VUV = new MoneyUnit(CurrencyUnit.getInstance("VUV"), "MoneyUnit.VUV");
750         WST = new MoneyUnit(CurrencyUnit.getInstance("WST"), "MoneyUnit.WST");
751         XAF = new MoneyUnit(CurrencyUnit.getInstance("XAF"), "MoneyUnit.XAF");
752         XAG = new MoneyUnit(CurrencyUnit.getInstance("XAG"), "MoneyUnit.XAG");
753         XAU = new MoneyUnit(CurrencyUnit.getInstance("XAU"), "MoneyUnit.XAU");
754         XBA = new MoneyUnit(CurrencyUnit.getInstance("XBA"), "MoneyUnit.XBA");
755         XBB = new MoneyUnit(CurrencyUnit.getInstance("XBB"), "MoneyUnit.XBB");
756         XBC = new MoneyUnit(CurrencyUnit.getInstance("XBC"), "MoneyUnit.XBC");
757         XBD = new MoneyUnit(CurrencyUnit.getInstance("XBD"), "MoneyUnit.XBD");
758         XCD = new MoneyUnit(CurrencyUnit.getInstance("XCD"), "MoneyUnit.XCD");
759         XDR = new MoneyUnit(CurrencyUnit.getInstance("XDR"), "MoneyUnit.XDR");
760         XOF = new MoneyUnit(CurrencyUnit.getInstance("XOF"), "MoneyUnit.XOF");
761         XPD = new MoneyUnit(CurrencyUnit.getInstance("XPD"), "MoneyUnit.XPD");
762         XPF = new MoneyUnit(CurrencyUnit.getInstance("XPF"), "MoneyUnit.XPF");
763         XPT = new MoneyUnit(CurrencyUnit.getInstance("XPT"), "MoneyUnit.XPT");
764         XSU = new MoneyUnit(CurrencyUnit.getInstance("XSU"), "MoneyUnit.XSU");
765         XTS = new MoneyUnit(CurrencyUnit.getInstance("XTS"), "MoneyUnit.XTS");
766         XUA = new MoneyUnit(CurrencyUnit.getInstance("XUA"), "MoneyUnit.XUA");
767         XXX = new MoneyUnit(CurrencyUnit.getInstance("XXX"), "MoneyUnit.XXX");
768         YER = new MoneyUnit(CurrencyUnit.getInstance("YER"), "MoneyUnit.YER");
769         ZAR = new MoneyUnit(CurrencyUnit.getInstance("ZAR"), "MoneyUnit.ZAR");
770         ZMW = new MoneyUnit(CurrencyUnit.getInstance("ZMW"), "MoneyUnit.ZMW");
771         ZWL = new MoneyUnit(CurrencyUnit.getInstance("ZWL"), "MoneyUnit.ZWL");
772         XBT = new MoneyUnit(CurrencyUnit.getInstance("XBT"), "MoneyUnit.XBT");
773 
774         standardMoneyUnit = USD;
775     }
776 
777     /**
778      * Define money unit.
779      * @param currencyUnit CurrencyUnit; the joda-money CurrencyUnit on which this djunits unit is based
780      * @param abbreviationKey String; the key to the locale file for the abbreviation of the unit
781      */
782     private MoneyUnit(final CurrencyUnit currencyUnit, final String abbreviationKey)
783     {
784         super(abbreviationKey, UnitSystem.OTHER);
785         this.currencyUnit = currencyUnit;
786         this.codeNumber = currencyUnit.getNumericCode();
787         this.codeString = currencyUnit.getCode();
788     }
789 
790     /**
791      * Build a user-defined money unit.
792      * @param currencyUnit CurrencyUnit; the joda-money CurrencyUnit on which this djunits unit is based
793      * @param name String; the long name of the unit
794      * @param abbreviation String; the abbreviation of the unit
795      */
796     public MoneyUnit(final CurrencyUnit currencyUnit, final String name, final String abbreviation)
797     {
798         super(name, abbreviation, UnitSystem.OTHER);
799         this.currencyUnit = currencyUnit;
800         this.codeNumber = currencyUnit.getNumericCode();
801         this.codeString = currencyUnit.getCode();
802     }
803 
804     /**
805      * Build a money unit based on another money unit with a conversion factor.
806      * @param currencyUnit CurrencyUnit; the joda-money CurrencyUnit on which this djunits unit is based
807      * @param abbreviationKey String; the key to the locale file for the abbreviation of the unit
808      * @param referenceUnit MoneyUnit; the unit to convert to
809      * @param scaleFactorToReferenceUnit double; multiply a value in this unit by the factor to convert to the given reference
810      *            unit
811      */
812     private MoneyUnit(final CurrencyUnit currencyUnit, final String abbreviationKey, final MoneyUnit referenceUnit,
813             final double scaleFactorToReferenceUnit)
814     {
815         super(abbreviationKey, UnitSystem.OTHER, referenceUnit, scaleFactorToReferenceUnit);
816         this.currencyUnit = currencyUnit;
817         this.codeNumber = currencyUnit.getNumericCode();
818         this.codeString = currencyUnit.getCode();
819     }
820 
821     /**
822      * Build a user-defined money unit based on another money unit with a conversion factor.
823      * @param currencyUnit CurrencyUnit; the joda-money CurrencyUnit on which this djunits unit is based
824      * @param name String; the long name of the unit
825      * @param abbreviation String; the abbreviation of the unit
826      * @param referenceUnit MoneyUnit; the unit to convert to
827      * @param scaleFactorToReferenceUnit double; multiply a value in this unit by the factor to convert to the given reference
828      *            unit
829      */
830     public MoneyUnit(final CurrencyUnit currencyUnit, final String name, final String abbreviation,
831             final MoneyUnit referenceUnit, final double scaleFactorToReferenceUnit)
832     {
833         super(name, abbreviation, UnitSystem.OTHER, referenceUnit, scaleFactorToReferenceUnit);
834         this.currencyUnit = currencyUnit;
835         this.codeNumber = currencyUnit.getNumericCode();
836         this.codeString = currencyUnit.getCode();
837     }
838 
839     /**
840      * @return the joda-money CurrencyUnit on which this djunits unit is based.
841      */
842     public final CurrencyUnit getCurrencyUnit()
843     {
844         return this.currencyUnit;
845     }
846 
847     /**
848      * Set the standard money unit to be used.
849      * @param moneyUnit MoneyUnit; the new standard money unit.
850      */
851     public static final void setStandardUnit(final MoneyUnit moneyUnit)
852     {
853         standardMoneyUnit = moneyUnit;
854         MoneyPerAreaUnit.setStandardUnit(moneyUnit);
855         MoneyPerEnergyUnit.setStandardUnit(moneyUnit);
856         MoneyPerLengthUnit.setStandardUnit(moneyUnit);
857         MoneyPerMassUnit.setStandardUnit(moneyUnit);
858         MoneyPerDurationUnit.setStandardUnit(moneyUnit);
859         MoneyPerVolumeUnit.setStandardUnit(moneyUnit);
860     }
861 
862     /** {@inheritDoc} */
863     @Override
864     public final MoneyUnit getStandardUnit()
865     {
866         return standardMoneyUnit;
867     }
868 
869     /**
870      * @return the current standard money unit
871      */
872     public static final MoneyUnit getStandardMoneyUnit()
873     {
874         return standardMoneyUnit;
875     }
876 
877     /** {@inheritDoc} */
878     @Override
879     public final String getSICoefficientsString()
880     {
881         return "1";
882     }
883 
884     /** {@inheritDoc} */
885     @Override
886     public int hashCode()
887     {
888         final int prime = 31;
889         int result = super.hashCode();
890         result = prime * result + this.codeNumber;
891         result = prime * result + ((this.codeString == null) ? 0 : this.codeString.hashCode());
892         return result;
893     }
894 
895     /** {@inheritDoc} */
896     @SuppressWarnings("checkstyle:needbraces")
897     @Override
898     public boolean equals(final Object obj)
899     {
900         if (this == obj)
901             return true;
902         if (!super.equals(obj))
903             return false;
904         if (getClass() != obj.getClass())
905             return false;
906         MoneyUnit other = (MoneyUnit) obj;
907         if (this.codeNumber != other.codeNumber)
908             return false;
909         if (this.codeString == null)
910         {
911             if (other.codeString != null)
912                 return false;
913         }
914         else if (!this.codeString.equals(other.codeString))
915             return false;
916         return true;
917     }
918 
919     /** {@inheritDoc} */
920     @SuppressWarnings("checkstyle:needbraces")
921     @Override
922     public boolean equalsIgnoreNaming(final Object obj)
923     {
924         // the difference lies in the codenumber.
925         if (this == obj)
926             return true;
927         if (getClass() != obj.getClass())
928             return false;
929         MoneyUnit other = (MoneyUnit) obj;
930         return (this.codeNumber == other.codeNumber);
931     }
932 
933 }