View Javadoc
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 }