Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
TimeUnit |
|
| 2.0;2 |
1 | package com.google.code.jetm.maven.data; | |
2 | ||
3 | import com.google.code.jetm.maven.TimingReportMojo; | |
4 | ||
5 | /** | |
6 | * Enumerations of the time units supported by this report. | |
7 | * | |
8 | * @author jrh3k5 | |
9 | * | |
10 | */ | |
11 | ||
12 | 1 | public enum TimeUnit { |
13 | /** | |
14 | * Milliseconds. | |
15 | */ | |
16 | 1 | MILLISECONDS("ms", 1), |
17 | /** | |
18 | * Seconds | |
19 | */ | |
20 | 1 | SECONDS("sec", 1000); |
21 | ||
22 | /** | |
23 | * Get a time unit from the appropriate {@link TimingReportMojo} abbreviate. The comparison is case-insensitive. | |
24 | * | |
25 | * @param abbreviation | |
26 | * The abbreviation from which to obtain the corresponding enumeration. | |
27 | * @return A {@link TimeUnit} enumeration corresponding to the given abbreviation: | |
28 | * <ul> | |
29 | * <li><b>MILLIS</b>: returns {@link #MILLISECONDS}.</li> | |
30 | * <li><b>SECS</b>: returns {@link #SECONDS}</li> | |
31 | * @throws IllegalArgumentException | |
32 | * If the given abbreviation is not known. | |
33 | */ | |
34 | public static TimeUnit fromMojoAbbreviation(String abbreviation) { | |
35 | 3 | if ("SECS".equalsIgnoreCase(abbreviation)) |
36 | 1 | return SECONDS; |
37 | 2 | else if ("MILLIS".equalsIgnoreCase(abbreviation)) |
38 | 1 | return MILLISECONDS; |
39 | ||
40 | 1 | throw new IllegalArgumentException("Unrecognized time unit abbreviation: " + abbreviation); |
41 | } | |
42 | ||
43 | private final long division; | |
44 | private final String displayName; | |
45 | ||
46 | /** | |
47 | * Create a time unit enumeration. | |
48 | * | |
49 | * @param displayName | |
50 | * The name to be displayed on the reports. | |
51 | * @param division | |
52 | * The amount by which microseconds are to be divided in order to convert the microseconds into this unit's measurement. | |
53 | */ | |
54 | 2 | private TimeUnit(String displayName, long division) { |
55 | 2 | this.displayName = displayName; |
56 | 2 | this.division = division; |
57 | 2 | } |
58 | ||
59 | /** | |
60 | * Convert microseconds to this unit's value. | |
61 | * | |
62 | * @param micros | |
63 | * The number of microseconds. | |
64 | * @return The given number of microseconds in this unit's measurement. | |
65 | */ | |
66 | public double fromMilliseconds(double micros) { | |
67 | 2 | return micros / division; |
68 | } | |
69 | ||
70 | /** | |
71 | * Get the display name of this time unit. | |
72 | * | |
73 | * @return The display name of the time unit. | |
74 | */ | |
75 | public String getDisplayName() { | |
76 | 2 | return displayName; |
77 | } | |
78 | ||
79 | /** | |
80 | * Get the value by which this unit divides in order to convert from milliseconds to this unit. | |
81 | * | |
82 | * @return The division value. | |
83 | */ | |
84 | public long getDivisionValue() { | |
85 | 0 | return division; |
86 | } | |
87 | } |