lttng: Support live updating of Control Flow view and Resources view
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.kernel.ui / src / org / eclipse / linuxtools / internal / lttng2 / kernel / ui / views / resources / ResourcesEntry.java
1 /*******************************************************************************
2 * Copyright (c) 2012, 2013 Ericsson, École Polytechnique de Montréal
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 * Patrick Tasse - Initial API and implementation
11 * Geneviève Bastien - Move code to provide base classes for time graph view
12 *******************************************************************************/
13
14 package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.resources;
15
16 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
17 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.TimeGraphEntry;
18
19 /**
20 * An entry, or row, in the resource view
21 *
22 * @author Patrick Tasse
23 */
24 public class ResourcesEntry extends TimeGraphEntry {
25
26 /** Type of resource */
27 public static enum Type {
28 /** Null resources (filler rows, etc.) */
29 NULL,
30 /** Entries for CPUs */
31 CPU,
32 /** Entries for IRQs */
33 IRQ,
34 /** Entries for Soft IRQ */
35 SOFT_IRQ
36 }
37
38 private final int fId;
39 private final ITmfTrace fTrace;
40 private final Type fType;
41 private final int fQuark;
42
43 /**
44 * Constructor
45 *
46 * @param quark
47 * The attribute quark matching the entry
48 * @param trace
49 * The trace on which we are working
50 * @param name
51 * The exec_name of this entry
52 * @param startTime
53 * The start time of this entry lifetime
54 * @param endTime
55 * The end time of this entry
56 * @param type
57 * The type of this entry
58 * @param id
59 * The id of this entry
60 */
61 public ResourcesEntry(int quark, ITmfTrace trace, String name, long startTime, long endTime, Type type, int id) {
62 super(name, startTime, endTime);
63 fId = id;
64 fTrace = trace;
65 fType = type;
66 fQuark = quark;
67 }
68
69 /**
70 * Constructor
71 *
72 * @param trace
73 * The trace on which we are working
74 * @param name
75 * The exec_name of this entry
76 * @param startTime
77 * The start time of this entry lifetime
78 * @param endTime
79 * The end time of this entry
80 * @param id
81 * The id of this entry
82 */
83 public ResourcesEntry(ITmfTrace trace, String name, long startTime, long endTime, int id) {
84 this(-1, trace, name, startTime, endTime, Type.NULL, id);
85 }
86
87 /**
88 * Constructor
89 *
90 * @param quark
91 * The attribute quark matching the entry
92 * @param trace
93 * The trace on which we are working
94 * @param startTime
95 * The start time of this entry lifetime
96 * @param endTime
97 * The end time of this entry
98 * @param type
99 * The type of this entry
100 * @param id
101 * The id of this entry
102 */
103 public ResourcesEntry(int quark, ITmfTrace trace, long startTime, long endTime, Type type, int id) {
104 this(quark, trace, type.toString() + " " + id, startTime, endTime, type, id); //$NON-NLS-1$
105 }
106
107 /**
108 * Get the entry's id
109 *
110 * @return the entry's id
111 */
112 public int getId() {
113 return fId;
114 }
115
116 /**
117 * Get the entry's trace
118 *
119 * @return the entry's trace
120 */
121 public ITmfTrace getTrace() {
122 return fTrace;
123 }
124
125 /**
126 * Get the entry Type of this entry. Uses the inner Type enum.
127 *
128 * @return The entry type
129 */
130 public Type getType() {
131 return fType;
132 }
133
134 /**
135 * Retrieve the attribute quark that's represented by this entry.
136 *
137 * @return The integer quark The attribute quark matching the entry
138 */
139 public int getQuark() {
140 return fQuark;
141 }
142
143 @Override
144 public boolean hasTimeEvents() {
145 if (fType == Type.NULL) {
146 return false;
147 }
148 return true;
149 }
150
151 /**
152 * Add a child to this entry of type ResourcesEntry
153 *
154 * @param entry
155 * The entry to add
156 */
157 public void addChild(ResourcesEntry entry) {
158 int index;
159 for (index = 0; index < getChildren().size(); index++) {
160 ResourcesEntry other = (ResourcesEntry) getChildren().get(index);
161 if (entry.getType().compareTo(other.getType()) < 0) {
162 break;
163 } else if (entry.getType().equals(other.getType())) {
164 if (entry.getId() < other.getId()) {
165 break;
166 }
167 }
168 }
169
170 entry.setParent(this);
171 getChildren().add(index, entry);
172 }
173
174 }
This page took 0.035423 seconds and 5 git commands to generate.