/******************************************************************************* * Copyright (c) 2012, 2014 Ericsson * * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Bernd Hufmann - Initial API and implementation *******************************************************************************/ package org.eclipse.tracecompass.tmf.core.timestamp; import java.util.TimeZone; /** * A generic timestamp implementation for delta between timestamps. The * toString() method takes negative values into consideration. * * @author Bernd Hufmann */ public class TmfTimestampDelta extends TmfTimestamp { // ------------------------------------------------------------------------ // Members // ------------------------------------------------------------------------ private final long fValue; private final int fScale; // ------------------------------------------------------------------------ // Constructors // ------------------------------------------------------------------------ /** * Default constructor */ public TmfTimestampDelta() { this(0, ITmfTimestamp.SECOND_SCALE); } /** * Simple constructor (scale = precision = 0) * * @param value * the timestamp value */ public TmfTimestampDelta(long value) { this(value, ITmfTimestamp.SECOND_SCALE); } /** * Constructor * * @param value * the timestamp value * @param scale * the timestamp scale */ public TmfTimestampDelta(long value, int scale) { fValue = value; fScale = scale; } /** * Copy constructor * * @param timestamp * the timestamp to copy */ public TmfTimestampDelta(ITmfTimestamp timestamp) { this(timestamp.getValue(), timestamp.getScale()); } // ------------------------------------------------------------------------ // Operations // ------------------------------------------------------------------------ @Override public long getValue() { return fValue; } @Override public int getScale() { return fScale; } @Override public ITmfTimestamp normalize(final long offset, final int scale) { ITmfTimestamp nts = super.normalize(offset, scale); return new TmfTimestampDelta(nts.getValue(), nts.getScale()); } @Override public String toString() { return toString(TmfTimestampFormat.getDefaulIntervalFormat()); } @Override public String toString(TmfTimestampFormat format) { if (getValue() < 0) { TmfTimestampDelta tmpTs = new TmfTimestampDelta(-getValue(), getScale()); return "-" + tmpTs.toString(format); //$NON-NLS-1$ } TmfTimestampFormat deltaFormat = new TmfTimestampFormat(format.toPattern()); deltaFormat.setTimeZone(TimeZone.getTimeZone("UTC")); //$NON-NLS-1$ return super.toString(deltaFormat); } }