blob: 746e5dea62d98de09b5916f36b6ecef319f911d6 [file] [log] [blame]
/*******************************************************************************
* 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 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* 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);
}
}