Class encapsulating timer functionality
/* * Copyright (c) 2003 - 2007 OpenSubsystems s.r.o. Slovak Republic. All rights reserved. * * Project: OpenSubsystems * * $Id: MyTimer.java,v 1.5 2007/01/07 06:14:00 bastafidli Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /** * Class encapsulating timer functionality. * * @version $Id: MyTimer.java,v 1.5 2007/01/07 06:14:00 bastafidli Exp $ * @author Miro Halas * @code.reviewer Miro Halas * @code.reviewed Initial revision */ public class MyTimer { // Attributes /////////////////////////////////////////////////////////////// /** * Remeber start time here. */ private long m_lStartTime; /** * Remeber stop time here. */ private long m_lStopTime; // Constructors ///////////////////////////////////////////////////////////// /** * Default constructor. * Starts counting fro the moment it is cosntructed. */ public MyTimer( ) { reset(); } // Logic //////////////////////////////////////////////////////////////////// /** * @return long - start time; */ public long getStartTime() { return m_lStartTime; } /** * @return - stop time; */ public long getStopTime() { return m_lStopTime; } /** * Reset the counter and start counting from scratch. */ public void reset( ) { m_lStartTime = System.currentTimeMillis(); m_lStopTime = 0; } /** * Stop the timer. */ public void stop( ) { m_lStopTime = System.currentTimeMillis(); } /** * Get timer duration (the timer doesn't stop) in milliseconds. * * @return long - difference between stop and start time. */ public long getDuration( ) { long lStopTime; if (m_lStopTime == 0) { lStopTime = System.currentTimeMillis(); } else { lStopTime = m_lStopTime; } return lStopTime - m_lStartTime; } /** * Print the state of the timer without stopping it. * @return String - timing information */ public String toString( ) { long lTotalMS = getDuration(); long lMS = lTotalMS % 1000; long lTotalSecs = lTotalMS / 1000; long lSecs = lTotalSecs % 60; long lTotalMins = lTotalSecs / 60; long lMinutes = lTotalMins % 60; long lHours = lTotalMins / 60; StringBuffer sbBuffer = new StringBuffer(); if (lHours > 0) { sbBuffer.append(lHours); sbBuffer.append(":"); sbBuffer.append(lMinutes); sbBuffer.append(":"); sbBuffer.append(lSecs); sbBuffer.append("."); sbBuffer.append(lMS); } else if (lMinutes > 0) { sbBuffer.append(lMinutes); sbBuffer.append(":"); sbBuffer.append(lSecs); sbBuffer.append("."); sbBuffer.append(lMS); } else if (lSecs > 0) { sbBuffer.append(lSecs); sbBuffer.append("."); sbBuffer.append(lMS); sbBuffer.append(" seconds"); } else { sbBuffer.append(lMS); sbBuffer.append(" ms"); } return sbBuffer.toString(); } }