1 /*******************************************************************************
2 * Copyright (c) 2009, 2012 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
10 * Francois Chouinard - Initial API and implementation
11 * Francois Chouinard - Updated as per TMF Trace Model 1.0
12 ******************************************************************************/
14 package org
.eclipse
.linuxtools
.tmf
.core
.trace
;
16 import org
.eclipse
.linuxtools
.tmf
.core
.event
.ITmfTimestamp
;
19 * A basic implementation of ITmfCheckpoint. It simply maps an event timestamp
20 * to a generic location.
23 * @author Francois Chouinard
28 public class TmfCheckpoint
implements ITmfCheckpoint
, Cloneable
{
30 // ------------------------------------------------------------------------
32 // ------------------------------------------------------------------------
34 // The checkpoint location
35 private ITmfLocation
<?
extends Comparable
<?
>> fLocation
;
37 // The checkpoint timestamp
38 private ITmfTimestamp fTimestamp
;
40 // ------------------------------------------------------------------------
42 // ------------------------------------------------------------------------
47 @SuppressWarnings("unused")
48 private TmfCheckpoint() {
54 * @param timestamp the checkpoint timestamp
55 * @param location the corresponding trace location
57 public TmfCheckpoint(final ITmfTimestamp timestamp
, final ITmfLocation
<?
extends Comparable
<?
>> location
) {
58 fTimestamp
= timestamp
;
65 * @param other the other checkpoint
67 public TmfCheckpoint(final TmfCheckpoint other
) {
69 throw new IllegalArgumentException();
71 fTimestamp
= other
.fTimestamp
;
72 fLocation
= other
.fLocation
;
75 // ------------------------------------------------------------------------
77 // ------------------------------------------------------------------------
80 * @see java.lang.Object#clone()
83 public TmfCheckpoint
clone() {
84 TmfCheckpoint clone
= null;
86 clone
= (TmfCheckpoint
) super.clone();
87 clone
.fLocation
= (fLocation
!= null) ? fLocation
.clone() : null;
88 clone
.fTimestamp
= (fTimestamp
!= null) ? fTimestamp
.clone() : null;
89 } catch (final CloneNotSupportedException e
) {
94 // ------------------------------------------------------------------------
96 // ------------------------------------------------------------------------
99 * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getTimestamp()
102 public ITmfTimestamp
getTimestamp() {
107 * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getLocation()
110 public ITmfLocation
<?
> getLocation() {
114 // ------------------------------------------------------------------------
116 // ------------------------------------------------------------------------
119 * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#compareTo(org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint)
121 * Compares the checkpoints timestamp. If either is null, compares the
122 * trace checkpoints locations.
125 @SuppressWarnings({ "unchecked", "rawtypes" })
126 public int compareTo(final ITmfCheckpoint other
) {
127 if (fTimestamp
== null || other
.getTimestamp() == null) {
128 final Comparable location1
= fLocation
.getLocation();
129 final Comparable location2
= other
.getLocation().getLocation();
130 return location1
.compareTo(location2
);
132 return fTimestamp
.compareTo(other
.getTimestamp(), false);
135 // ------------------------------------------------------------------------
137 // ------------------------------------------------------------------------
140 * @see java.lang.Object#hashCode()
143 public int hashCode() {
144 final int prime
= 31;
146 result
= prime
* result
+ ((fLocation
== null) ?
0 : fLocation
.hashCode());
147 result
= prime
* result
+ ((fTimestamp
== null) ?
0 : fTimestamp
.hashCode());
152 * @see java.lang.Object#equals(java.lang.Object)
155 public boolean equals(final Object obj
) {
162 if (!(obj
instanceof TmfCheckpoint
)) {
165 final TmfCheckpoint other
= (TmfCheckpoint
) obj
;
166 if (fLocation
== null) {
167 if (other
.fLocation
!= null) {
170 } else if (!fLocation
.equals(other
.fLocation
)) {
173 if (fTimestamp
== null) {
174 if (other
.fTimestamp
!= null) {
177 } else if (!fTimestamp
.equals(other
.fTimestamp
)) {
184 * @see java.lang.Object#toString()
187 @SuppressWarnings("nls")
188 public String
toString() {
189 return "TmfCheckpoint [fLocation=" + fLocation
+ ", fTimestamp=" + fTimestamp
+ "]";