Yet even better histogram view
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / views / histogram / HistogramContent.java
CommitLineData
6e512b93
ASL
1package org.eclipse.linuxtools.lttng.ui.views.histogram;
2
b59134e1 3import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
6e512b93 4
6e512b93
ASL
5public class HistogramContent {
6
ecfd1d41 7 final static double DEFAULT_DIFFERENCE_TO_AVERAGE = 100.0;
b59134e1
WB
8
9 private Long startTime = 0L;
10 private Long endTime = 0L;
11
12 private Long intervalTime = 0L;
13 private Double heightFactor = 0.0;
14 private Long heighestEventCount = 0L;
15 private Integer maxHeight = 0;
6cf16d22 16 private Double maxDifferenceToAverage = DEFAULT_DIFFERENCE_TO_AVERAGE;
ecfd1d41 17
b59134e1
WB
18 private Integer readyUpToPosition = 0;
19 private Integer fullWindowSize = 0;
20
21 private Integer averageNumberOfEvents = 0;
6e512b93 22
b59134e1
WB
23 private HistogramElement[] elementTable;
24
25 public HistogramContent(int tableSize, int newWindowsSize, int newMaxHeight) {
ecfd1d41
WB
26 this(tableSize, newWindowsSize, newMaxHeight, DEFAULT_DIFFERENCE_TO_AVERAGE);
27 }
28
29 public HistogramContent(int tableSize, int newWindowsSize, int newMaxHeight, double newDiffToAverage) {
b59134e1 30 fullWindowSize = newWindowsSize;
6e512b93 31 maxHeight = newMaxHeight;
ecfd1d41 32 maxDifferenceToAverage = newDiffToAverage;
6e512b93 33
6e512b93
ASL
34 createNewTable(tableSize);
35 }
36
6e512b93
ASL
37 public void createNewTable(int newTableSize) {
38 elementTable = new HistogramElement[newTableSize];
39
40 for ( int x=0; x<elementTable.length; x++) {
41 elementTable[x] = new HistogramElement();
b59134e1 42 elementTable[x].position = x;
6e512b93
ASL
43 }
44 }
45
b59134e1 46 public void resetContentData() {
6e512b93
ASL
47 startTime = 0L;
48 endTime = 0L;
49
b59134e1
WB
50 intervalTime = 0L;
51 heightFactor = 0.0;
6e512b93
ASL
52 heighestEventCount = 0L;
53
54 readyUpToPosition = 0;
55 }
56
ecfd1d41 57 public void resetTable() {
6e512b93 58 for ( int x=0; x<elementTable.length; x++) {
b59134e1 59 elementTable[x].position = x;
ecfd1d41 60 elementTable[x].firstIntervalTimestamp = startTime + (x*intervalTime);
6e512b93
ASL
61 elementTable[x].intervalNbEvents = 0L;
62 elementTable[x].intervalHeight = 0;
63 }
64 }
65
ecfd1d41
WB
66 public void printContentInfo() {
67 System.out.println("startTime : " + startTime);
68 System.out.println("endTime : " + endTime );
69 System.out.println();
70 System.out.println("intervalTime : " + intervalTime);
71 System.out.println("heightFactor : " + heightFactor);
72 System.out.println("heighestEventCount : " + heighestEventCount);
73 System.out.println();
74 System.out.println("readyUpToPosition : " + readyUpToPosition);
75 }
76
b59134e1 77 public void printTable() {
6e512b93 78 for ( int x=0; x<elementTable.length; x++) {
b59134e1 79 System.out.println("X:" + x + " -> " + elementTable[x].intervalNbEvents + ":" + elementTable[x].intervalHeight);
6e512b93
ASL
80 }
81 }
82
b59134e1
WB
83 public void recalculateEventHeight() {
84
ecfd1d41
WB
85 if ( getHeighestEventCount() > (maxDifferenceToAverage * averageNumberOfEvents) ) {
86 heightFactor = (double)maxHeight/( maxDifferenceToAverage * (double)averageNumberOfEvents);
6e512b93 87 }
b59134e1
WB
88 else {
89 heightFactor = (double)maxHeight/(double)getHeighestEventCount();
90 }
91
6e512b93 92 for ( int x=0; x<elementTable.length; x++) {
b59134e1 93 elementTable[x].intervalHeight = (int)(elementTable[x].intervalNbEvents * heightFactor);
6e512b93
ASL
94 }
95 }
96
b59134e1
WB
97 /*
98 // *** VERIFY ***
99 // We don't need to expose the table, do we ?
100 public HistogramElement[] getElementTable() {
101 return elementTable;
6e512b93 102 }
b59134e1 103 */
6e512b93 104
b59134e1
WB
105 public int getNbElement() {
106 return elementTable.length;
6e512b93
ASL
107 }
108
6e512b93 109 public HistogramElement getElementByIndex(int index) {
b59134e1 110
6e512b93
ASL
111 HistogramElement returnedElement = null;
112
113 if ( (index >= 0) && (index < elementTable.length) ) {
114 returnedElement = elementTable[index];
115 }
116
117 return returnedElement;
118 }
119
b59134e1
WB
120
121 public HistogramElement getElementFromXPosition(int position) {
122
123 HistogramElement returnedElement = null;
6e512b93 124
b59134e1 125 int index = (int)( ((double)elementTable.length)*((double)position/(double)fullWindowSize) );
6e512b93 126
6e512b93
ASL
127 if ( index < 0) {
128 index = 0;
129 }
ecfd1d41
WB
130 else if ( index >= elementTable.length ) {
131 index = (elementTable.length -1);
132 }
b59134e1
WB
133
134 returnedElement = elementTable[index];
135
136 return returnedElement;
6e512b93
ASL
137 }
138
b59134e1
WB
139 public HistogramElement getElementFromTimestamp(TmfTimestamp timestamp) {
140
141 HistogramElement returnedElement = null;
142
143 int index = (int)( (timestamp.getValue() - startTime)/intervalTime );
6e512b93 144
6e512b93
ASL
145 if ( index < 0) {
146 index = 0;
147 }
6e512b93 148
b59134e1
WB
149 returnedElement = elementTable[index];
150
151 return returnedElement;
6e512b93
ASL
152 }
153
6e512b93 154
ecfd1d41 155 public HistogramElement getClosestElementByElementAndTimeInterval(HistogramElement targetElement, Long intervalToElement) {
6e512b93 156
b59134e1 157 HistogramElement returnedElement = null;
6e512b93 158
ecfd1d41 159 if ( (targetElement != null) && (intervalTime > 0) ) {
b59134e1
WB
160 Long elementTime = targetElement.position * intervalTime;
161
162 elementTime = elementTime + intervalToElement;
163
164 int newPos = (int)(elementTime / intervalTime );
165
166 if ( newPos < 0 ) {
167 newPos = 0;
168 }
169
170 if ( newPos >= elementTable.length ) {
171 newPos = elementTable.length - 1;
172 }
173
b59134e1
WB
174 returnedElement = elementTable[newPos];
175 }
6e512b93 176
b59134e1 177 return returnedElement;
6e512b93
ASL
178 }
179
ecfd1d41
WB
180 public int getXPositionByPositionAndTimeInterval(int targetPosition, Long intervalToElement) {
181 int returnedValue = 0;
182
183 HistogramElement targetElement = getElementFromXPosition(targetPosition);
184
185 if ( targetElement != null ) {
186 HistogramElement newElement = getClosestElementByElementAndTimeInterval(targetElement, intervalToElement);
187
188 if ( newElement != null ) {
189 returnedValue = getXPositionFromElement(newElement);
190 }
191 }
192
193 return returnedValue;
194 }
195
196
b59134e1
WB
197 public int getXPositionFromElement(HistogramElement targetElement) {
198
199 int returnedPosition = (int)( ((double)targetElement.position / (double)elementTable.length)*(double)fullWindowSize );
6e512b93 200
b59134e1 201 return returnedPosition;
6e512b93
ASL
202 }
203
6e512b93 204
6e512b93
ASL
205 public int getAverageNumberOfEvents() {
206 return averageNumberOfEvents;
207 }
208
6e512b93
ASL
209 public void setAverageNumberOfEvents(int newAverageNumberOfEvents) {
210 this.averageNumberOfEvents = newAverageNumberOfEvents;
211 }
212
b59134e1 213 public Long getStartTime() {
6e512b93
ASL
214 return startTime;
215 }
216
b59134e1 217 public void setStartTime(Long newStartTime) {
6e512b93
ASL
218 this.startTime = newStartTime;
219 }
220
221
b59134e1 222 public Long getEndTime() {
6e512b93
ASL
223 return endTime;
224 }
b59134e1
WB
225
226 public void setEndTime(Long newEndTime) {
6e512b93
ASL
227 this.endTime = newEndTime;
228 }
229
6cf16d22
WB
230 public Long getFullTraceInterval() {
231 return ( endTime - startTime );
232 }
6e512b93 233
b59134e1 234 public Double getHeightFactor() {
6e512b93
ASL
235 return heightFactor;
236 }
237
b59134e1
WB
238 public void setHeightFactor(Double newheightFactor) {
239 this.heightFactor = newheightFactor;
6e512b93
ASL
240 }
241
6e512b93 242
b59134e1 243 public Long getHeighestEventCount() {
6e512b93
ASL
244 return heighestEventCount;
245 }
246
b59134e1
WB
247 public void setHeighestEventCount(Long newheighestEventCount) {
248 this.heighestEventCount = newheighestEventCount;
6e512b93
ASL
249 }
250
b59134e1 251 public Integer getMaxHeight() {
6e512b93
ASL
252 return maxHeight;
253 }
b59134e1
WB
254
255 public void setMaxHeight(Integer maxHeight) {
6e512b93
ASL
256 this.maxHeight = maxHeight;
257 }
258
ecfd1d41
WB
259
260 public Double getMaxDifferenceToAverage() {
261 return maxDifferenceToAverage;
262 }
263
264 public void setMaxDifferenceToAverage(Double newDiffToAverage) {
265 maxDifferenceToAverage = newDiffToAverage;
266 }
267
268
6e512b93
ASL
269 public int getReadyUpToPosition() {
270 return readyUpToPosition;
271 }
b59134e1 272
6e512b93
ASL
273 public void setReadyUpToPosition(int newReadyUpToPosition) {
274 this.readyUpToPosition = newReadyUpToPosition;
275 }
276
b59134e1
WB
277
278 public Long getIntervalTime() {
279 return intervalTime;
6e512b93
ASL
280 }
281
b59134e1
WB
282 public void setIntervalTime(Long newInterval) {
283 this.intervalTime = newInterval;
6e512b93
ASL
284 }
285
286}
This page took 0.041342 seconds and 5 git commands to generate.