001// SECTION-START[License Header]
002// <editor-fold defaultstate="collapsed" desc=" Generated License ">
003/*
004 *   jDTAUS ⁑ ISO-13616
005 *   Copyright (C) Christian Schulte, 2013-222
006 *
007 *   Permission to use, copy, modify, and/or distribute this software for any
008 *   purpose with or without fee is hereby granted, provided that the above
009 *   copyright notice and this permission notice appear in all copies.
010 *
011 *   THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
012 *   WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
013 *   MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
014 *   ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
015 *   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
016 *   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
017 *   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
018 *
019 *   $JDTAUS: IbanCheckDigitsException.java 8843 2013-11-28 10:47:34Z schulte $
020 *
021 */
022// </editor-fold>
023// SECTION-END
024package org.jdtaus.iso13616;
025
026import java.util.Locale;
027
028// SECTION-START[Documentation]
029// <editor-fold defaultstate="collapsed" desc=" Generated Documentation ">
030/**
031 * Gets thrown whenever validation of the check digits of an international bank account number fails.
032 *
033 * <dl>
034 *   <dt><b>Identifier:</b></dt><dd>jDTAUS ⁑ ISO-13616 ⁑ IBAN Check Digits Exception</dd>
035 *   <dt><b>Name:</b></dt><dd>jDTAUS ⁑ ISO-13616 ⁑ IBAN Check Digits Exception</dd>
036 *   <dt><b>Abstract:</b></dt><dd>No</dd>
037 *   <dt><b>Final:</b></dt><dd>Yes</dd>
038 *   <dt><b>Stateless:</b></dt><dd>No</dd>
039 * </dl>
040 *
041 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
042 * @version 1.1
043 */
044// </editor-fold>
045// SECTION-END
046// SECTION-START[Annotations]
047// <editor-fold defaultstate="collapsed" desc=" Generated Annotations ">
048@javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" )
049// </editor-fold>
050// SECTION-END
051public class IbanCheckDigitsException extends Exception
052{
053    // SECTION-START[IbanCheckDigitsException]
054
055    /** Serial version UID for backwards compatibility with 2007.45.x classes. */
056    private static final long serialVersionUID = 2758511596781778791L;
057
058    /**
059     * The IBAN failing check digits validation.
060     * @serial
061     */
062    private String iban;
063
064    /**
065     * The invalid check digits.
066     * @serial
067     */
068    private Number checkDigits;
069
070    /**
071     * Creates a new {@code IbanCheckDigitsException} instance taking the IBAN failing check digits validation and the
072     * invalid check digits.
073     *
074     * @param iban The IBAN failing check digits validation.
075     * @param checkDigits The invalid check digits.
076     */
077    public IbanCheckDigitsException( final String iban, final Number checkDigits )
078    {
079        super();
080        this.iban = iban;
081        this.checkDigits = checkDigits;
082    }
083
084    /**
085     * Gets a message describing the exception.
086     *
087     * @return A message describing the exception.
088     */
089    @Override
090    public String getMessage()
091    {
092        return getIbanCheckDigitsExceptionMessage( Locale.getDefault(), this.getIban(), this.getCheckDigits() );
093    }
094
095    /**
096     * Gets a localized message describing the exception for a given locale.
097     *
098     * @param locale The locale of the localized message to get.
099     *
100     * @return A localized message describing the exception.
101     *
102     * @throws NullPointerException if {@code locale} is {@code null}.
103     */
104    public String getLocalizedMessage( final Locale locale )
105    {
106        if ( locale == null )
107        {
108            throw new NullPointerException( "locale" );
109        }
110
111        return getIbanCheckDigitsExceptionMessage( locale, this.getIban(), this.getCheckDigits() );
112    }
113
114    /**
115     * Gets the IBAN failing check digits validation.
116     *
117     * @return The IBAN failing check digits validation.
118     */
119    public String getIban()
120    {
121        return this.iban;
122    }
123
124    /**
125     * Gets the invalid check digits.
126     *
127     * @return The invalid check digits.
128     */
129    public Number getCheckDigits()
130    {
131        return this.checkDigits;
132    }
133
134    // SECTION-END
135    // SECTION-START[Dependencies]
136    // SECTION-END
137    // SECTION-START[Properties]
138    // SECTION-END
139    // SECTION-START[Messages]
140    // <editor-fold defaultstate="collapsed" desc=" Generated Messages ">
141    /**
142     * Gets the text of the {@code <IBAN Check Digits Exception Message>} message.
143     * <p><dl>
144     *   <dt><b>Languages:</b></dt>
145     *     <dd>English (default)</dd>
146     *     <dd>Deutsch</dd>
147     *   <dt><b>Final:</b></dt><dd>No</dd>
148     * </dl></p>
149     * @param locale The locale of the message to return.
150     * @param iban Format argument.
151     * @param illegalCheckDigits Format argument.
152     * @return The text of the {@code <IBAN Check Digits Exception Message>} message for {@code locale}.
153     */
154    @SuppressWarnings("unused")
155    @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.5", comments = "See http://www.jomc.org/jomc/1.5/jomc-tools-1.5" )
156    private static String getIbanCheckDigitsExceptionMessage( final java.util.Locale locale, final java.lang.String iban, final java.lang.Number illegalCheckDigits )
157    {
158        java.io.BufferedReader reader = null;
159
160        try
161        {
162            final String message = java.text.MessageFormat.format( java.util.ResourceBundle.getBundle( "org.jdtaus.iso13616.IbanCheckDigitsException", locale ).getString( "IBAN Check Digits Exception Message" ), iban, illegalCheckDigits, (Object) null );
163            final java.lang.StringBuilder builder = new java.lang.StringBuilder( message.length() );
164            reader = new java.io.BufferedReader( new java.io.StringReader( message ) );
165            final String lineSeparator = System.getProperty( "line.separator", "\n" );
166
167            String line;
168            while ( ( line = reader.readLine() ) != null )
169            {
170                builder.append( lineSeparator ).append( line );
171            }
172
173            reader.close();
174            reader = null;
175            return builder.length() > 0 ? builder.substring( lineSeparator.length() ) : "";
176        }
177        catch( final java.io.IOException e )
178        {
179            throw new java.lang.AssertionError( e );
180        }
181        finally
182        {
183            try
184            {
185                if( reader != null )
186                {
187                    reader.close();
188                }
189            }
190            catch( final java.io.IOException e )
191            {
192                throw new java.lang.AssertionError( e );
193            }
194        }
195    }
196    // </editor-fold>
197    // SECTION-END
198}