/*******************************************************************************
* Copyright (c) 2012, 2013 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 fr.inria.linuxtools.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
* @since 2.0
*/
public class TmfTimestampDelta extends TmfTimestamp {
// ------------------------------------------------------------------------
// Members
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
/**
* Default constructor
*/
public TmfTimestampDelta() {
super();
}
/**
* Simple constructor (scale = precision = 0)
*
* @param value the timestamp value
*/
public TmfTimestampDelta(long value) {
super(value);
}
/**
* Simple constructor (precision = 0)
*
* @param value the timestamp value
* @param scale the timestamp scale
*/
public TmfTimestampDelta(long value, int scale) {
super(value, scale);
}
/**
* Copy constructor
*
* @param timestamp the timestamp to copy
*/
public TmfTimestampDelta(ITmfTimestamp timestamp) {
super(timestamp);
}
/**
* Full constructor
*
* @param value the timestamp value
* @param scale the timestamp scale
* @param precision the timestamp precision
*/
public TmfTimestampDelta(long value, int scale, int precision) {
super(value, scale, precision);
}
// ------------------------------------------------------------------------
// Operations
// ------------------------------------------------------------------------
@Override
public ITmfTimestamp normalize(final long offset, final int scale) {
ITmfTimestamp nts = super.normalize(offset, scale);
return new TmfTimestampDelta(nts.getValue(), nts.getScale(), nts.getPrecision());
}
@Override
public String toString() {
return toString(TmfTimestampFormat.getDefaulIntervalFormat());
}
@Override
public String toString(TmfTimestampFormat format) {
if (getValue() < 0) {
TmfTimestampDelta tmpTs = new TmfTimestampDelta(-getValue(), getScale(), getPrecision());
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);
}
}