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

COVERAGE SUMMARY FOR SOURCE FILE [IllegalTextschluesselException.java]

nameclass, %method, %block, %line, %
IllegalTextschluesselException.java100% (1/1)60%  (6/10)64%  (231/360)64%  (47/73)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class IllegalTextschluesselException100% (1/1)60%  (6/10)64%  (231/360)64%  (47/73)
addMessages (Messages): void 0%   (0/1)0%   (0/22)0%   (0/5)
addMessages (String, Messages): void 0%   (0/1)0%   (0/30)0%   (0/7)
getMessages (): Message [] 0%   (0/1)0%   (0/33)0%   (0/6)
getMessages (String): Message [] 0%   (0/1)0%   (0/26)0%   (0/4)
addMessage (String, Message): void 100% (1/1)73%  (27/37)80%  (8/10)
internalString (): String 100% (1/1)95%  (141/149)93%  (26/28)
IllegalTextschluesselException (): void 100% (1/1)100% (9/9)100% (3/3)
addMessage (Message): void 100% (1/1)100% (5/5)100% (2/2)
getPropertyNames (): String [] 100% (1/1)100% (36/36)100% (7/7)
toString (): String 100% (1/1)100% (13/13)100% (1/1)

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.spi;
22 
23import java.util.ArrayList;
24import java.util.HashMap;
25import java.util.Iterator;
26import java.util.LinkedList;
27import java.util.List;
28import java.util.Locale;
29import java.util.Map;
30import org.jdtaus.banking.Textschluessel;
31import org.jdtaus.core.text.Message;
32import org.jdtaus.core.text.Messages;
33 
34/**
35 * Gets thrown whenever an illegal Textschlüssel is passed to a method expecting a legal Textschlüssel.
36 * <p>Example: Throwing an {@code IllegalTextschluesselException}<br/>
37 * <blockquote><pre>
38 * IllegalTextschluesselException e = new IllegalTextschluesselException();
39 * e.addMessage(message);
40 * e.addMessage(Textschluessel.PROP_<i>XYZ</i>, message);
41 * throw e;</pre></blockquote></p>
42 *
43 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
44 * @version $JDTAUS: IllegalTextschluesselException.java 8661 2012-09-27 11:29:58Z schulte $
45 */
46public class IllegalTextschluesselException extends org.jdtaus.banking.IllegalTextschluesselException
47{
48 
49    /** Serial version UID for backwards compatibility with 1.1.x classes. */
50    private static final long serialVersionUID = 3384133251965896939L;
51 
52    /** Creates a new {@code IllegalTextschluesselException} instance. */
53    public IllegalTextschluesselException()
54    {
55        super();
56    }
57 
58    /** Key to the list of messages not bound to any particular property. */
59    private static final String PROP_UNSPECIFIED = "org.jdtaus.banking.Textschluessel";
60 
61    /**
62     * The messages describing the exception.
63     * @serial
64     */
65    private Map messages = new HashMap( 100 );
66 
67    /**
68     * Adds a message to the instance.
69     *
70     * @param message the message to add to the instance.
71     *
72     * @throws NullPointerException if {@code message} is {@code null}.
73     */
74    public void addMessage( final Message message )
75    {
76        this.addMessage( PROP_UNSPECIFIED, message );
77    }
78 
79    /**
80     * Adds messages to the instance.
81     *
82     * @param messages The messages to add to the instance.
83     *
84     * @throws NullPointerException if {@code messages} is {@code null}.
85     */
86    public final void addMessages( final Messages messages )
87    {
88        if ( messages == null )
89        {
90            throw new NullPointerException( "messages" );
91        }
92 
93        for ( int i = messages.size() - 1; i >= 0; i-- )
94        {
95            this.addMessage( messages.getMessage( i ) );
96        }
97    }
98 
99    /**
100     * Adds a message bound to a property to the instance.
101     *
102     * @param propertyName The name of a property {@code message} is bound to.
103     * @param message The message to add to the instance.
104     *
105     * @throws NullPointerException if either {@code message} or {@code propertyName} is {@code null}.
106     */
107    public void addMessage( final String propertyName, final Message message )
108    {
109        if ( propertyName == null )
110        {
111            throw new NullPointerException( "propertyName" );
112        }
113        if ( message == null )
114        {
115            throw new NullPointerException( "message" );
116        }
117 
118        List msgs = (List) this.messages.get( propertyName );
119        if ( msgs == null )
120        {
121            msgs = new LinkedList();
122            this.messages.put( propertyName, msgs );
123        }
124 
125        msgs.add( message );
126    }
127 
128    /**
129     * Adds messages bound to a property to the instance.
130     *
131     * @param propertyName The name of a property {@code messages} are bound to.
132     * @param messages The messages to add to the instance.
133     *
134     * @throws NullPointerException if either {@code messages} or {@code propertyName} is {@code null}.
135     */
136    public final void addMessages( final String propertyName, final Messages messages )
137    {
138        if ( propertyName == null )
139        {
140            throw new NullPointerException( "propertyName" );
141        }
142        if ( messages == null )
143        {
144            throw new NullPointerException( "messages" );
145        }
146 
147        for ( int i = messages.size() - 1; i >= 0; i-- )
148        {
149            this.addMessage( propertyName, messages.getMessage( i ) );
150        }
151    }
152 
153    /**
154     * Gets all messages describing the exception.
155     *
156     * @return An array of messages describing the exception or an empty array if the instance does not hold any
157     * messages.
158     */
159    public Message[] getMessages()
160    {
161        final List col = new LinkedList();
162        for ( Iterator it = this.messages.keySet().iterator(); it.hasNext(); )
163        {
164            final String propertyName = (String) it.next();
165            col.addAll( (List) this.messages.get( propertyName ) );
166        }
167 
168        return (Message[]) col.toArray( new Message[ col.size() ] );
169    }
170 
171    /**
172     * Gets messages bound to a property removing these messages from the instance.
173     *
174     * @param propertyName The name of a property to return any messages for.
175     *
176     * @return All messages bound to a property with name {@code propertyName} or an empty array if the instance does
177     * not hold messages for a property with name {@code propertyName}.
178     *
179     * @throws NullPointerException if {@code propertyName} is {@code null}.
180     */
181    public Message[] getMessages( final String propertyName )
182    {
183        if ( propertyName == null )
184        {
185            throw new NullPointerException( "propertyName" );
186        }
187 
188        final List msgs = (List) this.messages.remove( propertyName );
189        return msgs == null ? new Message[ 0 ] : (Message[]) msgs.toArray( new Message[ msgs.size() ] );
190    }
191 
192    /**
193     * Gets the names of all properties for which the exception holds messages.
194     *
195     * @return An array of the names of all properties for which the exception holds messages or an empty array if the
196     * exception does not hold any message bound to a property.
197     */
198    public String[] getPropertyNames()
199    {
200        final List names = new ArrayList( this.messages.size() );
201        for ( Iterator it = this.messages.keySet().iterator(); it.hasNext(); )
202        {
203            final String name = (String) it.next();
204            if ( !PROP_UNSPECIFIED.equals( name ) )
205            {
206                names.add( name );
207            }
208        }
209 
210        return (String[]) names.toArray( new String[ names.size() ] );
211    }
212 
213    /**
214     * Creates a string representing the messages of the instance.
215     *
216     * @return A string representing the messages of the instance.
217     */
218    private String internalString()
219    {
220        final StringBuffer buf = new StringBuffer( 200 ).append( '{' );
221        final String[] propertyNames = this.getPropertyNames();
222        final List unspecifiedMsgs = (List) this.messages.get( PROP_UNSPECIFIED );
223 
224        for ( int i = 0; i < propertyNames.length; i++ )
225        {
226            buf.append( propertyNames[i] ).append( "={" );
227 
228            int j = 0;
229            final List msgs = (List) this.messages.get( propertyNames[i] );
230            for ( Iterator it = msgs.iterator(); it.hasNext(); j++ )
231            {
232                final Message msg = (Message) it.next();
233                buf.append( '[' ).append( j ).append( "]=" ).append( msg.getText( Locale.getDefault() ) );
234                if ( it.hasNext() )
235                {
236                    buf.append( ", " );
237                }
238            }
239 
240            buf.append( '}' );
241            if ( i + 1 < propertyNames.length )
242            {
243                buf.append( ", " );
244            }
245        }
246 
247        if ( unspecifiedMsgs != null && !unspecifiedMsgs.isEmpty() )
248        {
249            if ( propertyNames.length > 0 )
250            {
251                buf.append( ", " );
252            }
253 
254            buf.append( PROP_UNSPECIFIED ).append( "={" );
255 
256            int i = 0;
257            for ( Iterator it = unspecifiedMsgs.iterator(); it.hasNext(); i++ )
258            {
259                final Message msg = (Message) it.next();
260                buf.append( "[" ).append( i ).append( "]=" ).append( msg.getText( Locale.getDefault() ) );
261                if ( it.hasNext() )
262                {
263                    buf.append( ", " );
264                }
265            }
266 
267            buf.append( '}' );
268        }
269 
270        buf.append( '}' );
271        return buf.toString();
272    }
273 
274    /**
275     * Returns a string representation of the object.
276     *
277     * @return A string representation of the object.
278     */
279    public String toString()
280    {
281        return super.toString() + '\n' + this.internalString();
282    }
283 
284}

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