EMMA Coverage Report (generated Sun Sep 18 11:34:27 PHT 2011)
[all classes][org.apache.maven.continuum.notification.mail]

COVERAGE SUMMARY FOR SOURCE FILE [FormatterTool.java]

nameclass, %method, %block, %line, %
FormatterTool.java100% (1/1)86%  (6/7)79%  (154/194)77%  (33/43)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class FormatterTool100% (1/1)86%  (6/7)79%  (154/194)77%  (33/43)
trim (String): String 0%   (0/1)0%   (0/7)0%   (0/3)
formatTrigger (int): String 100% (1/1)35%  (7/20)60%  (3/5)
formatProjectState (int): String 100% (1/1)54%  (21/39)64%  (7/11)
formatTimestamp (long): String 100% (1/1)89%  (16/18)67%  (2/3)
FormatterTool (String): void 100% (1/1)100% (11/11)100% (4/4)
formatInterval (long, long): String 100% (1/1)100% (83/83)100% (12/12)
getSimpleDateFormat (ThreadLocal, String): SimpleDateFormat 100% (1/1)100% (16/16)100% (5/5)

1package org.apache.maven.continuum.notification.mail;
2 
3/*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements.  See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership.  The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License.  You may obtain a copy of the License at
11 *
12 *   http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied.  See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21 
22import java.text.SimpleDateFormat;
23import java.util.Date;
24 
25import org.apache.maven.continuum.project.ContinuumProjectState;
26 
27/**
28 * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
29 * @version $Id: FormatterTool.java 764925 2009-04-14 19:13:57Z evenisse $
30 */
31public class FormatterTool
32{
33    private final String timestampFormatString;
34 
35    private final ThreadLocal<SimpleDateFormat> timestampFormat = new ThreadLocal<SimpleDateFormat>();
36 
37    public FormatterTool( String timestampFormatString )
38    {
39        this.timestampFormatString = timestampFormatString;
40    }
41 
42    // TODO: Add i18n
43    public String formatProjectState( int state )
44    {
45        if ( state == ContinuumProjectState.NEW || state == ContinuumProjectState.CHECKEDOUT )
46        {
47            return "New";
48        }
49        else if ( state == ContinuumProjectState.OK )
50        {
51            return "Ok";
52        }
53        else if ( state == ContinuumProjectState.FAILED )
54        {
55            return "Failed";
56        }
57        else if ( state == ContinuumProjectState.ERROR )
58        {
59            return "Error";
60        }
61        else if ( state == ContinuumProjectState.BUILDING )
62        {
63            return "Building";
64        }
65        else
66        {
67            return "Unknown project state '" + state + "'";
68        }
69    }
70 
71    public String formatTrigger( int trigger )
72    {
73        if ( trigger == ContinuumProjectState.TRIGGER_SCHEDULED )
74        {
75            // TODO: fix this
76            return "Schedule";
77        }
78        else if ( trigger == ContinuumProjectState.TRIGGER_FORCED )
79        {
80            return "Forced";
81        }
82        else
83        {
84            return "Unknown build trigger: '" + trigger + "'";
85        }
86    }
87 
88    public String formatTimestamp( long timestamp )
89    {
90        if ( timestamp <= 0 )
91        {
92            return null;
93        }
94        return getSimpleDateFormat( timestampFormat, timestampFormatString ).format( new Date( timestamp ) );
95    }
96 
97    public String formatInterval( long start, long end )
98    {
99        long diff = end - start;
100 
101        long interval = diff / 1000L;
102 
103        long hours = interval / 3600L;
104 
105        interval -= hours * 3600;
106 
107        long minutes = interval / 60;
108 
109        interval -= minutes * 60;
110 
111        long seconds = interval;
112 
113        if ( hours > 0 )
114        {
115            return Long.toString( hours ) + "h " + Long.toString( minutes ) + "m " + Long.toString( seconds ) + "s";
116        }
117 
118        if ( minutes > 0 )
119        {
120            return Long.toString( minutes ) + "m " + Long.toString( seconds ) + "s";
121        }
122 
123        return Long.toString( seconds ) + "s";
124    }
125 
126    // ----------------------------------------------------------------------
127    //
128    // ----------------------------------------------------------------------
129 
130    private SimpleDateFormat getSimpleDateFormat( ThreadLocal<SimpleDateFormat> threadLocal, String format )
131    {
132        SimpleDateFormat dateFormat = threadLocal.get();
133 
134        if ( dateFormat == null )
135        {
136            dateFormat = new SimpleDateFormat( format );
137 
138            threadLocal.set( dateFormat );
139        }
140 
141        return dateFormat;
142    }
143 
144    public String trim( String str )
145    {
146        if ( str == null )
147        {
148            return "";
149        }
150        return str.trim();
151    }
152}

[all classes][org.apache.maven.continuum.notification.mail]
EMMA 2.0.5312 (C) Vladimir Roubtsov