EMMA Coverage Report (generated Tue Dec 09 03:51:57 CET 2014)
[all classes][org.jdtaus.banking.dtaus.spi]

COVERAGE SUMMARY FOR SOURCE FILE [CurrencyCounter.java]

nameclass, %method, %block, %line, %
CurrencyCounter.java0%   (0/1)0%   (0/6)0%   (0/135)0%   (0/28)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class CurrencyCounter0%   (0/1)0%   (0/6)0%   (0/135)0%   (0/28)
CurrencyCounter (): void 0%   (0/1)0%   (0/3)0%   (0/1)
add (Currency): void 0%   (0/1)0%   (0/32)0%   (0/7)
getCurrencies (): Currency [] 0%   (0/1)0%   (0/35)0%   (0/6)
getCurrencyMap (): Map 0%   (0/1)0%   (0/12)0%   (0/3)
getValue (Currency): long 0%   (0/1)0%   (0/21)0%   (0/4)
substract (Currency): void 0%   (0/1)0%   (0/32)0%   (0/7)

1/*
2 *  jDTAUS Banking SPI
3 *  Copyright (C) 2005 Christian Schulte
4 *  <cs@schulte.it>
5 *
6 *  This library is free software; you can redistribute it and/or
7 *  modify it under the terms of the GNU Lesser General Public
8 *  License as published by the Free Software Foundation; either
9 *  version 2.1 of the License, or any later version.
10 *
11 *  This library is distributed in the hope that it will be useful,
12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 *  Lesser General Public License for more details.
15 *
16 *  You should have received a copy of the GNU Lesser General Public
17 *  License along with this library; if not, write to the Free Software
18 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19 *
20 */
21package org.jdtaus.banking.dtaus.spi;
22 
23import java.io.Serializable;
24import java.util.Currency;
25import java.util.HashMap;
26import java.util.HashSet;
27import java.util.Iterator;
28import java.util.Map;
29import java.util.Set;
30 
31/**
32 * Utility class for maintaining a mapping of currencies to corresponding counters.
33 *
34 * <p><b>Note:</b><br/>This class is not synchronized and must not be used concurrently without external
35 * synchronization.</p>
36 *
37 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
38 * @version $JDTAUS: CurrencyCounter.java 8661 2012-09-27 11:29:58Z schulte $
39 */
40public class CurrencyCounter implements Serializable
41{
42 
43    /** Serial version UID for backwards compatibility with 1.1.x classes. */
44    private static final long serialVersionUID = -2765988202184349786L;
45 
46    /**
47     * Maps ISO currency codes to counters.
48     * @serial
49     */
50    private Map currencyMap;
51 
52    /**
53     * Gets the currencies for which the instance holds counters.
54     *
55     * @return The currencies for which the instance holds counters.
56     */
57    public Currency[] getCurrencies()
58    {
59        final Set currencies = new HashSet( this.getCurrencyMap().size() );
60        for ( Iterator it = this.getCurrencyMap().entrySet().iterator(); it.hasNext(); )
61        {
62            final Map.Entry entry = (Map.Entry) it.next();
63            currencies.add( Currency.getInstance( (String) entry.getKey() ) );
64        }
65 
66        return (Currency[]) currencies.toArray( new Currency[ currencies.size() ] );
67    }
68 
69    /**
70     * Gets the value of the counter for a given {@code Currency}.
71     *
72     * @param currency The currency to return the value of the counter for.
73     *
74     * @return The value of the counter of {@code currency}.
75     *
76     * @throws NullPointerException if {@code currency} is {@code null}.
77     */
78    public long getValue( final Currency currency )
79    {
80        if ( currency == null )
81        {
82            throw new NullPointerException( "currency" );
83        }
84 
85        final Long value = (Long) this.getCurrencyMap().get( currency.getCurrencyCode() );
86        return value != null ? value.longValue() : 0L;
87    }
88 
89    /**
90     * Adds to the counter of a currency.
91     *
92     * @param currency The currency to add to.
93     *
94     * @throws NullPointerException if {@code currency} is {@code null}.
95     * @throws IndexOutOfBoundsException if the value of the counter of {@code currency} is equal to
96     * {@link Long#MAX_VALUE}.
97     */
98    public void add( final Currency currency )
99    {
100        if ( currency == null )
101        {
102            throw new NullPointerException( "currency" );
103        }
104 
105        final long value = this.getValue( currency );
106 
107        if ( value == Long.MAX_VALUE )
108        {
109            throw new IndexOutOfBoundsException();
110        }
111 
112        this.getCurrencyMap().put( currency.getCurrencyCode(), new Long( value + 1L ) );
113    }
114 
115    /**
116     * Substracts from the counter of a currency.
117     *
118     * @param currency The currency to substract from.
119     *
120     * @throws NullPointerException if {@code currency} is {@code null}.
121     * @throws IndexOutOfBoundsException if the value of the counter of {@code currency} is equal to zero.
122     */
123    public void substract( final Currency currency )
124    {
125        if ( currency == null )
126        {
127            throw new NullPointerException( "currency" );
128        }
129 
130        final long value = this.getValue( currency );
131 
132        if ( value == 0L )
133        {
134            throw new IndexOutOfBoundsException();
135        }
136 
137        this.getCurrencyMap().put( currency.getCurrencyCode(), new Long( value - 1L ) );
138    }
139 
140    /**
141     * Gets the {@code Map} backing the instance.
142     *
143     * @return The {@code Map} backing the instance.
144     */
145    private Map getCurrencyMap()
146    {
147        if ( this.currencyMap == null )
148        {
149            this.currencyMap = new HashMap( 10 );
150        }
151 
152        return this.currencyMap;
153    }
154 
155}

[all classes][org.jdtaus.banking.dtaus.spi]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov