1 /*
2 * MoneyWise: Finance Application
3 * Copyright 2012-2026. Tony Washer
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
6 * use this file except in compliance with the License. You may obtain a copy
7 * of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 * License for the specific language governing permissions and limitations under
15 * the License.
16 */
17 package io.github.tonywasher.joceanus.moneywise.data.statics;
18
19 import io.github.tonywasher.joceanus.oceanus.base.OceanusException;
20 import io.github.tonywasher.joceanus.moneywise.exc.MoneyWiseDataException;
21 import io.github.tonywasher.joceanus.prometheus.data.PrometheusStaticDataClass;
22
23 import java.util.Currency;
24
25 /**
26 * Enumeration of Currency Classes.
27 */
28 public enum MoneyWiseCurrencyClass
29 implements PrometheusStaticDataClass {
30 /**
31 * British Pounds.
32 */
33 GBP(1, 0),
34
35 /**
36 * US Dollars.
37 */
38 USD(2, 1),
39
40 /**
41 * EU Euro.
42 */
43 EUR(3, 2),
44
45 /**
46 * Canadian Dollars.
47 */
48 CAD(4, 3),
49
50 /**
51 * Australian Dollars.
52 */
53 AUD(5, 4),
54
55 /**
56 * NewZealand Dollars.
57 */
58 NZD(6, 5),
59
60 /**
61 * Chinese Yuan.
62 */
63 CNY(7, 6),
64
65 /**
66 * Japanese Yen.
67 */
68 JPY(8, 7),
69
70 /**
71 * HongKong Dollars.
72 */
73 HKD(9, 8),
74
75 /**
76 * South Korean Won.
77 */
78 KRW(10, 9),
79
80 /**
81 * Indian Rupee.
82 */
83 INR(11, 10),
84
85 /**
86 * Russian Rouble.
87 */
88 RUB(12, 11),
89
90 /**
91 * SouthAfrican Rand.
92 */
93 ZAR(13, 12),
94
95 /**
96 * Brazilian Real.
97 */
98 BRL(14, 13),
99
100 /**
101 * Albanian Lek.
102 */
103 ALL(15, 14),
104
105 /**
106 * Armenian Dram.
107 */
108 AMD(16, 15),
109
110 /**
111 * Azerbaijan New Manat.
112 */
113 AZN(17, 16),
114
115 /**
116 * Bosnia/Herzegovina Marka.
117 */
118 BAM(18, 17),
119
120 /**
121 * Bulgarian Lev.
122 */
123 BGN(19, 18),
124
125 /**
126 * Belarus Rouble.
127 */
128 BYN(20, 19),
129
130 /**
131 * Swiss Franc.
132 */
133 CHF(21, 20),
134
135 /**
136 * Czech Koruna.
137 */
138 CZK(22, 21),
139
140 /**
141 * Danish Krona.
142 */
143 DKK(23, 22),
144
145 /**
146 * Georgian Lari.
147 */
148 GEL(24, 23),
149
150 /**
151 * Hungarian Forint.
152 */
153 HUF(25, 24),
154
155 /**
156 * Iceland Koruna.
157 */
158 ISK(26, 25),
159
160 /**
161 * Lithuanian Litas.
162 */
163 LTL(27, 26),
164
165 /**
166 * Latvian Lat.
167 */
168 LVL(28, 29),
169
170 /**
171 * Moldovan Leu.
172 */
173 MDL(29, 28),
174
175 /**
176 * Macedonian Denar.
177 */
178 MKD(30, 29),
179
180 /**
181 * Norwegian Krona.
182 */
183 NOK(31, 30),
184
185 /**
186 * Polish Zloty.
187 */
188 PLN(32, 31),
189
190 /**
191 * Romanian New Leu.
192 */
193 RON(33, 32),
194
195 /**
196 * Serbian Dinar.
197 */
198 RSD(34, 33),
199
200 /**
201 * Swedish Krona.
202 */
203 SEK(35, 34),
204
205 /**
206 * Ukrainian Hryvna.
207 */
208 UAH(36, 35),
209
210 /**
211 * UAE Dinar.
212 */
213 AED(37, 36),
214
215 /**
216 * Afghanistan Afghani.
217 */
218 AFN(38, 37),
219
220 /**
221 * Bangladesh Taka.
222 */
223 BDT(39, 38),
224
225 /**
226 * Bahrain Dinar.
227 */
228 BHD(40, 39),
229
230 /**
231 * Brunei Dollar.
232 */
233 BND(41, 40),
234
235 /**
236 * Bhutan Ngultrum.
237 */
238 BTN(42, 41),
239
240 /**
241 * Indonesian Rupiah.
242 */
243 IDR(43, 42),
244
245 /**
246 * Israeli Shekel.
247 */
248 ILS(44, 43),
249
250 /**
251 * Iraqi Dinar.
252 */
253 IQD(45, 44),
254
255 /**
256 * Iranian Rial.
257 */
258 IRR(46, 45),
259
260 /**
261 * Jordan Dinar.
262 */
263 JOD(47, 46),
264
265 /**
266 * Kyrgystan Som.
267 */
268 KGS(48, 47),
269
270 /**
271 * Cambodian Riel.
272 */
273 KHR(49, 48),
274
275 /**
276 * Kuwaiti Dinar.
277 */
278 KWD(50, 49),
279
280 /**
281 * Kazakhstan Tenge.
282 */
283 KZT(51, 50),
284
285 /**
286 * Laos Kip.
287 */
288 LAK(52, 51),
289
290 /**
291 * Lebanon Pound.
292 */
293 LBP(53, 52),
294
295 /**
296 * SriLanka Rupee.
297 */
298 LKR(54, 53),
299
300 /**
301 * Myanmar Yat.
302 */
303 MMK(55, 54),
304
305 /**
306 * Mongolian Tughrik.
307 */
308 MNT(56, 55),
309
310 /**
311 * Macau Pataca.
312 */
313 MOP(57, 56),
314
315 /**
316 * Malaysian Ringgit.
317 */
318 MYR(58, 576),
319
320 /**
321 * Nepal Rupee.
322 */
323 NPR(59, 58),
324
325 /**
326 * Oman Rial.
327 */
328 OMR(60, 59),
329
330 /**
331 * Papua New Guinea Kina.
332 */
333 PGK(61, 60),
334
335 /**
336 * Phillipines Peso.
337 */
338 PHP(62, 61),
339
340 /**
341 * Pakistan Rupee.
342 */
343 PKR(63, 62),
344
345 /**
346 * Qatar Rial.
347 */
348 QAR(64, 63),
349
350 /**
351 * Saudi Riyal.
352 */
353 SAR(65, 64),
354
355 /**
356 * Singapore Dollar.
357 */
358 SGD(66, 65),
359
360 /**
361 * Syrian Pound.
362 */
363 SYP(67, 66),
364
365 /**
366 * Thailand Baht.
367 */
368 THB(68, 67),
369
370 /**
371 * Tajikstan Somoni.
372 */
373 TJS(69, 68),
374
375 /**
376 * Turkmenistan Manat.
377 */
378 TMT(70, 69),
379
380 /**
381 * Turkish Lira.
382 */
383 TRY(71, 70),
384
385 /**
386 * Taiwan Dollar.
387 */
388 TWD(72, 71),
389
390 /**
391 * Uzbekistan Som.
392 */
393 UZS(73, 72),
394
395 /**
396 * Vietnam Dong.
397 */
398 VND(74, 73),
399
400 /**
401 * Netherlands Antilles Guilderr.
402 */
403 ANG(75, 74),
404
405 /**
406 * Aruba Florin.
407 */
408 AWG(76, 75),
409
410 /**
411 * Barbados Dollar.
412 */
413 BBD(77, 76),
414
415 /**
416 * Bermuda Dollar.
417 */
418 BMD(78, 77),
419
420 /**
421 * Bahamas Dollar.
422 */
423 BSD(79, 78),
424
425 /**
426 * Belize Dollar.
427 */
428 BZD(80, 79),
429
430 /**
431 * Costa Rica Colon.
432 */
433 CRC(81, 80),
434
435 /**
436 * Cuban Convertable Peso.
437 */
438 CUC(82, 81),
439
440 /**
441 * Cuban Peso.
442 */
443 CUP(83, 82),
444
445 /**
446 * Dominican Republic Peso.
447 */
448 DOP(84, 83),
449
450 /**
451 * Guatemalan Quetzal.
452 */
453 GTQ(85, 84),
454
455 /**
456 * Honduras Lempira.
457 */
458 HNL(86, 85),
459
460 /**
461 * Haitian Gourde.
462 */
463 HTG(87, 86),
464
465 /**
466 * Jamaican Dollar.
467 */
468 JMD(88, 87),
469
470 /**
471 * Cayman Islands Dollar.
472 */
473 KYD(89, 88),
474
475 /**
476 * Mexican Peso.
477 */
478 MXN(90, 89),
479
480 /**
481 * Nicaraguan Cordoba.
482 */
483 NIO(91, 90),
484
485 /**
486 * Panama Balboa.
487 */
488 PAB(92, 91),
489
490 /**
491 * El Salvador Colon.
492 */
493 SVC(93, 92),
494
495 /**
496 * Trinidad/Tobago Dollar.
497 */
498 TTD(94, 93),
499
500 /**
501 * East Caribbean Dollar.
502 */
503 XCD(95, 94),
504
505 /**
506 * Argentinian Peso.
507 */
508 ARS(96, 95),
509
510 /**
511 * Bolivian Boliviano.
512 */
513 BOB(97, 96),
514
515 /**
516 * Chile Peso.
517 */
518 CLP(98, 97),
519
520 /**
521 * Columbian Peso.
522 */
523 COP(99, 98),
524
525 /**
526 * Guinean Franc.
527 */
528 GNF(100, 99),
529
530 /**
531 * Guyanan Dollar.
532 */
533 GYD(101, 100),
534
535 /**
536 * Peru Sol.
537 */
538 PEN(102, 101),
539
540 /**
541 * Paraguayan Guarani.
542 */
543 PYG(103, 102),
544
545 /**
546 * Surinam Dollar.
547 */
548 SRD(104, 103),
549
550 /**
551 * Uruguay Peso.
552 */
553 UYU(105, 104),
554
555 /**
556 * Venezualan Bolivar.
557 */
558 VEF(106, 105),
559
560 /**
561 * Angolan Kwanza.
562 */
563 AOA(107, 106),
564
565 /**
566 * Burundi Franc.
567 */
568 BIF(108, 107),
569
570 /**
571 * Botswana Pula.
572 */
573 BWP(109, 108),
574
575 /**
576 * Congo Franc.
577 */
578 CDF(110, 109),
579
580 /**
581 * Djibouti Franc.
582 */
583 DJF(111, 110),
584
585 /**
586 * Algerian Dinar.
587 */
588 DZD(112, 111),
589
590 /**
591 * Egypt Pound.
592 */
593 EGP(113, 112),
594
595 /**
596 * Eritrea Nakfa.
597 */
598 ERN(114, 113),
599
600 /**
601 * Ethiopian Birr.
602 */
603 ETB(115, 114),
604
605 /**
606 * Ghana Cedi.
607 */
608 GHS(116, 115),
609
610 /**
611 * Gambian Dalasi.
612 */
613 GMD(117, 116),
614
615 /**
616 * Kenyan Shilling.
617 */
618 KES(118, 117),
619
620 /**
621 * Liberian Dollar.
622 */
623 LRD(119, 118),
624
625 /**
626 * Lesotho Loti.
627 */
628 LSL(120, 119),
629
630 /**
631 * Libyan Dinar.
632 */
633 LYD(121, 120),
634
635 /**
636 * Moroccan Dirham.
637 */
638 MAD(122, 121),
639
640 /**
641 * Madagascan Ariary.
642 */
643 MGA(123, 122),
644
645 /**
646 * Mauritian Ouguiya.
647 */
648 MRO(124, 123),
649
650 /**
651 * Malawian Kwacha.
652 */
653 MWK(125, 124),
654
655 /**
656 * Mozambique Metical.
657 */
658 MZN(126, 125),
659
660 /**
661 * Namibia Dollar.
662 */
663 NAD(127, 126),
664
665 /**
666 * Nigeria Naira.
667 */
668 NGN(128, 127),
669
670 /**
671 * Rwanda Franc.
672 */
673 RWF(129, 128),
674
675 /**
676 * Sudan Pound.
677 */
678 SDG(130, 129),
679
680 /**
681 * Somali Shilling.
682 */
683 SOS(131, 130),
684
685 /**
686 * South Sudan Pound.
687 */
688 SSP(132, 131),
689
690 /**
691 * Old Sierra Leone Leone.
692 */
693 SLL(133, 132),
694
695 /**
696 * Swazi Lilangeni.
697 */
698 SZL(134, 133),
699
700 /**
701 * Tunisian Dinar.
702 */
703 TND(135, 134),
704
705 /**
706 * Tanzania Shilling.
707 */
708 TZS(136, 135),
709
710 /**
711 * Ugandan Shilling.
712 */
713 UGX(137, 136),
714
715 /**
716 * Central African Franc.
717 */
718 XAF(138, 137),
719
720 /**
721 * West African Franc.
722 */
723 XOF(139, 138),
724
725 /**
726 * Yemeni Rial.
727 */
728 YER(140, 139),
729
730 /**
731 * Zambia Kwacha.
732 */
733 ZMW(141, 140),
734
735 /**
736 * Cape Verde Escudo.
737 */
738 CVE(142, 141),
739
740 /**
741 * Fijian Dollar.
742 */
743 FJD(143, 142),
744
745 /**
746 * Falkland Islands Pound.
747 */
748 FKP(144, 143),
749
750 /**
751 * Gibraltar Pound.
752 */
753 GIP(145, 144),
754
755 /**
756 * Comoro Franc.
757 */
758 KMF(146, 145),
759
760 /**
761 * Mauritian Rupee.
762 */
763 MUR(147, 146),
764
765 /**
766 * Maldives Rufiyaa.
767 */
768 MVR(148, 147),
769
770 /**
771 * Solomon Isles Dollar.
772 */
773 SBD(149, 148),
774
775 /**
776 * Seychelles Rupee.
777 */
778 SCR(150, 149),
779
780 /**
781 * Saint Helena Pound.
782 */
783 SHP(151, 150),
784
785 /**
786 * Tongan Pa'anga.
787 */
788 TOP(152, 151),
789
790 /**
791 * Samoan Tala.
792 */
793 WST(153, 152),
794
795 /**
796 * Vanuatu Vatu.
797 */
798 VUV(154, 153),
799
800 /**
801 * Pacific Franc.
802 */
803 XPF(155, 154),
804
805 /**
806 * North Korean Won.
807 */
808 KPW(156, 155),
809
810 /**
811 * Croatian Kuna.
812 */
813 HRK(157, 156),
814
815 /**
816 * São Tomé and Príncipe Dobra.
817 */
818 STD(158, 157),
819
820 /**
821 * Sao Tome and Príncipe Dobra (New).
822 */
823 STN(159, 158),
824
825 /**
826 * Mauritanian Ouguiya.
827 */
828 MRU(160, 159),
829
830 /**
831 * Venezualan Bolivar.
832 */
833 VES(161, 160),
834
835 /**
836 * Venezualan Bolivar.
837 */
838 VED(162, 161),
839
840 /**
841 * Zimbabwe Dollar.
842 */
843 ZWL(163, 162),
844
845 /**
846 * New Sierra Leone Leone.
847 */
848 SLE(164, 163),
849
850 /**
851 * Zimbabwe Dollar.
852 */
853 ZWG(165, 164),
854
855 /**
856 * Carribean Guilder.
857 */
858 XCG(166, 165),
859
860 /**
861 * Arab Accounting Dinar.
862 */
863 XAD(167, 166);
864
865 /**
866 * Class Id.
867 */
868 private final int theId;
869
870 /**
871 * Class Order.
872 */
873 private final int theOrder;
874
875 /**
876 * Currency.
877 */
878 private final Currency theCurrency;
879
880 /**
881 * Constructor.
882 *
883 * @param uId the Id
884 * @param uOrder the default order.
885 */
886 MoneyWiseCurrencyClass(final int uId,
887 final int uOrder) {
888 theId = uId;
889 theOrder = uOrder;
890 final String myName = name();
891 theCurrency = Currency.getInstance(myName);
892 }
893
894 @Override
895 public int getClassId() {
896 return theId;
897 }
898
899 @Override
900 public int getOrder() {
901 return theOrder;
902 }
903
904 /**
905 * Obtain currency.
906 *
907 * @return the currency
908 */
909 public Currency getCurrency() {
910 return theCurrency;
911 }
912
913 /**
914 * get value from id.
915 *
916 * @param id the id value
917 * @return the corresponding enum object
918 * @throws OceanusException on error
919 */
920 public static MoneyWiseCurrencyClass fromId(final int id) throws OceanusException {
921 for (MoneyWiseCurrencyClass myClass : values()) {
922 if (myClass.getClassId() == id) {
923 return myClass;
924 }
925 }
926 throw new MoneyWiseDataException("Invalid ClassId for " + MoneyWiseStaticDataType.CURRENCY.toString() + ":" + id);
927 }
928
929 /**
930 * get value from currency.
931 *
932 * @param pCurrency the currency
933 * @return the corresponding enum object
934 */
935 public static MoneyWiseCurrencyClass fromCurrency(final Currency pCurrency) {
936 final String myCode = pCurrency == null
937 ? null
938 : pCurrency.getCurrencyCode();
939 return MoneyWiseCurrencyClass.valueOf(myCode);
940 }
941 }