task2/solution05/src/org/apidesign/apifest08/currency/Amount.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 01 Oct 2008 10:43:05 +0200
changeset 29 f6073056b9fe
parent 6 task1/solution05/src/org/apidesign/apifest08/currency/Amount.java@97662396c0fd
permissions -rw-r--r--
Getting ready for task2: copying all solutions to new locations
japod@6
     1
package org.apidesign.apifest08.currency;
japod@6
     2
japod@6
     3
/**
japod@6
     4
 * Amount is a class reprezenting an amount of many. It consist of
japod@6
     5
 * whole currency amount and of pence amount. Both items are long values
japod@6
     6
 * and it's not defined that the 100 pences = 1 amount. It's up to the converter
japod@6
     7
 * to verify such invariants.
japod@6
     8
 *
japod@6
     9
 * @author jindra
japod@6
    10
 */
japod@6
    11
public final class Amount {
japod@6
    12
japod@6
    13
    private long amount;
japod@6
    14
    private long pence;
japod@6
    15
japod@6
    16
    /**
japod@6
    17
     * Construct Amount with no pences.
japod@6
    18
     *
japod@6
    19
     * @param amount the amount in some currency
japod@6
    20
     *
japod@6
    21
     */
japod@6
    22
    public Amount(long amount) {
japod@6
    23
        this.amount = amount;
japod@6
    24
        this.pence = 0;
japod@6
    25
    }
japod@6
    26
japod@6
    27
    /**
japod@6
    28
     * Construct Amount with the pences.
japod@6
    29
     *
japod@6
    30
     * @param amount the amount in some currency
japod@6
    31
     * @param pence the pence count
japod@6
    32
     */
japod@6
    33
    public Amount(long amount, long pence) {
japod@6
    34
        this.amount = amount;
japod@6
    35
        this.pence = pence;
japod@6
    36
    }
japod@6
    37
japod@6
    38
    /**
japod@6
    39
     * @return the amount
japod@6
    40
     */
japod@6
    41
    public long getAmount() {
japod@6
    42
        return amount;
japod@6
    43
    }
japod@6
    44
japod@6
    45
    /**
japod@6
    46
     * @param amount the amount to set
japod@6
    47
     */
japod@6
    48
    public void setAmount(long amount) {
japod@6
    49
        this.amount = amount;
japod@6
    50
    }
japod@6
    51
japod@6
    52
    /**
japod@6
    53
     * @return the pence
japod@6
    54
     */
japod@6
    55
    public long getPence() {
japod@6
    56
        return pence;
japod@6
    57
    }
japod@6
    58
japod@6
    59
    /**
japod@6
    60
     * @param pence the pence to set
japod@6
    61
     */
japod@6
    62
    public void setPence(long pence) {
japod@6
    63
        this.pence = pence;
japod@6
    64
    }
japod@6
    65
japod@6
    66
    @Override
japod@6
    67
    public boolean equals(Object obj) {
japod@6
    68
        if (obj == null) {
japod@6
    69
            return false;
japod@6
    70
        }
japod@6
    71
        if (!(obj instanceof Amount)) {
japod@6
    72
            return false;
japod@6
    73
        }
japod@6
    74
        Amount other = (Amount) obj;
japod@6
    75
        return (amount == other.amount) && (pence == other.pence);
japod@6
    76
    }
japod@6
    77
japod@6
    78
    @Override
japod@6
    79
    public int hashCode() {
japod@6
    80
        int hash = 7;
japod@6
    81
        hash = 79 * hash + (int) (this.amount ^ (this.amount >>> 32));
japod@6
    82
        hash = 79 * hash + (int) (this.pence ^ (this.pence >>> 32));
japod@6
    83
        return hash;
japod@6
    84
    }
japod@6
    85
japod@6
    86
    @Override
japod@6
    87
    public String toString() {
japod@6
    88
        return amount + "." + pence;
japod@6
    89
    }
japod@6
    90
japod@6
    91
japod@6
    92
}