1 /*******************************************************************************
2 * Copyright (c) 2013, 2014 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 * Marc-Andre Laperle - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.tracecompass
.tmf
.core
.trace
.indexer
;
17 import org
.eclipse
.tracecompass
.internal
.tmf
.core
.trace
.indexer
.FlatArray
;
18 import org
.eclipse
.tracecompass
.tmf
.core
.timestamp
.TmfTimeRange
;
19 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfTrace
;
20 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.TmfTraceManager
;
21 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.indexer
.checkpoint
.ITmfCheckpoint
;
22 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.indexer
.checkpoint
.ITmfCheckpointIndex
;
25 * <p>A checkpoint index that uses a FlatArray to store and search checkpoints by
26 * time stamps and by checkpoint rank.</p>
28 * <p>Note: This index alone will not work for
29 * traces that have events with time stamps that are out of order.</p>
31 * @author Marc-Andre Laperle
33 public class TmfFlatArrayTraceIndex
implements ITmfCheckpointIndex
{
35 private final FlatArray fCheckpoints
;
38 * Creates an index for the given trace
40 * @param trace the trace
42 public TmfFlatArrayTraceIndex(ITmfTrace trace
) {
43 fCheckpoints
= new FlatArray(getIndexFile(trace
, FlatArray
.INDEX_FILE_NAME
), (ITmfPersistentlyIndexable
)trace
);
46 private static File
getIndexFile(ITmfTrace trace
, String fileName
) {
47 String directory
= TmfTraceManager
.getSupplementaryFileDir(trace
);
48 return new File(directory
+ fileName
);
52 public void dispose() {
53 fCheckpoints
.dispose();
57 public void insert(ITmfCheckpoint checkpoint
) {
58 fCheckpoints
.insert(checkpoint
);
62 public ITmfCheckpoint
get(long checkpoint
) {
63 return fCheckpoints
.get(checkpoint
);
67 public long binarySearch(ITmfCheckpoint checkpoint
) {
68 return fCheckpoints
.binarySearch(checkpoint
);
72 public boolean isEmpty() {
78 return fCheckpoints
.size();
82 public boolean isCreatedFromScratch() {
83 return fCheckpoints
.isCreatedFromScratch();
87 public void setTimeRange(TmfTimeRange timeRange
) {
88 fCheckpoints
.setTimeRange(timeRange
);
92 public void setNbEvents(long nbEvents
) {
93 fCheckpoints
.setNbEvents(nbEvents
);
97 public TmfTimeRange
getTimeRange() {
98 return fCheckpoints
.getTimeRange();
102 public long getNbEvents() {
103 return fCheckpoints
.getNbEvents();
107 public void setIndexComplete() {
108 fCheckpoints
.setIndexComplete();