View Javadoc

1   /*
2    *  jDTAUS Banking Messages
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   */
21  package org.jdtaus.banking.messages;
22  
23  import java.util.Locale;
24  import org.jdtaus.banking.dtaus.Checksum;
25  import org.jdtaus.core.container.ContainerFactory;
26  import org.jdtaus.core.text.Message;
27  
28  /**
29   * Message stating that a checksum is incorrect.
30   *
31   * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
32   * @version $JDTAUS: ChecksumErrorMessage.java 8661 2012-09-27 11:29:58Z schulte $
33   */
34  public final class ChecksumErrorMessage extends Message
35  {
36  
37      /** Serial version UID for backwards compatibility with 1.0.x classes. */
38      private static final long serialVersionUID = 2983079946808628079L;
39  
40      /**
41       * Absolute position of the file with the incorrect checksum.
42       * @serial
43       */
44      private final long position;
45  
46      /**
47       * Stored checksum.
48       * @serial
49       */
50      private final Checksum storedChecksum;
51  
52      /**
53       * Computed checksum.
54       * @serial
55       */
56      private final Checksum computedChecksum;
57  
58      /**
59       * Creates a new {@code ChecksumErrorMessage} instance.
60       *
61       * @param storedChecksum The checksum stored in a file.
62       * @param computedChecksum The computed checksum from the same file.
63       * @param position Absolute position of the file with the incorrect checksum.
64       *
65       * @throws NullPointerException if either {@code storedChecksum} or {@code computedChecksum} is {@code null}.
66       * @throws IllegalArgumentException if {@code storedChecksum} is equal to {@code computedChecksum} or if
67       * {@code position} is negative.
68       */
69      public ChecksumErrorMessage( final Checksum storedChecksum, final Checksum computedChecksum, final long position )
70      {
71          if ( storedChecksum == null )
72          {
73              throw new NullPointerException( "storedChecksum" );
74          }
75          if ( computedChecksum == null )
76          {
77              throw new NullPointerException( "computedChecksum" );
78          }
79          if ( storedChecksum.equals( computedChecksum ) )
80          {
81              throw new IllegalArgumentException( computedChecksum.toString() );
82          }
83          if ( position < 0L )
84          {
85              throw new IllegalArgumentException( Long.toString( position ) );
86          }
87  
88          this.storedChecksum = storedChecksum;
89          this.computedChecksum = computedChecksum;
90          this.position = position;
91      }
92  
93      /**
94       * {@inheritDoc}
95       *
96       * @return Values of the properties of the stored and computed checksum.
97       * <ul>
98       * <li>[0]: value of property {@code sumAmount} of the stored checksum.</li>
99       * <li>[1]: value of property {@code sumTargetAccount} of the stored checksum.</li>
100      * <li>[2]: value of property {@code sumTargetBank} of the stored checksum.</li>
101      * <li>[3]: value of property {@code transactionCount} of the stored checksum.</li>
102      * <li>[4]: value of property {@code sumAmount} of the copmuted checksum.</li>
103      * <li>[5]: value of property {@code sumTargetAccount} of the copmuted checksum.</li>
104      * <li>[6]: value of property {@code sumTargetBank} of the copmuted checksum.</li>
105      * <li>[7]: value of property {@code transactionCount} of the copmuted checksum.</li>
106      * <li>[8]: absolute position of the file with the incorrect checksum.</li>
107      * </ul>
108      */
109     public Object[] getFormatArguments( final Locale locale )
110     {
111         return new Object[]
112             {
113                 new Long( this.storedChecksum.getSumAmount() ),
114                 new Long( this.storedChecksum.getSumTargetAccount() ),
115                 new Long( this.storedChecksum.getSumTargetBank() ),
116                 new Integer( this.storedChecksum.getTransactionCount() ),
117                 new Long( this.computedChecksum.getSumAmount() ),
118                 new Long( this.computedChecksum.getSumTargetAccount() ),
119                 new Long( this.computedChecksum.getSumTargetBank() ),
120                 new Integer( this.computedChecksum.getTransactionCount() ),
121                 new Long( this.position )
122             };
123     }
124 
125     /**
126      * {@inheritDoc}
127      *
128      * @return The corresponding text from the message's {@code ResourceBundle}
129      * <blockquote><pre>
130      * The checksum of the file beginning at position {0,number} is invalid.
131      * </pre></blockquote>
132      */
133     public String getText( final Locale locale )
134     {
135         return this.getChecksumErrorMessage( locale, new Long( this.position ) );
136     }
137 
138     //--Messages----------------------------------------------------------------
139 
140 // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausMessages
141     // This section is managed by jdtaus-container-mojo.
142 
143     /**
144      * Gets the text of message <code>checksumError</code>.
145      * <blockquote><pre>Die Prüfsumme der an Position {0,number} beginnenden logischen Datei ist ungültig.</pre></blockquote>
146      * <blockquote><pre>The checksum of the logical file beginning at position {0,number} is invalid.</pre></blockquote>
147      *
148      * @param locale The locale of the message instance to return.
149      * @param pos format argument.
150      *
151      * @return the text of message <code>checksumError</code>.
152      */
153     private String getChecksumErrorMessage( final Locale locale,
154             final java.lang.Number pos )
155     {
156         return ContainerFactory.getContainer().
157             getMessage( this, "checksumError", locale,
158                 new Object[]
159                 {
160                     pos
161                 });
162 
163     }
164 
165 // </editor-fold>//GEN-END:jdtausMessages
166 
167     //----------------------------------------------------------------Messages--
168 }