1 /*******************************************************************************
2 * Copyright (c) 2013 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
.linuxtools
.tmf
.core
.trace
.indexer
;
17 import org
.eclipse
.linuxtools
.internal
.tmf
.core
.trace
.indexer
.FlatArray
;
18 import org
.eclipse
.linuxtools
.tmf
.core
.timestamp
.TmfTimeRange
;
19 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
20 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.TmfTraceManager
;
21 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.indexer
.checkpoint
.ITmfCheckpoint
;
22 import org
.eclipse
.linuxtools
.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>
32 * @author Marc-Andre Laperle
34 public class TmfFlatArrayTraceIndex
implements ITmfCheckpointIndex
{
36 private final FlatArray fCheckpoints
;
39 * Creates an index for the given trace
41 * @param trace the trace
43 public TmfFlatArrayTraceIndex(ITmfTrace trace
) {
44 fCheckpoints
= new FlatArray(getIndexFile(trace
, FlatArray
.INDEX_FILE_NAME
), (ITmfPersistentlyIndexable
)trace
);
47 private static File
getIndexFile(ITmfTrace trace
, String fileName
) {
48 String directory
= TmfTraceManager
.getSupplementaryFileDir(trace
);
49 return new File(directory
+ fileName
);
53 public void dispose() {
54 fCheckpoints
.dispose();
58 public void insert(ITmfCheckpoint checkpoint
) {
59 fCheckpoints
.insert(checkpoint
);
63 public ITmfCheckpoint
get(long checkpoint
) {
64 return fCheckpoints
.get(checkpoint
);
68 public long binarySearch(ITmfCheckpoint checkpoint
) {
69 return fCheckpoints
.binarySearch(checkpoint
);
73 public boolean isEmpty() {
79 return fCheckpoints
.size();
83 public boolean isCreatedFromScratch() {
84 return fCheckpoints
.isCreatedFromScratch();
88 public void setTimeRange(TmfTimeRange timeRange
) {
89 fCheckpoints
.setTimeRange(timeRange
);
93 public void setNbEvents(long nbEvents
) {
94 fCheckpoints
.setNbEvents(nbEvents
);
98 public TmfTimeRange
getTimeRange() {
99 return fCheckpoints
.getTimeRange();
103 public long getNbEvents() {
104 return fCheckpoints
.getNbEvents();
108 public void setIndexComplete() {
109 fCheckpoints
.setIndexComplete();