1
/*******************************************************************************
2
* Copyright (c) 2006 IBM Corporation.
3
* All rights reserved. This program and the accompanying materials
4
* are made available under the terms of the Eclipse Public License v1.0
5
* which accompanies this distribution, and is available at
6
* http://www.eclipse.org/legal/epl-v10.html
9
* IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse
10
*******************************************************************************/
12
package org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.adapters;
14
import org.eclipse.linuxtools.internal.systemtap.ui.graphingapi.nonui.Localization;
15
import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.datasets.IBlockDataSet;
16
import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.datasets.IDataSet;
18
public class BlockAdapter implements IAdapter {
19
public BlockAdapter(IBlockDataSet data, int xSeries, int[] ySeries) {
21
this.xSeries = xSeries;
22
this.ySeries = ySeries;
25
public Number getXMax() {
26
return getXMax(0, getRecordCount());
29
public Number getXMax(int start, int end) {
30
return getSeriesMax(xSeries, start, end);
33
public Number getYMax() {
34
return getYMax(0, getRecordCount());
37
public Number getYMax(int start, int end) {
38
Number max = new Double(Double.MIN_VALUE);
40
for(int i=0; i<ySeries.length; i++) {
41
a = getSeriesMax(ySeries[i], start, end);
42
max = (max.doubleValue()) > a.doubleValue() ? max : a;
47
public Number getYSeriesMax(int y) {
48
return getYSeriesMax(y, 0, getRecordCount());
51
public Number getYSeriesMax(int y, int start, int end) {
52
return getSeriesMax(ySeries[y], start, end);
55
public Number getSeriesMax(int series) {
56
return getSeriesMax(series, 0, getRecordCount());
59
public Number getSeriesMax(int series, int start, int end) {
60
if(start < 0 || end > data.getRowCount() || start > end)
63
Number max = new Double(Double.NEGATIVE_INFINITY);
66
Object[] dataColumn = data.getColumn(series, start, end);
67
for(int i=0; i<dataColumn.length; i++) {
69
cur = new Double(Double.parseDouble(dataColumn[i].toString()));
70
if(max.doubleValue() < cur.doubleValue())
72
} catch (NumberFormatException e) {}
77
public Number getXMin() {
78
return getXMin(0, getRecordCount());
81
public Number getXMin(int start, int end) {
82
return getSeriesMin(xSeries, start, end);
85
public Number getYMin() {
86
return getYMin(0, getRecordCount());
89
public Number getYMin(int start, int end) {
90
Number min = new Double(Double.MIN_VALUE);
92
for(int i=0; i<ySeries.length; i++) {
93
a = getSeriesMin(ySeries[i], start, end);
94
min = (min.doubleValue()) < a.doubleValue() ? min : a;
99
public Number getYSeriesMin(int y) {
100
return getYSeriesMin(y, 0, getRecordCount());
103
public Number getYSeriesMin(int y, int start, int end) {
104
return getSeriesMin(ySeries[y], start, end);
107
public Number getSeriesMin(int series) {
108
return getSeriesMin(series, 0, getRecordCount());
111
public Number getSeriesMin(int series, int start, int end) {
112
if(start < 0 || end > data.getRowCount() || start > end)
115
Number min = new Double(Double.POSITIVE_INFINITY);
118
Object[] dataColumn = data.getColumn(series, start, end);
119
for(int i=0; i<dataColumn.length; i++) {
121
cur = new Double(Double.parseDouble(dataColumn[i].toString()));
122
if(min.doubleValue() > cur.doubleValue())
124
} catch (NumberFormatException e) {}
129
public String[] getLabels() {
130
String[] labels = data.getTitles();
132
String[] labels2 = new String[ySeries.length + 1];
133
labels2[0] = (IDataSet.COL_ROW_NUM == xSeries) ? Localization.getString("BlockAdapter.RowNum") : labels[xSeries];
135
for(int i=0; i<ySeries.length; i++)
136
labels2[i+1] = labels[ySeries[i]];
141
public int getSeriesCount() {
142
return ySeries.length;
145
public int getRecordCount() {
146
return data.getRowCount();
149
public Object[][] getData() {
150
return getData(0, getRecordCount());
154
public Object[][] getData(int start, int end) {
155
Object[][] o = new Object[Math.min(end-start,getRecordCount())][ySeries.length+1];
158
for(int j,i=0; i<o.length; i++) {
159
row = data.getRow(i+start);
160
o[i][0] = (IDataSet.COL_ROW_NUM == xSeries) ? new Integer(i) : row[xSeries];
162
for(j=0; j<ySeries.length; j++)
163
o[i][j+1] = row[ySeries[j]];
169
private IBlockDataSet data;
171
private int[] ySeries;