2af87456de631cfbbef83507cdb2a7df040a3fc5
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng / src / org / eclipse / linuxtools / lttng / state / experiment / StateExperimentManager.java
1 /*******************************************************************************
2 * Copyright (c) 2009 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 * Alvaro Sanchez-Leon (alvsan09@gmail.com) - Initial API and implementation
11 *******************************************************************************/
12 package org.eclipse.linuxtools.lttng.state.experiment;
13
14 import java.util.Collection;
15 import java.util.HashMap;
16 import java.util.Map;
17
18 import org.eclipse.linuxtools.lttng.state.IStateDataRequestListener;
19 import org.eclipse.linuxtools.lttng.state.StateManager;
20 import org.eclipse.linuxtools.tmf.component.TmfComponent;
21 import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
22 import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;
23 import org.eclipse.linuxtools.tmf.trace.TmfExperiment;
24 import org.eclipse.linuxtools.tmf.trace.TmfExperimentSelectedSignal;
25
26 /**
27 * @author alvaro
28 *
29 */
30 public class StateExperimentManager extends TmfComponent {
31
32 // ========================================================================
33 // Data
34 // =======================================================================
35
36 private final Map<String, StateManager> managersByID = new HashMap<String, StateManager>();
37 private TmfExperiment fExperiment = null; // one experiment supported
38
39 // ========================================================================
40 // Constructors
41 // =======================================================================
42
43 /**
44 * package level constructor, creation from factory
45 */
46 StateExperimentManager() {
47 super();
48 }
49
50 // ========================================================================
51 // Methods
52 // =======================================================================
53
54 /**
55 * Return the Map of unique id to Manager instance
56 *
57 * @return
58 */
59 public Map<String, StateManager> getManagersByID() {
60 return managersByID;
61 }
62
63 /**
64 * Read all available traces from the nearest checkpoint from start position
65 * to the end of a specified time range
66 *
67 * @param trange
68 * @param obs
69 * @param transactionID
70 * @param display
71 */
72 public void readExperimentTimeWindow(TmfTimeRange trange,
73 String transactionID, IStateDataRequestListener listener) {
74 Collection<StateManager> mamangers = managersByID.values();
75 for (StateManager manager : mamangers) {
76 manager.executeDataRequest(trange, transactionID, listener);
77 }
78 }
79
80 public void readExperiment(String transactionID,
81 IStateDataRequestListener listener) {
82 // Need someone to listen to the updates as well as an fExperiment
83 // loaded.
84 if (listener != null && fExperiment != null) {
85 TmfTimeRange trange = fExperiment.getTimeRange();
86 String experimentId = fExperiment.getExperimentId();
87
88 // FIXME: there should be an id field available at the trace level
89 // to be fixed with the support of multiple files.
90 // We also need to iterate over the traces in the Experiment and
91 // execute a data Request on each of them
92 // This is also on hold till the request can be performed at a trace
93 // level.
94 // ITmfTrace[] fTraces = fExperiment.getTraces();
95 // for (int i=0; i < fTraces.length; i++) {
96 StateManager manager = StateManagerFactory.getManager(experimentId);
97 manager.executeDataRequest(trange, transactionID, listener);
98 // }
99 }
100 }
101
102 /*
103 * (non-Javadoc)
104 *
105 * @see
106 * org.eclipse.linuxtools.tmf.eventlog.ITmfEventLogEventListener#handleEvent
107 * (org.eclipse.linuxtools.tmf.eventlog.ITmfEventLogEvent)
108 */
109 @TmfSignalHandler
110 public void experimentSelected(TmfExperimentSelectedSignal signal) {
111 // TmfExperiment experiment = signal.getExperiment();
112 // ITmfTrace[] traces = experiment.getTraces();
113 // for (ITmfTrace trace : traces) {
114 //
115 // }
116 if (signal != null) {
117 fExperiment = signal.getExperiment();
118 traceSelected(fExperiment);
119 }
120 }
121
122 /**
123 * A new trace log is opened, notification received from the framework
124 * Notify the new log selection to the state handling manager
125 *
126 * @param experiment
127 */
128 private void traceSelected(TmfExperiment experiment) {
129 // TODO: Re-factor when the experiment provides the list of traces per
130 // traceId, as well as when the request can be specified at the trace
131 // level
132 // For the moment it does work for only one trace per experiment.
133 String experimentId = experiment.getExperimentId();
134 StateManager manager = StateManagerFactory.getManager(experimentId);
135 manager.setTraceSelection(experiment);
136 }
137
138 /**
139 * @return
140 */
141 public TmfTimeRange getExperimentTimeRange() {
142 TmfTimeRange timeRangeResult = null;
143 if (fExperiment != null) {
144 timeRangeResult = fExperiment.getTimeRange();
145 }
146 return timeRangeResult;
147 }
148
149 }
This page took 0.033211 seconds and 4 git commands to generate.