001/*
002 *  jDTAUS Banking API
003 *  Copyright (C) 2005 Christian Schulte
004 *  <cs@schulte.it>
005 *
006 *  This library is free software; you can redistribute it and/or
007 *  modify it under the terms of the GNU Lesser General Public
008 *  License as published by the Free Software Foundation; either
009 *  version 2.1 of the License, or any later version.
010 *
011 *  This library is distributed in the hope that it will be useful,
012 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
013 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014 *  Lesser General Public License for more details.
015 *
016 *  You should have received a copy of the GNU Lesser General Public
017 *  License along with this library; if not, write to the Free Software
018 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
019 *
020 */
021package org.jdtaus.banking.dtaus;
022
023import java.util.Locale;
024import org.jdtaus.core.container.ContainerFactory;
025import org.jdtaus.core.text.Message;
026
027/**
028 * Gets thrown whenever an illegal header is passed to a method expecting a legal header.
029 * <p>Example: Catching an {@code IllegalHeaderException}<br/><blockquote><pre>
030 * catch(IllegalHeaderException e)
031 * {
032 *     if(e.getMessages().length > 0)
033 *     {
034 *         <i>Fetch messages for well-known properties first (optional).</i>
035 *         e.getMessages(Header.PROP_<i>XYZ</i>);
036 *         ...
037 *         <i>Fetch all remaining messages.</i>
038 *         e.getMessages();
039 *         ...
040 *     }
041 * }</pre></blockquote></p>
042 *
043 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
044 * @version $JDTAUS: IllegalHeaderException.java 8661 2012-09-27 11:29:58Z schulte $
045 */
046public abstract class IllegalHeaderException extends IllegalArgumentException
047{
048
049    /** Serial version UID for backwards compatibility with 1.0.x classes. */
050    private static final long serialVersionUID = 4287460475792358013L;
051
052    /** Creates a new {@code IllegalHeaderException} instance. */
053    public IllegalHeaderException()
054    {
055        super();
056    }
057
058    /**
059     * Gets all messages describing the exception.
060     *
061     * @return An array of messages describing the exception or an empty array if the instance does not hold any
062     * messages.
063     */
064    public abstract Message[] getMessages();
065
066    /**
067     * Gets messages bound to a property removing these messages from the instance.
068     *
069     * @param propertyName the name of a property to return any messages for.
070     *
071     * @return All messages bound to a property with name {@code propertyName} or an empty array if the instance does
072     * not hold messages for a property with name {@code propertyName}.
073     *
074     * @throws NullPointerException if {@code propertyName} is {@code null}.
075     */
076    public abstract Message[] getMessages( final String propertyName );
077
078    /**
079     * Gets the names of all properties for which the exception holds messages.
080     *
081     * @return An array of the names of all properties for which the exception holds messages or an empty array if the
082     * exception does not hold any message bound to a property.
083     */
084    public abstract String[] getPropertyNames();
085
086    /**
087     * Returns the message of the exception.
088     *
089     * @return The message of the exception.
090     */
091    public String getMessage()
092    {
093        return this.getIllegalHeaderMessage( this.getLocale() );
094    }
095
096    //--Dependencies------------------------------------------------------------
097
098// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausDependencies
099    // This section is managed by jdtaus-container-mojo.
100
101    /**
102     * Gets the configured <code>Locale</code> implementation.
103     *
104     * @return The configured <code>Locale</code> implementation.
105     */
106    private Locale getLocale()
107    {
108        return (Locale) ContainerFactory.getContainer().
109            getDependency( this, "Locale" );
110
111    }
112
113// </editor-fold>//GEN-END:jdtausDependencies
114
115    //------------------------------------------------------------Dependencies--
116    //--Messages----------------------------------------------------------------
117
118// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:jdtausMessages
119    // This section is managed by jdtaus-container-mojo.
120
121    /**
122     * Gets the text of message <code>illegalHeader</code>.
123     * <blockquote><pre>Ungültiger "A" Datensatz.</pre></blockquote>
124     * <blockquote><pre>Illegal "A" record.</pre></blockquote>
125     *
126     * @param locale The locale of the message instance to return.
127     *
128     * @return the text of message <code>illegalHeader</code>.
129     */
130    private String getIllegalHeaderMessage( final Locale locale )
131    {
132        return ContainerFactory.getContainer().
133            getMessage( this, "illegalHeader", locale, null );
134
135    }
136
137// </editor-fold>//GEN-END:jdtausMessages
138
139    //----------------------------------------------------------------Messages--
140}