/******************************************************************************* * Copyright (c) 2012, 2013 Ericsson * Copyright (c) 2010, 2011 École Polytechnique de Montréal * Copyright (c) 2010, 2011 Alexandre Montplaisir <alexandre.montplaisir@gmail.com> * * 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 * *******************************************************************************/ package fr.inria.linuxtools.statesystem.core.interval; import fr.inria.linuxtools.statesystem.core.statevalue.ITmfStateValue; /** * The StateInterval represents the "state" a particular attribute was in, at a * given time. It is the main object being returned from queries to the state * system. * * @author Alexandre Montplaisir * @since 3.0 */ public final class TmfStateInterval implements ITmfStateInterval { private final long start; private final long end; private final int attribute; private final ITmfStateValue sv; /** * Construct an interval from its given parameters * * @param start * Start time * @param end * End time * @param attribute * Attribute linked to this interval * @param sv * State value this interval will contain */ public TmfStateInterval(long start, long end, int attribute, ITmfStateValue sv) { this.start = start; this.end = end; this.attribute = attribute; this.sv = sv; } @Override public long getStartTime() { return start; } @Override public long getEndTime() { return end; } @Override public long getViewerEndTime() { return end + 1; } @Override public int getAttribute() { return attribute; } @Override public ITmfStateValue getStateValue() { return sv; } @Override public boolean intersects(long timestamp) { if (start <= timestamp) { if (end >= timestamp) { return true; } } return false; } @Override public String toString() { /* Only used for debugging */ StringBuffer buf = new StringBuffer(start + " to "); //$NON-NLS-1$ buf.append(end + ", "); //$NON-NLS-1$ buf.append(String.format("key = %4d, ", attribute)); //$NON-NLS-1$ buf.append("value = " + sv.toString()); //$NON-NLS-1$ return buf.toString(); } }