Replace location by context in checkpoint indexer
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core / src / org / eclipse / linuxtools / tmf / core / trace / TmfCheckpoint.java
1 /*******************************************************************************
2 * Copyright (c) 2009, 2012 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
11 * Francois Chouinard - Updated as per TMF Trace Model 1.0
12 ******************************************************************************/
13
14 package org.eclipse.linuxtools.tmf.core.trace;
15
16 import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
17
18 /**
19 * A basic implementation of ITmfCheckpoint. It simply maps an event timestamp
20 * to a generic location.
21 *
22 * @version 1.0
23 * @author Francois Chouinard
24 *
25 * @see ITmfLocation
26 * @see ITmfTimestamp
27 */
28 public class TmfCheckpoint implements ITmfCheckpoint, Cloneable {
29
30 // ------------------------------------------------------------------------
31 // Attributes
32 // ------------------------------------------------------------------------
33
34 // The checkpoint context
35 private ITmfContext fContext;
36
37 // The checkpoint timestamp
38 private ITmfTimestamp fTimestamp;
39
40 // ------------------------------------------------------------------------
41 // Constructors
42 // ------------------------------------------------------------------------
43
44 /**
45 * Default constructor
46 */
47 @SuppressWarnings("unused")
48 private TmfCheckpoint() {
49 }
50
51 /**
52 * Full constructor
53 *
54 * @param timestamp the checkpoint timestamp
55 * @param location the corresponding trace location
56 */
57 public TmfCheckpoint(final ITmfTimestamp timestamp, final ITmfContext context) {
58 fTimestamp = timestamp;
59 fContext = context;
60 }
61
62 /**
63 * Copy constructor
64 *
65 * @param other the other checkpoint
66 */
67 public TmfCheckpoint(final TmfCheckpoint other) {
68 if (other == null) {
69 throw new IllegalArgumentException();
70 }
71 fTimestamp = other.fTimestamp;
72 fContext = other.fContext;
73 }
74
75 // ------------------------------------------------------------------------
76 // Cloneable
77 // ------------------------------------------------------------------------
78
79 /* (non-Javadoc)
80 * @see java.lang.Object#clone()
81 */
82 @Override
83 public TmfCheckpoint clone() {
84 TmfCheckpoint clone = null;
85 try {
86 clone = (TmfCheckpoint) super.clone();
87 clone.fContext = (fContext != null) ? fContext.clone() : null;
88 clone.fTimestamp = (fTimestamp != null) ? fTimestamp.clone() : null;
89 } catch (final CloneNotSupportedException e) {
90 }
91 return clone;
92 }
93
94 // ------------------------------------------------------------------------
95 // ITmfCheckpoint
96 // ------------------------------------------------------------------------
97
98 /* (non-Javadoc)
99 * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getTimestamp()
100 */
101 @Override
102 public ITmfTimestamp getTimestamp() {
103 return fTimestamp;
104 }
105
106 /* (non-Javadoc)
107 * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getLocation()
108 */
109 @Override
110 public ITmfContext getContext() {
111 return fContext;
112 }
113
114 /* (non-Javadoc)
115 * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#getLocation()
116 */
117 public ITmfLocation<? extends Comparable<?>> getLocation() {
118 return fContext.getLocation();
119 }
120
121 // ------------------------------------------------------------------------
122 // Comparable
123 // ------------------------------------------------------------------------
124
125 /* (non-Javadoc)
126 * @see org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint#compareTo(org.eclipse.linuxtools.tmf.core.trace.ITmfCheckpoint)
127 *
128 * Compares the checkpoints timestamp. If either is null, compares the
129 * trace checkpoints locations.
130 */
131 @Override
132 @SuppressWarnings({ "unchecked", "rawtypes" })
133 public int compareTo(final ITmfCheckpoint other) {
134 if (fTimestamp == null || other.getTimestamp() == null) {
135 final Comparable location1 = getLocation().getLocation();
136 final Comparable location2 = other.getLocation().getLocation();
137 return location1.compareTo(location2);
138 }
139 return fTimestamp.compareTo(other.getTimestamp(), false);
140 }
141
142 // ------------------------------------------------------------------------
143 // Object
144 // ------------------------------------------------------------------------
145
146 /* (non-Javadoc)
147 * @see java.lang.Object#hashCode()
148 */
149 @Override
150 public int hashCode() {
151 final int prime = 31;
152 int result = 1;
153 result = prime * result + ((fContext == null) ? 0 : fContext.hashCode());
154 result = prime * result + ((fTimestamp == null) ? 0 : fTimestamp.hashCode());
155 return result;
156 }
157
158 /* (non-Javadoc)
159 * @see java.lang.Object#equals(java.lang.Object)
160 */
161 @Override
162 public boolean equals(final Object obj) {
163 if (this == obj) {
164 return true;
165 }
166 if (obj == null) {
167 return false;
168 }
169 if (!(obj instanceof TmfCheckpoint)) {
170 return false;
171 }
172 final TmfCheckpoint other = (TmfCheckpoint) obj;
173 if (fContext == null) {
174 if (other.fContext != null) {
175 return false;
176 }
177 } else if (!fContext.equals(other.fContext)) {
178 return false;
179 }
180 if (fTimestamp == null) {
181 if (other.fTimestamp != null) {
182 return false;
183 }
184 } else if (!fTimestamp.equals(other.fTimestamp)) {
185 return false;
186 }
187 return true;
188 }
189
190 /* (non-Javadoc)
191 * @see java.lang.Object#toString()
192 */
193 @Override
194 @SuppressWarnings("nls")
195 public String toString() {
196 return "TmfCheckpoint [fContext=" + fContext + ", fTimestamp=" + fTimestamp + "]";
197 }
198
199 }
This page took 0.035574 seconds and 5 git commands to generate.