From 2dc117c97864244d28b20531c3ccd8bc4821bddb Mon Sep 17 00:00:00 2001 From: bvn13 Date: Sat, 13 Aug 2022 03:42:16 +0300 Subject: [PATCH] BigDecimal: MoneyDto --- .../test/bigdecimal/BigDecimalExample.java | 18 ++++++--- .../me/bvn13/test/bigdecimal/MoneyDto.java | 40 +++++++++++++++++++ 2 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 big-decimal/src/main/java/me/bvn13/test/bigdecimal/MoneyDto.java diff --git a/big-decimal/src/main/java/me/bvn13/test/bigdecimal/BigDecimalExample.java b/big-decimal/src/main/java/me/bvn13/test/bigdecimal/BigDecimalExample.java index e85e521..c963384 100644 --- a/big-decimal/src/main/java/me/bvn13/test/bigdecimal/BigDecimalExample.java +++ b/big-decimal/src/main/java/me/bvn13/test/bigdecimal/BigDecimalExample.java @@ -15,12 +15,20 @@ public class BigDecimalExample { // Currency tnd = Currency.getInstance("TND"); // System.out.println("TND:" + tnd.getDefaultFractionDigits()); +// BigDecimal amount = new BigDecimal("4.12"); +// System.out.println(amount); +// amount = amount.movePointRight(2); +// System.out.println(amount); +// amount = amount.movePointLeft(2); +// System.out.println(amount); + BigDecimal amount = new BigDecimal("4.12"); - System.out.println(amount); - amount = amount.movePointRight(2); - System.out.println(amount); - amount = amount.movePointLeft(2); - System.out.println(amount); + Currency eur = Currency.getInstance("EUR"); + System.out.println(amount + " " + eur); + MoneyDto moneyDto = new MoneyDto(amount, eur); + System.out.println(moneyDto); + + } static void fromInteger() { diff --git a/big-decimal/src/main/java/me/bvn13/test/bigdecimal/MoneyDto.java b/big-decimal/src/main/java/me/bvn13/test/bigdecimal/MoneyDto.java new file mode 100644 index 0000000..5cda25b --- /dev/null +++ b/big-decimal/src/main/java/me/bvn13/test/bigdecimal/MoneyDto.java @@ -0,0 +1,40 @@ +package me.bvn13.test.bigdecimal; + +import java.math.BigDecimal; +import java.util.Currency; + +public class MoneyDto { + + private final BigDecimal amount; + private final Currency currency; + + public static MoneyDto fromMinor(BigDecimal amount, Currency currency) { + return new MoneyDto(amount.movePointLeft(currency.getDefaultFractionDigits()), currency); + } + + public static MoneyDto fromJson(String amount, String cur) { + Currency currency = Currency.getInstance(cur); + return new MoneyDto(new BigDecimal(amount).movePointLeft(currency.getDefaultFractionDigits()), currency); + } + + public MoneyDto(BigDecimal amount, Currency currency) { + this.amount = amount; + this.currency = currency; + } + + public BigDecimal getAmount() { + return amount; + } + + public Currency getCurrency() { + return currency; + } + + @Override + public String toString() { + return "{" + + "\"amount\":" + amount.movePointRight(currency.getDefaultFractionDigits()) + + ", \"currency\":\"" + currency + "\"" + + '}'; + } +}