Dashboard > GreenPepper Demo > ... > Bank > Money.java
  GreenPepper Demo Log In View a printable version of the current page.  
  Money.java
Added by admin, last edited by admin on Jan 07, 2009
Labels: 
(None)

Money.java
package com.greenpepper.confluence.demo.bank;

import java.math.BigDecimal;

public class Money
{

  public static final Money ZERO = new Money(BigDecimal.ZERO);
  private final BigDecimal dollars;

  public Money(BigDecimal dollars)
  {
    this.dollars = dollars;
  }

  public static Money parse(String text)
  {
    return new Money(new BigDecimal(normalize(text)));
  }

  private static String normalize(String text)
  {
    return text.replaceAll("\\$", "").replaceAll(",", "").replaceAll("\\s", "");
  }

  public static Money dollars(float amount)
  {
    return new Money(new BigDecimal(amount));
  }

  public static Money $(float amount)
  {
    return dollars(amount);
  }

  public static Money zero()
  {
    return dollars(0f);
  }

  public boolean equals(Object other)
  {
    if (other instanceof Money)
    {
      Money that = (Money)other;
      return this.dollars.compareTo(that.dollars) == 0;
    }
    else
    {
      return false;
    }
  }

  public int hashCode()
  {
    return dollars.hashCode();
  }

  public String toString()
  {
    return "$" + dollars;
  }

  public Money times(BigDecimal multiplier)
  {
    return new Money(dollars.multiply(multiplier));
  }

  public Money times(float multiplier)
  {
    return new Money(dollars.multiply(new BigDecimal(multiplier)));
  }

  public Money minus(Money subtrahend)
  {
    return new Money(dollars.subtract(subtrahend.dollars));
  }

  public Money plus(Money addend)
  {
    return new Money(dollars.add(addend.dollars));
  }

  public boolean greaterThan(Money money)
  {
    return this.dollars.compareTo(money.dollars) >= 0;
  }

  public boolean strictlyGreaterThan(Money money)
  {
    return this.dollars.compareTo(money.dollars) > 0;
  }

  public boolean lowerThan(Money money)
  {
    return dollars.compareTo(money.dollars) <= 0;
  }

  public boolean strictlyLowerThan(Money money)
  {
    return dollars.compareTo(money.dollars) < 0;
  }
}

DEMONSTRATION LICENSE - This Confluence site is for demonstration purposes only. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.4.3 Build:#705 Mar 21, 2007) - Bug/feature request - Contact Administrators