diff -r f65f740e69f9 -r 8e12a575a9b5 sysperfana/memspyext/com.nokia.s60tools.swmtanalyser/src/com/nokia/s60tools/swmtanalyser/ui/graphs/TimeObject.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysperfana/memspyext/com.nokia.s60tools.swmtanalyser/src/com/nokia/s60tools/swmtanalyser/ui/graphs/TimeObject.java Wed Apr 21 20:01:08 2010 +0300 @@ -0,0 +1,128 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ +package com.nokia.s60tools.swmtanalyser.ui.graphs; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; + +/** + * Object for storing time to show in X-axis in UI. Handles time formatting. + */ +public class TimeObject { + + private String days = null; + + private String hourMinutesAndSeconds = null; + + + /** + * Create a time object + * @param time + * @param scale + */ + public TimeObject(double time, double scale){ + init(time, scale); + } + + /** + * Get the days with units, e.g. "1d" or "12d" + * @return the days null if not defined or less than 1 + */ + public String getDays() { + return days; + } + + /** + * Set day String with units, e.g. "1d" + * @param days the days to set + */ + public void setDays(String days) { + this.days = days; + } + + /** + * Get Hours, minutes and seconds as "h:m:s" -format + * @return the hourMinutesAndSeconds + */ + public String getHourMinutesAndSeconds() { + return hourMinutesAndSeconds; + } + + /** + * Set Hours, minutes and seconds as "h:m:s" -format + * @param hourMinutesAndSeconds the hourMinutesAndSeconds to set + */ + public void setHourMinutesAndSeconds(String hourMinutesAndSeconds) { + this.hourMinutesAndSeconds = hourMinutesAndSeconds; + } + + /** + * Check if days has been set for this time object + * @return true if there are days set, false otherwise. + */ + public boolean hasDays() { + return getDays() != null; + } + + /** + * Scaling the time and decides how to show the time in UI. + * E.g. + *
"30s" + *
"1m 30s" + *
"40m" + *
"1h 30m" + * @param time + * @param scale + * @return time with units to add in graph + */ + private void init(double time, double scale) { + + time = time * scale; + long timeAsLong = (long)time * 1000;//Ms to s + String hoursMinsAndSecs ; + + //To avoid TimeZone adding e.g. 2hours to time, using GMT + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));//$NON-NLS-1$ + SimpleDateFormat hmsDf;//Date format for hours, minutes and seconds + hmsDf = new SimpleDateFormat("H:m:s");//$NON-NLS-1$ + hmsDf.setCalendar(cal); + + //If it has been taken more than one day, also days must be calculated + if(time > (60*60*24)){ + //Decrease one day for time, because SimpeDateFormat will show "0" days as day "1" + timeAsLong = timeAsLong - (60*60*24*1000); + SimpleDateFormat dDf = new SimpleDateFormat("D'd'");//$NON-NLS-1$ + dDf.setCalendar(cal); + Date date = new Date (timeAsLong); + hoursMinsAndSecs = hmsDf.format(date ); + String days = dDf.format(date); + setDays(days); + setHourMinutesAndSeconds(hoursMinsAndSecs); + } + //If it has been taken less than day, we need only hours minutes and seconds + else{ + Date date = new Date (timeAsLong); + hoursMinsAndSecs = hmsDf.format(date ); + setHourMinutesAndSeconds(hoursMinsAndSecs); + } + + + } + +}