/* ===================================================================== * Ocelotl Visualization Tool * ===================================================================== * * Ocelotl is a Framesoc plug in that enables to visualize a trace * overview by using aggregation techniques * * (C) Copyright 2013 INRIA * * 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: * Damien Dosimont <damien.dosimont@imag.fr> * Generoso Pagano <generoso.pagano@inria.fr> */ package fr.inria.soctrace.tools.ocelotl.core.timeslice; import fr.inria.soctrace.tools.ocelotl.core.timeregion.TimeRegion; public class TimeSlice { private TimeRegion timeRegion; private long number; private long value = -1; public TimeSlice(final TimeRegion timeRegion, final long number) { super(); this.timeRegion = timeRegion; this.number = number; } public TimeSlice(final TimeRegion timeRegion, final long number, final long value) { super(); this.timeRegion = timeRegion; this.number = number; this.value = value; } public long getNumber() { return number; } public TimeRegion getTimeRegion() { return timeRegion; } public long getValue() { return value; } /** * Compute the duration of the time region that is within the time slice * * @param testedTimeRegion * @return the length of the time region in the time slice */ public double regionInsideMe(final TimeRegion testedTimeRegion) { // If the state starts within the time region if (testedTimeRegion.getTimeStampStart() >= timeRegion .getTimeStampStart() && testedTimeRegion.getTimeStampStart() <= timeRegion .getTimeStampEnd()) { // If it ends within the time region if (testedTimeRegion.getTimeStampEnd() < timeRegion .getTimeStampEnd()) // State duration return testedTimeRegion.getTimeStampEnd() - testedTimeRegion.getTimeStampStart(); else // State duration up until the time region ends return timeRegion.getTimeStampEnd() - testedTimeRegion.getTimeStampStart(); // If state starts before the time region } else if (testedTimeRegion.getTimeStampStart() < timeRegion .getTimeStampStart()) // If it ends within the time region if (testedTimeRegion.getTimeStampEnd() <= timeRegion .getTimeStampEnd() && testedTimeRegion.getTimeStampEnd() >= timeRegion .getTimeStampStart()) // State duration from the beginning of the state region return testedTimeRegion.getTimeStampEnd() - timeRegion.getTimeStampStart(); // if it ends after the time region else if (testedTimeRegion.getTimeStampEnd() > timeRegion .getTimeStampEnd()) // return time region duration return timeRegion.getTimeStampEnd() - timeRegion.getTimeStampStart(); return 0; } public void setNumber(final long number) { this.number = number; } public void setTimeRegion(final TimeRegion timeRegion) { this.timeRegion = timeRegion; } public void setValue(final long value) { this.value = value; } public boolean startIsInsideMe(final long eventStart) { return eventStart >= timeRegion.getTimeStampStart() && eventStart <= timeRegion.getTimeStampEnd(); } }