X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=org.eclipse.linuxtools.tmf.core%2Fsrc%2Forg%2Feclipse%2Flinuxtools%2Ftmf%2Fcore%2Fctfadaptor%2FCtfLocation.java;h=7ca9fb0ac9be811eee957c875cb776517a5c12a6;hb=9a47bdf1564b806956fc15ae4a5e3790f8a0d4be;hp=a44610d35f1201f649749e4dcd3dc87fd053fee3;hpb=fcccd90096c4a9d4b5ca41f02cd71390cf1a93d3;p=deliverable%2Ftracecompass.git diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfLocation.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfLocation.java index a44610d35f..7ca9fb0ac9 100644 --- a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfLocation.java +++ b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfLocation.java @@ -1,33 +1,159 @@ +/******************************************************************************* + * Copyright (c) 2012 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: Matthew Khouzam - Initial API and implementation + *******************************************************************************/ package org.eclipse.linuxtools.tmf.core.ctfadaptor; import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp; import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation; -public class CtfLocation implements ITmfLocation { +/** + * The nugget of information that is unique to a location in a CTF trace. + * + * It can be copied and used to restore a position in a given trace. + * + * @version 1.0 + * @author Matthew Khouzam + */ +public class CtfLocation implements ITmfLocation, Cloneable { - public CtfLocation(Long location) { - setLocation(location); - } - + private CtfLocationData fLocation; + + /** + * An invalid location + */ + public static final CtfLocationData INVALID_LOCATION = new CtfLocationData(-1, -1); + + /** + * Constructor for CtfLocation. Uses a default index of 0. + * + * @param timestamp + * The timestamp of this location + */ public CtfLocation(ITmfTimestamp timestamp) { - setLocation(timestamp.getValue()); + setLocation(new CtfLocationData(timestamp.getValue(), 0)); } - private Long fTimestamp; + /** + * Standard constructor + * + * @param timestamp + * The timestamp of this location + * @param index + * The index of this location for this timestamp + * @since 2.0 + */ + public CtfLocation(ITmfTimestamp timestamp, long index) { + setLocation(new CtfLocationData(timestamp.getValue(), index)); + } -// @Override - public void setLocation(Long location) { - this.fTimestamp = location; + /** + * Copy constructor + * + * @param location + * Other location to copy + * @since 2.0 + */ + public CtfLocation(CtfLocationData location) { + setLocation(location); } + /** + * Move this location to another location's position. + * + * @param location + * The location to seek to + * @since 2.0 + */ + public void setLocation(CtfLocationData location) { + this.fLocation = location; + } + + /** + * Change this location's timestamp and index values. + * + * @param timestampValue + * The new timestamp + * @param index + * The new index + * @since 2.0 + */ + public void setLocation(long timestampValue, long index) { + this.fLocation = new CtfLocationData(timestampValue, index); + } + + + /** + * Get the Location Data of this location + * + * @return The CtfLocationData + * @see org.eclipse.linuxtools.tmf.core.trace.ITmfLocation#getLocationInfo() + * @since 2.0 + */ @Override - public Long getLocation() { - return this.fTimestamp; + public CtfLocationData getLocationInfo() { + return fLocation; } @Override public CtfLocation clone() { - return new CtfLocation(getLocation()); + return new CtfLocation(new CtfLocationData(fLocation.getTimestamp(), fLocation.getIndex())); } + + /* (non-Javadoc) + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = (prime * result) + + ((fLocation == null) ? 0 : fLocation.hashCode()); + return result; + } + + /* (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof CtfLocation)) { + return false; + } + CtfLocation other = (CtfLocation) obj; + if (fLocation == null) { + if (other.fLocation != null) { + return false; + } + } else if (!fLocation.equals(other.fLocation)) { + return false; + } + return true; + } + + /* (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + if( this.getLocationInfo().equals(CtfLocation.INVALID_LOCATION )) { + return "CtfLocation: INVALID"; //$NON-NLS-1$ + } + return "CtfLocation: " + getLocationInfo().toString(); //$NON-NLS-1$ + } + + }