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

COVERAGE SUMMARY FOR SOURCE FILE [Checksum.java]

nameclass, %method, %block, %line, %
Checksum.java100% (1/1)94%  (16/17)92%  (250/272)88%  (46.8/53)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class Checksum100% (1/1)94%  (16/17)92%  (250/272)88%  (46.8/53)
substract (Transaction): void 0%   (0/1)0%   (0/4)0%   (0/2)
clone (): Object 100% (1/1)33%  (3/9)33%  (1/3)
add (Transaction): void 100% (1/1)86%  (30/35)86%  (6/7)
subtract (Transaction): void 100% (1/1)86%  (30/35)86%  (6/7)
equals (Object): boolean 100% (1/1)95%  (42/44)95%  (4.8/5)
Checksum (): void 100% (1/1)100% (6/6)100% (3/3)
getSumAmount (): long 100% (1/1)100% (3/3)100% (1/1)
getSumTargetAccount (): long 100% (1/1)100% (3/3)100% (1/1)
getSumTargetBank (): long 100% (1/1)100% (3/3)100% (1/1)
getTransactionCount (): int 100% (1/1)100% (3/3)100% (1/1)
hashCode (): int 100% (1/1)100% (58/58)100% (8/8)
internalString (): String 100% (1/1)100% (30/30)100% (1/1)
setSumAmount (long): void 100% (1/1)100% (7/7)100% (3/3)
setSumTargetAccount (long): void 100% (1/1)100% (7/7)100% (3/3)
setSumTargetBank (long): void 100% (1/1)100% (7/7)100% (3/3)
setTransactionCount (int): void 100% (1/1)100% (7/7)100% (3/3)
toString (): String 100% (1/1)100% (11/11)100% (1/1)

1/*
2 *  jDTAUS Banking API
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;
22 
23import java.io.Serializable;
24 
25/**
26 * "E" record.
27 *
28 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
29 * @version $JDTAUS: Checksum.java 8661 2012-09-27 11:29:58Z schulte $
30 */
31public class Checksum implements Cloneable, Serializable
32{
33 
34    /** Serial version UID for backwards compatibility with 1.0.x classes. */
35    private static final long serialVersionUID = -7639085407620663083L;
36 
37    /**
38     * Number of transactions stored in a logical file.
39     * @serial
40     */
41    private int transactionCount;
42 
43    /**
44     * Sum of all target account codes of all transactions stored in a logical file.
45     * @serial
46     */
47    private long sumTargetAccount;
48 
49    /**
50     * Sum of all target bank codes of all transactions stored in a logical file.
51     * @serial
52     */
53    private long sumTargetBank;
54 
55    /**
56     * Sum of all amounts of all transactions stored in a logical file.
57     * @serial
58     */
59    private long sumAmount;
60 
61    /** Cached hash code. */
62    private transient int hashCode = NO_HASHCODE;
63    private static final int NO_HASHCODE = Integer.MIN_VALUE;
64 
65    /** Creates a new {@code Checksum} instance. */
66    public Checksum()
67    {
68        super();
69    }
70 
71    /**
72     * Getter for property {@code transactionCount}.
73     *
74     * @return Number of transactions stored in a logical file.
75     */
76    public int getTransactionCount()
77    {
78        return this.transactionCount;
79    }
80 
81    /**
82     * Setter for property {@code transactionCount}.
83     *
84     * @param value Number of transactions stored in a logical file.
85     */
86    public void setTransactionCount( final int value )
87    {
88        this.transactionCount = value;
89        this.hashCode = NO_HASHCODE;
90    }
91 
92    /**
93     * Getter for property {@code sumTargetAccount}.
94     *
95     * @return Sum of all target account codes of all transactions stored in a logical file.
96     */
97    public long getSumTargetAccount()
98    {
99        return this.sumTargetAccount;
100    }
101 
102    /**
103     * Setter for property {@code sumTargetAccount}.
104     *
105     * @param value Sum of all target account codes of all transactions stored in a logical file.
106     */
107    public void setSumTargetAccount( final long value )
108    {
109        this.sumTargetAccount = value;
110        this.hashCode = NO_HASHCODE;
111    }
112 
113    /**
114     * Getter for property {@code sumTargetBank}.
115     *
116     * @return Sum of all target bank codes of all transactions stored in a logical file.
117     */
118    public long getSumTargetBank()
119    {
120        return this.sumTargetBank;
121    }
122 
123    /**
124     * Setter for property {@code sumTargetBank}.
125     *
126     * @param value Sum of all target bank codes of all transactions stored in a logical file.
127     */
128    public void setSumTargetBank( final long value )
129    {
130        this.sumTargetBank = value;
131        this.hashCode = NO_HASHCODE;
132    }
133 
134    /**
135     * Getter for property {@code sumAmount}.
136     *
137     * @return Sum of all amounts of all transactions stored in a logical file.
138     */
139    public long getSumAmount()
140    {
141        return this.sumAmount;
142    }
143 
144    /**
145     * Setter for property {@code sumAmount}.
146     *
147     * @param value Sum of all amounts of all transactions stored in a logical file.
148     */
149    public void setSumAmount( final long value )
150    {
151        this.sumAmount = value;
152        this.hashCode = NO_HASHCODE;
153    }
154 
155    /**
156     * Adds a {@code Transaction} to the checksum.
157     *
158     * @param transaction The transaction to add to the checksum.
159     *
160     * @throws NullPointerException if {@code transaction} is {@code null}.
161     */
162    public void add( final Transaction transaction )
163    {
164        if ( transaction == null )
165        {
166            throw new NullPointerException( "transaction" );
167        }
168 
169        this.sumAmount += transaction.getAmount().longValue(); // TODO longValueExact()
170        this.sumTargetAccount += transaction.getTargetAccount().longValue();
171        this.sumTargetBank += transaction.getTargetBank().longValue();
172        this.hashCode = NO_HASHCODE;
173    }
174 
175    /**
176     * Subtracts a {@code Transaction} from the checksum.
177     *
178     * @param transaction The transaction to subtract from the checksum.
179     *
180     * @throws NullPointerException if {@code transaction} is {@code null}.
181     * @deprecated Deprecated by {@link #subtract(Transaction) subtract}.
182     */
183    public final void substract( final Transaction transaction )
184    {
185        this.subtract( transaction );
186    }
187 
188    /**
189     * Subtracts a {@code Transaction} from the checksum.
190     *
191     * @param transaction The transaction to subtract from the checksum.
192     *
193     * @throws NullPointerException if {@code transaction} is {@code null}.
194     */
195    public void subtract( final Transaction transaction )
196    {
197        if ( transaction == null )
198        {
199            throw new NullPointerException( "transaction" );
200        }
201 
202        this.sumAmount -= transaction.getAmount().longValue(); // TODO longValueExact()
203        this.sumTargetAccount -= transaction.getTargetAccount().longValue();
204        this.sumTargetBank -= transaction.getTargetBank().longValue();
205        this.hashCode = NO_HASHCODE;
206    }
207 
208    /**
209     * Indicates whether some other object is equal to this one by comparing the values of all properties.
210     *
211     * @param o The reference object with which to compare.
212     *
213     * @return {@code true} if this object is the same as {@code o}; {@code false} otherwise.
214     */
215    public boolean equals( final Object o )
216    {
217        boolean equal = o == this;
218 
219        if ( !equal && o instanceof Checksum )
220        {
221            final Checksum that = (Checksum) o;
222            equal = this.getSumAmount() == that.getSumAmount() &&
223                    this.getSumTargetAccount() == that.getSumTargetAccount() &&
224                    this.getSumTargetBank() == that.getSumTargetBank() &&
225                    this.getTransactionCount() == that.getTransactionCount();
226 
227        }
228 
229        return equal;
230    }
231 
232    /**
233     * Returns a hash code value for this object.
234     *
235     * @return A hash code value for this object.
236     */
237    public int hashCode()
238    {
239        if ( this.hashCode == NO_HASHCODE )
240        {
241            int hc = 23;
242            hc = 37 * hc + (int) ( this.sumAmount ^ ( this.sumAmount >>> 32 ) );
243            hc = 37 * hc + (int) ( this.sumTargetAccount ^ ( this.sumTargetAccount >>> 32 ) );
244            hc = 37 * hc + (int) ( this.sumTargetBank ^ ( this.sumTargetBank >>> 32 ) );
245            hc = 37 * hc + this.transactionCount;
246            this.hashCode = hc;
247        }
248 
249        return this.hashCode;
250    }
251 
252    /**
253     * Creates and returns a copy of this object.
254     *
255     * @return A clone of this instance.
256     */
257    public Object clone()
258    {
259        try
260        {
261            return super.clone();
262        }
263        catch ( final CloneNotSupportedException e )
264        {
265            throw new AssertionError( e );
266        }
267    }
268 
269    /**
270     * Returns a string representation of the object.
271     *
272     * @return A string representation of the object.
273     */
274    public String toString()
275    {
276        return super.toString() + this.internalString();
277    }
278 
279    /**
280     * Creates a string representing the properties of the instance.
281     *
282     * @return A string representing the properties of the instance.
283     */
284    private String internalString()
285    {
286        return new StringBuffer( 100 ).append( '{' ).
287            append( "sumAmount=" ).append( this.sumAmount ).
288            append( ", sumTargetAccount=" ).append( this.sumTargetAccount ).
289            append( ", sumTargetBank=" ).append( this.sumTargetBank ).
290            append( ", transactionCount=" ).append( this.transactionCount ).
291            append( '}' ).toString();
292 
293    }
294 
295}

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