/*******************************************************************************
- * Copyright (c) 2009, 2012 Ericsson
+ * Copyright (c) 2009, 2013 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* Contributors:
* Francois Chouinard - Initial API and implementation
* Francois Chouinard - Updated as per TMF Trace Model 1.0
+ * Patrick Tasse - Updated for location in checkpoint
******************************************************************************/
package org.eclipse.linuxtools.tmf.core.trace;
-import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
+import org.eclipse.linuxtools.tmf.core.timestamp.ITmfTimestamp;
/**
* A basic implementation of ITmfCheckpoint. It simply maps an event timestamp
* @see ITmfLocation
* @see ITmfTimestamp
*/
-public class TmfCheckpoint implements ITmfCheckpoint, Cloneable {
+public class TmfCheckpoint implements ITmfCheckpoint {
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
- // The checkpoint context
- private ITmfContext fContext;
+ // The checkpoint location
+ private final ITmfLocation fLocation;
// The checkpoint timestamp
- private ITmfTimestamp fTimestamp;
+ private final ITmfTimestamp fTimestamp;
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
- /**
- * Default constructor
- */
- @SuppressWarnings("unused")
- private TmfCheckpoint() {
- }
-
/**
* Full constructor
*
* @param timestamp the checkpoint timestamp
- * @param context the corresponding trace location
+ * @param location the corresponding trace location
+ * @since 2.0
*/
- public TmfCheckpoint(final ITmfTimestamp timestamp, final ITmfContext context) {
+ public TmfCheckpoint(final ITmfTimestamp timestamp, final ITmfLocation location) {
fTimestamp = timestamp;
- fContext = context;
+ fLocation = location;
}
/**
throw new IllegalArgumentException();
}
fTimestamp = other.fTimestamp;
- fContext = other.fContext;
- }
-
- // ------------------------------------------------------------------------
- // Cloneable
- // ------------------------------------------------------------------------
-
- /* (non-Javadoc)
- * @see java.lang.Object#clone()
- */
- @Override
- public TmfCheckpoint clone() {
- TmfCheckpoint clone = null;
- try {
- clone = (TmfCheckpoint) super.clone();
- clone.fContext = (fContext != null) ? fContext.clone() : null;
- clone.fTimestamp = (fTimestamp != null) ? fTimestamp.clone() : null;
- } catch (final CloneNotSupportedException e) {
- }
- return clone;
+ fLocation = other.fLocation;
}
// ------------------------------------------------------------------------
// ITmfCheckpoint
// ------------------------------------------------------------------------
- /* (non-Javadoc)
- * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getTimestamp()
+ /**
+ * @since 2.0
*/
@Override
public ITmfTimestamp getTimestamp() {
return fTimestamp;
}
- /* (non-Javadoc)
- * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getLocation()
- */
- @Override
- public ITmfContext getContext() {
- return fContext;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getLocation()
- */
@Override
public ITmfLocation getLocation() {
- return fContext.getLocation();
+ return fLocation;
}
// ------------------------------------------------------------------------
// Comparable
// ------------------------------------------------------------------------
- /* (non-Javadoc)
- * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#compareTo(org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint)
- *
- * Compares the checkpoints timestamp. If either is null, compares the
- * trace checkpoints locations.
- */
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public int compareTo(final ITmfCheckpoint other) {
- if (fTimestamp == null || other.getTimestamp() == null) {
- final Comparable location1 = getLocation().getLocationData();
- final Comparable location2 = other.getLocation().getLocationData();
- return location1.compareTo(location2);
+ int comp = 0;
+ if ((fTimestamp != null) && (other.getTimestamp() != null)) {
+ comp = fTimestamp.compareTo(other.getTimestamp(), false);
+ if (comp != 0) {
+ return comp;
+ }
+ // compare locations if timestamps are the same
+ }
+
+ if ((fLocation == null) && (other.getLocation() == null)) {
+ return 0;
}
- return fTimestamp.compareTo(other.getTimestamp(), false);
+
+ // treat location of other as null location which is before any location
+ if ((fLocation != null) && (other.getLocation() == null)) {
+ return 1;
+ }
+
+ // treat this as null location which is before any other locations
+ if ((fLocation == null) && (other.getLocation() != null)) {
+ return -1;
+ }
+
+ // compare location
+ final Comparable location1 = getLocation().getLocationInfo();
+ final Comparable location2 = other.getLocation().getLocationInfo();
+ return location1.compareTo(location2);
}
// ------------------------------------------------------------------------
// Object
// ------------------------------------------------------------------------
- /* (non-Javadoc)
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + ((fContext == null) ? 0 : fContext.hashCode());
+ result = prime * result + ((fLocation == null) ? 0 : fLocation.hashCode());
result = prime * result + ((fTimestamp == null) ? 0 : fTimestamp.hashCode());
return result;
}
- /* (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return false;
}
final TmfCheckpoint other = (TmfCheckpoint) obj;
- if (fContext == null) {
- if (other.fContext != null) {
+ if (fLocation == null) {
+ if (other.fLocation != null) {
return false;
}
- } else if (!fContext.equals(other.fContext)) {
+ } else if (!fLocation.equals(other.fLocation)) {
return false;
}
if (fTimestamp == null) {
return true;
}
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
@Override
@SuppressWarnings("nls")
public String toString() {
- return "TmfCheckpoint [fContext=" + fContext + ", fTimestamp=" + fTimestamp + "]";
+ return getClass().getSimpleName() + " [fLocation=" + fLocation + ", fTimestamp=" + fTimestamp + "]";
}
}