View Javadoc

1   /**
2    * Copyright (c) 2012, University of Konstanz, Distributed Systems Group
3    * All rights reserved.
4    * 
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions are met:
7    * * Redistributions of source code must retain the above copyright
8    * notice, this list of conditions and the following disclaimer.
9    * * Redistributions in binary form must reproduce the above copyright
10   * notice, this list of conditions and the following disclaimer in the
11   * documentation and/or other materials provided with the distribution.
12   * * Neither the name of the University of Konstanz nor the
13   * names of its contributors may be used to endorse or promote products
14   * derived from this software without specific prior written permission.
15   * 
16   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19   * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
20   * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26   */
27  package org.perfidix.meter;
28  
29  /**
30   * Small enum to store different times.
31   * 
32   * @author Sebastian Graf, University of Konstanz
33   */
34  public enum Time {
35  
36      /** Enum for nano seconds. */
37      NanoSeconds("ns", "nano seconds", 1),
38      /** Enum for milli seconds. */
39      MilliSeconds("ms", "milli seconds", 1000000),
40      /** Enum for seconds. */
41      Seconds("s", "second", 1000000000),
42      /** Enum for minutes. */
43      Minutes("min", "minutes", 60000000000.0);
44  
45      /**
46       * The unit of the time.
47       */
48      private final String unit;
49  
50      /**
51       * The description of the time.
52       */
53      private final String unitDescription;
54  
55      /**
56       * Number of bytes.
57       */
58      private transient final double milliSeconds;
59  
60      /**
61       * The constructor for the memory sizes.
62       * 
63       * @param paramUnit
64       *            to give
65       * @param paramUnitDesc
66       *            to give
67       * @param paramMillis
68       *            to give
69       */
70      private Time(final String paramUnit, final String paramUnitDesc, final double paramMillis) {
71          unit = paramUnit;
72          unitDescription = paramUnitDesc;
73          milliSeconds = paramMillis;
74      }
75  
76      /**
77       * Getting the number of milli seconds.
78       * 
79       * @return the number of milli seconds
80       */
81      public double getNumberOfMilliSeconds() {
82          return milliSeconds;
83      }
84  
85      /**
86       * Getting the unit.
87       * 
88       * @return the unit
89       */
90      public String getUnit() {
91          return unit;
92      }
93  
94      /**
95       * Getting the full unitname.
96       * 
97       * @return the full unitname
98       */
99      public String getUnitDescription() {
100         return unitDescription;
101     }
102 
103 }