blob: 0dc38a2088c08b20661a8bca924e693c362f2336 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015, 2016 EfficiOS Inc., Alexandre Montplaisir
*
* 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
*******************************************************************************/
package org.eclipse.tracecompass.internal.provisional.analysis.lami.core.types;
import java.util.Objects;
import org.eclipse.jdt.annotation.Nullable;
/**
* Lami time range data type
*
* @author Alexandre Montplaisir
*/
public class LamiTimeRange extends LamiData {
private final LamiTimestamp fBegin;
private final LamiTimestamp fEnd;
private final @Nullable Long fDuration;
/**
* Construct a new time range
*
* @param begin
* Begin time
* @param end
* End time
*/
public LamiTimeRange(LamiTimestamp begin, LamiTimestamp end) {
fBegin = begin;
fEnd = end;
/* Compute the duration */
// TODO: Consider the low and high limits.
Long beginLong = fBegin.getValue();
Long endLong = fEnd.getValue();
if (beginLong != null && endLong != null) {
fDuration = endLong.longValue() - beginLong.longValue();
} else {
fDuration = null;
}
}
/**
* Get the start time of this time range.
*
* @return The start time
*/
public LamiTimestamp getBegin() {
return fBegin;
}
/**
* Get the end time of this time range.
*
* @return The end time
*/
public LamiTimestamp getEnd() {
return fEnd;
}
/**
* Get the duration of this time range.
*
* @return The duration
*/
public @Nullable Long getDuration() {
return fDuration;
}
@Override
public @Nullable String toString() {
Long startValue = fBegin.getValue();
Long endValue = fEnd.getValue();
// TODO: The string should probably include the low and
// high limits here.
if (startValue != null && endValue != null) {
return "[" + String.valueOf(fBegin) + " - " + String.valueOf(fEnd) + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
return null;
}
@Override
public boolean equals(@Nullable Object object) {
if (this == object) {
return true;
}
if (object == null) {
return false;
}
if (getClass() != object.getClass()) {
return false;
}
LamiTimeRange timeRange = (LamiTimeRange) object;
return fBegin.equals(timeRange.fBegin) && fEnd.equals(timeRange.fEnd);
}
@Override
public int hashCode() {
return Objects.hash(fBegin, fEnd);
}
}