EMMA Coverage Report (generated Sun Feb 05 10:43:15 CET 2012)
[all classes][desmoj.core.simulator]

COVERAGE SUMMARY FOR SOURCE FILE [SingleUnitTimeFormatter.java]

nameclass, %method, %block, %line, %
SingleUnitTimeFormatter.java0%   (0/1)0%   (0/5)0%   (0/310)0%   (0/68)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class SingleUnitTimeFormatter0%   (0/1)0%   (0/5)0%   (0/310)0%   (0/68)
<static initializer> 0%   (0/1)0%   (0/192)0%   (0/42)
SingleUnitTimeFormatter (TimeUnit, TimeUnit, int, boolean): void 0%   (0/1)0%   (0/30)0%   (0/8)
buildSingleUnitTimeString (long): String 0%   (0/1)0%   (0/78)0%   (0/16)
buildTimeString (TimeInstant): String 0%   (0/1)0%   (0/5)0%   (0/1)
buildTimeString (TimeSpan): String 0%   (0/1)0%   (0/5)0%   (0/1)

1package desmoj.core.simulator;
2 
3import java.util.EnumMap;
4import java.util.Map;
5import java.util.concurrent.TimeUnit;
6 
7/**
8 * This is the default Time Formatter. Use this class to format TimeSpan and
9 * TimeInstant objects like in the following examples: 5.1 , 5.1 SECONDS,
10 * 12.035, 12.035 MINUTES.
11 * 
12 * @version DESMO-J, Ver. 2.3.3 copyright (c) 2011
13 * @author Felix Klueckmann
14 * 
15 *         Licensed under the Apache License, Version 2.0 (the "License"); you
16 *         may not use this file except in compliance with the License. You may
17 *         obtain a copy of the License at
18 *         http://www.apache.org/licenses/LICENSE-2.0
19 * 
20 *         Unless required by applicable law or agreed to in writing, software
21 *         distributed under the License is distributed on an "AS IS" BASIS,
22 *         WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
23 *         implied. See the License for the specific language governing
24 *         permissions and limitations under the License.
25 * 
26 */
27public class SingleUnitTimeFormatter implements TimeFormatter {
28        private static Map<TimeUnit, Map<TimeUnit, Long>> timeConstants = new EnumMap<TimeUnit, Map<TimeUnit, Long>>(
29                        TimeUnit.class);
30 
31        static {
32 
33                Map<TimeUnit, Long> dayConstants = new EnumMap<TimeUnit, Long>(
34                                TimeUnit.class);
35                dayConstants.put(TimeUnit.HOURS, 24l);
36                dayConstants.put(TimeUnit.MINUTES, 1440l);
37                dayConstants.put(TimeUnit.SECONDS, 86400l);
38                dayConstants.put(TimeUnit.MILLISECONDS, 86400000l);
39                dayConstants.put(TimeUnit.MICROSECONDS, 86400000000l);
40                dayConstants.put(TimeUnit.NANOSECONDS, 86400000000000l);
41                Map<TimeUnit, Long> hourConstants = new EnumMap<TimeUnit, Long>(
42                                TimeUnit.class);
43                hourConstants.put(TimeUnit.MINUTES, 60l);
44                hourConstants.put(TimeUnit.SECONDS, 3600l);
45                hourConstants.put(TimeUnit.MILLISECONDS, 3600000l);
46                hourConstants.put(TimeUnit.MICROSECONDS, 3600000000l);
47                hourConstants.put(TimeUnit.NANOSECONDS, 3600000000000l);
48                Map<TimeUnit, Long> minuteConstants = new EnumMap<TimeUnit, Long>(
49                                TimeUnit.class);
50                minuteConstants.put(TimeUnit.SECONDS, 60l);
51                minuteConstants.put(TimeUnit.MILLISECONDS, 60000l);
52                minuteConstants.put(TimeUnit.MICROSECONDS, 60000000l);
53                minuteConstants.put(TimeUnit.NANOSECONDS, 60000000000l);
54                Map<TimeUnit, Long> secondConstants = new EnumMap<TimeUnit, Long>(
55                                TimeUnit.class);
56                secondConstants.put(TimeUnit.MILLISECONDS, 1000l);
57                secondConstants.put(TimeUnit.MICROSECONDS, 1000000l);
58                secondConstants.put(TimeUnit.NANOSECONDS, 1000000000l);
59                Map<TimeUnit, Long> milliConstants = new EnumMap<TimeUnit, Long>(
60                                TimeUnit.class);
61                milliConstants.put(TimeUnit.MICROSECONDS, 1000l);
62                milliConstants.put(TimeUnit.NANOSECONDS, 1000000l);
63                Map<TimeUnit, Long> microConstants = new EnumMap<TimeUnit, Long>(
64                                TimeUnit.class);
65                microConstants.put(TimeUnit.NANOSECONDS, 1000l);
66 
67                timeConstants.put(TimeUnit.DAYS, dayConstants);
68                timeConstants.put(TimeUnit.HOURS, hourConstants);
69                timeConstants.put(TimeUnit.MINUTES, minuteConstants);
70                timeConstants.put(TimeUnit.SECONDS, secondConstants);
71                timeConstants.put(TimeUnit.MILLISECONDS, milliConstants);
72                timeConstants.put(TimeUnit.MICROSECONDS, microConstants);
73 
74        }
75        /**
76         * The TimeUnit that is used in this TimeFormatter
77         */
78        private final TimeUnit _myTimeUnit;
79        /**
80         * the value of epsilon used in this TimeFormatter
81         */
82        private final TimeUnit _epsilon;
83        /**
84         * A Factor used for unit conversion
85         */
86        private final long _myFactor;
87        /**
88         * The number of digits after the decimal point which will be displayed for
89         * the time values.
90         */
91        protected final long _floats;
92        
93        /**
94         * 
95         */
96        private final long _precisionFactor;
97 
98        /**
99         * Flag that indicates if the time unit will be included in the time String.
100         * 
101         */
102        private final boolean _writeUnit;
103 
104        /**
105         * Constructs a DecimalTimeFormatter.
106         * 
107         * @param unit
108         *            java.util.concurrent.TimeUnit : The time values that will be
109         *            used
110         * @param floats
111         *            int : The number of floating point digits to print
112         * @param writeUnit
113         *            boolean : Indicates if the time unit will be included in the
114         *            time String.
115         */
116        public SingleUnitTimeFormatter(TimeUnit unit, TimeUnit epsilon, int floats, boolean writeUnit) {
117                this._myTimeUnit = unit;
118                this._epsilon=epsilon;
119                this._floats = floats;
120                this._precisionFactor=(long)java.lang.Math.pow(10, floats);
121                this._writeUnit = writeUnit;
122                this._myFactor=epsilon.convert(1,_myTimeUnit);
123        }
124        
125        /**Returns the String-Representation of the given TimeInstant
126         *  
127         */
128        public String buildTimeString(TimeInstant instant) {
129                return buildSingleUnitTimeString(instant.getTimeInEpsilon());
130        }
131        
132        /**Returns the String-Representation of the given TimeSpan
133         *  
134         */
135        public String buildTimeString(TimeSpan span) {
136                return buildSingleUnitTimeString(span.getTimeInEpsilon());
137        }
138        
139        /**Returns the String-Representation of the given time object.
140         *         
141         */
142        private String buildSingleUnitTimeString(long timeValue){
143                StringBuffer timeStringBuffer = new StringBuffer();
144                
145                if (_myTimeUnit.compareTo(_epsilon) > 0) {
146                        // unit is a coarser granularity than epsilon
147                        timeStringBuffer.append('.');
148                        //append seperator
149                        long fractionTime = _myTimeUnit.convert((timeValue
150                                        % _myFactor)*_precisionFactor,
151                                        _epsilon);
152                        
153                        String fractionTimeString= Long.toString(fractionTime);
154                        char zero = '0';
155                        //append as many zeros as needed
156                        for (int i = fractionTimeString.length(); i <_floats; i++) {
157                                timeStringBuffer.append(zero);
158                        }
159                        
160                        timeStringBuffer.append(fractionTimeString);
161                        
162                }
163                timeStringBuffer.insert(0,Long.toString(_myTimeUnit.convert(timeValue,_epsilon)));
164                if (_writeUnit) {
165                        //append the name of the time unit
166                        timeStringBuffer.append(' ');
167                        timeStringBuffer.append(_myTimeUnit.name());
168                }
169                return timeStringBuffer.toString();
170        }
171}

[all classes][desmoj.core.simulator]
EMMA 2.0.9414 (unsupported private build) (C) Vladimir Roubtsov