7013b37a834ae5014a9bedcc00801a63c44cce5f
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.core / src / org / eclipse / tracecompass / tmf / core / trace / indexer / TmfFlatArrayTraceIndex.java
1 /*******************************************************************************
2 * Copyright (c) 2013, 2014 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 * Marc-Andre Laperle - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.tracecompass.tmf.core.trace.indexer;
14
15 import java.io.File;
16
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;
23
24 /**
25 * <p>A checkpoint index that uses a FlatArray to store and search checkpoints by
26 * time stamps and by checkpoint rank.</p>
27 *
28 * <p>Note: This index alone will not work for
29 * traces that have events with time stamps that are out of order.</p>
30 *
31 * @author Marc-Andre Laperle
32 */
33 public class TmfFlatArrayTraceIndex implements ITmfCheckpointIndex {
34
35 private final FlatArray fCheckpoints;
36
37 /**
38 * Creates an index for the given trace
39 *
40 * @param trace the trace
41 */
42 public TmfFlatArrayTraceIndex(ITmfTrace trace) {
43 fCheckpoints = new FlatArray(getIndexFile(trace, FlatArray.INDEX_FILE_NAME), (ITmfPersistentlyIndexable)trace);
44 }
45
46 private static File getIndexFile(ITmfTrace trace, String fileName) {
47 String directory = TmfTraceManager.getSupplementaryFileDir(trace);
48 return new File(directory + fileName);
49 }
50
51 @Override
52 public void dispose() {
53 fCheckpoints.dispose();
54 }
55
56 @Override
57 public void insert(ITmfCheckpoint checkpoint) {
58 fCheckpoints.insert(checkpoint);
59 }
60
61 @Override
62 public ITmfCheckpoint get(long checkpoint) {
63 return fCheckpoints.get(checkpoint);
64 }
65
66 @Override
67 public long binarySearch(ITmfCheckpoint checkpoint) {
68 return fCheckpoints.binarySearch(checkpoint);
69 }
70
71 @Override
72 public boolean isEmpty() {
73 return size() == 0;
74 }
75
76 @Override
77 public int size() {
78 return fCheckpoints.size();
79 }
80
81 @Override
82 public boolean isCreatedFromScratch() {
83 return fCheckpoints.isCreatedFromScratch();
84 }
85
86 @Override
87 public void setTimeRange(TmfTimeRange timeRange) {
88 fCheckpoints.setTimeRange(timeRange);
89 }
90
91 @Override
92 public void setNbEvents(long nbEvents) {
93 fCheckpoints.setNbEvents(nbEvents);
94 }
95
96 @Override
97 public TmfTimeRange getTimeRange() {
98 return fCheckpoints.getTimeRange();
99 }
100
101 @Override
102 public long getNbEvents() {
103 return fCheckpoints.getNbEvents();
104 }
105
106 @Override
107 public void setIndexComplete() {
108 fCheckpoints.setIndexComplete();
109 }
110
111 }
This page took 0.038196 seconds and 4 git commands to generate.