EMMA Coverage Report (generated Tue Jan 14 00:37:43 CET 2014)
[all classes][org.jdtaus.core.text]

COVERAGE SUMMARY FOR SOURCE FILE [Message.java]

nameclass, %method, %block, %line, %
Message.java0%   (0/3)0%   (0/12)0%   (0/177)0%   (0/35)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class AscendingMessageComparator0%   (0/1)0%   (0/2)0%   (0/55)0%   (0/13)
AscendingMessageComparator (): void 0%   (0/1)0%   (0/3)0%   (0/2)
compare (Object, Object): int 0%   (0/1)0%   (0/52)0%   (0/11)
     
class DescendingMessageComparator0%   (0/1)0%   (0/2)0%   (0/8)0%   (0/3)
DescendingMessageComparator (): void 0%   (0/1)0%   (0/3)0%   (0/2)
compare (Object, Object): int 0%   (0/1)0%   (0/5)0%   (0/1)
     
class Message0%   (0/1)0%   (0/8)0%   (0/114)0%   (0/19)
<static initializer> 0%   (0/1)0%   (0/9)0%   (0/2)
Message (): void 0%   (0/1)0%   (0/11)0%   (0/4)
clone (): Object 0%   (0/1)0%   (0/9)0%   (0/3)
equals (Object): boolean 0%   (0/1)0%   (0/17)0%   (0/1)
getTimestamp (): long 0%   (0/1)0%   (0/3)0%   (0/1)
hashCode (): int 0%   (0/1)0%   (0/4)0%   (0/1)
internalString (): String 0%   (0/1)0%   (0/50)0%   (0/6)
toString (): String 0%   (0/1)0%   (0/11)0%   (0/1)

1/*
2 *  jDTAUS Core 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.core.text;
22 
23import java.io.Serializable;
24import java.rmi.server.UID;
25import java.util.Comparator;
26import java.util.Locale;
27 
28/**
29 * Application message.
30 * <p>Application messages consist of at least the two properties
31 * {@code timestamp} and {@code formatArguments}. The {@code timestamp} property
32 * will be initialized during instantiation to hold the timestamp of instance
33 * creation. Property {@code formatArguments} holds the arguments to use
34 * for formatting message text. It is recommended that subclasses of this class
35 * are declared {@code final} so that calling {@code getClass()} on a message
36 * instance always returns a type uniquely identifying a message type in the
37 * system.</p>
38 *
39 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
40 * @version $JDTAUS: Message.java 8743 2012-10-07 03:06:20Z schulte $
41 *
42 * @see MessageEvent
43 */
44public abstract class Message implements Cloneable, Serializable
45{
46    //--Constants---------------------------------------------------------------
47 
48    /**
49     * Comparator for sorting messages in ascending order of occurence.
50     * <p><b>Note:</b><br/>
51     * This comparator imposes orderings that are inconsistent with equals.</p>
52     */
53    public static final Comparator ASCENDING =
54        new AscendingMessageComparator();
55 
56    /**
57     * Comparator for sorting messages in descending order of occurence.
58     * <p><b>Note:</b><br/>
59     * This comparator imposes orderings that are inconsistent with equals.</p>
60     */
61    public static final Comparator DESCENDING =
62        new DescendingMessageComparator();
63 
64    /** Serial version UID for backwards compatibility with 1.0.x classes. */
65    private static final long serialVersionUID = -5747726994506247015L;
66 
67    //---------------------------------------------------------------Constants--
68    //--Constructors------------------------------------------------------------
69 
70    /** Creates a new {@code Message} instance. */
71    public Message()
72    {
73        super();
74        this.timestamp = System.currentTimeMillis();
75        this.uid = new UID();
76    }
77 
78    //------------------------------------------------------------Constructors--
79    //--Message-----------------------------------------------------------------
80 
81    /**
82     * Unique message identifier.
83     * @serial
84     */
85    private UID uid;
86 
87    /**
88     * The timestamp this message got created.
89     * @serial
90     */
91    private long timestamp;
92 
93    /**
94     * Getter for property {@code timestamp}.
95     *
96     * @return the timestamp this message got created.
97     */
98    public final long getTimestamp()
99    {
100        return this.timestamp;
101    }
102 
103    /**
104     * Getter for property {@code formatArguments}.
105     *
106     * @param locale the locale to be used for the arguments to return.
107     *
108     * @return the arguments to use when formatting the message text.
109     */
110    public abstract Object[] getFormatArguments( Locale locale );
111 
112    /**
113     * Gets the formatted message text.
114     *
115     * @param locale the locale to be used for the text to return.
116     *
117     * @return the text of the message for {@code locale}.
118     */
119    public abstract String getText( Locale locale );
120 
121    /**
122     * Creates a string representing the properties of the instance.
123     *
124     * @return a string representing the properties of the instance.
125     */
126    private String internalString()
127    {
128        final StringBuffer buf = new StringBuffer( 500 );
129 
130        buf.append( "\n\ttimestamp=" ).append( this.timestamp ).
131            append( "\n\tuid=" ).append( this.uid ).
132            append( "\n\ttext=" ).append( this.getText( Locale.getDefault() ) );
133 
134        final Object[] args = this.getFormatArguments( Locale.getDefault() );
135        for ( int i = 0; i < args.length; i++ )
136        {
137            buf.append( "\n\tformatArguments[" ).append( i ).append( "]=" ).
138                append( args[i] );
139 
140        }
141 
142        return buf.toString();
143    }
144 
145    //-----------------------------------------------------------------Message--
146    //--Object------------------------------------------------------------------
147 
148    /**
149     * Returns a string representation of the object.
150     *
151     * @return a string representation of the object.
152     */
153    public String toString()
154    {
155        return super.toString() + this.internalString();
156    }
157 
158    /**
159     * Returns a hash code value for this object.
160     *
161     * @return a hash code value for this object.
162     */
163    public final int hashCode()
164    {
165        return this.uid.hashCode();
166    }
167 
168    /**
169     * Indicates whether some other object is equal to this one.
170     * <p>Messages internally cary a UID which is created during instantiation.
171     * This UID is used for comparing {@code o} with the instance.</p>
172     *
173     * @param o the reference object with which to compare.
174     *
175     * @return {@code true} if this object is the same as {@code o};
176     * {@code false} otherwise.
177     *
178     * @see UID
179     */
180    public final boolean equals( final Object o )
181    {
182        return o == this || ( o instanceof Message &&
183            ( ( Message ) o ).uid.equals( this.uid ) );
184 
185    }
186 
187    /**
188     * Creates and returns a copy of this object.
189     *
190     * @return a clone of this instance.
191     */
192    public Object clone()
193    {
194        try
195        {
196            return super.clone();
197        }
198        catch ( final CloneNotSupportedException e )
199        {
200            throw new AssertionError( e );
201        }
202    }
203 
204    //------------------------------------------------------------------Object--
205}
206 
207/**
208 * Comparator for sorting messages in ascending order of occurence.
209 * <p><b>Note:</b><br/>
210 * This comparator imposes orderings that are inconsistent with equals.</p>
211 *
212 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
213 * @version $JDTAUS: Message.java 8743 2012-10-07 03:06:20Z schulte $
214 */
215class AscendingMessageComparator implements Comparator, Serializable
216{
217 
218    /** Creates a new {@code AscendingMessageComparator} instance. */
219    AscendingMessageComparator()
220    {
221        super();
222    }
223 
224    //--Comparator--------------------------------------------------------------
225 
226    /**
227     * {@inheritDoc}
228     *
229     * @throws NullPointerException if either {@code o1} or {@code o2} is
230     * {@code null}.
231     * @throws ClassCastException if either {@code o1} or {@code o2} is
232     * not an instance of {@code Message}.
233     */
234    public int compare( final Object o1, final Object o2 )
235    {
236        if ( o1 == null )
237        {
238            throw new NullPointerException( "o1" );
239        }
240        if ( o2 == null )
241        {
242            throw new NullPointerException( "o2" );
243        }
244        if ( !( o1 instanceof Message ) )
245        {
246            throw new ClassCastException( o1.getClass().getName() );
247        }
248        if ( !( o2 instanceof Message ) )
249        {
250            throw new ClassCastException( o2.getClass().getName() );
251        }
252 
253        // TODO JDK 1.5 Long.valueOf(long)
254        final Long l1 = new Long( ( ( Message ) o1 ).getTimestamp() );
255        final Long l2 = new Long( ( ( Message ) o2 ).getTimestamp() );
256        return l1.compareTo( l2 );
257    }
258 
259    //--------------------------------------------------------------Comparator--
260}
261 
262/**
263 * Comparator for sorting messages in descending order of occurence.
264 * <p><b>Note:</b><br/>
265 * This comparator imposes orderings that are inconsistent with equals.</p>
266 *
267 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
268 * @version $JDTAUS: Message.java 8743 2012-10-07 03:06:20Z schulte $
269 */
270class DescendingMessageComparator
271    extends AscendingMessageComparator
272{
273 
274    /** Creates a new {@code DescendingMessageComparator} instance. */
275    DescendingMessageComparator()
276    {
277        super();
278    }
279 
280    //--Comparator--------------------------------------------------------------
281 
282    /**
283     * {@inheritDoc}
284     *
285     * @throws NullPointerException if either {@code o1} or {@code o2} is
286     * {@code null}.
287     * @throws ClassCastException if either {@code o1} or {@code o2} is
288     * not an instance of {@code Message}.
289     */
290    public int compare( final Object o1, final Object o2 )
291    {
292        return super.compare( o2, o1 );
293    }
294 
295    //--------------------------------------------------------------Comparator--
296}

[all classes][org.jdtaus.core.text]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov