Package org.eclipse.test.performance.ui

Source Code of org.eclipse.test.performance.ui.RawDataTable

/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.test.performance.ui;

import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.eclipse.test.internal.performance.data.Dim;
import org.eclipse.test.internal.performance.results.db.BuildResults;
import org.eclipse.test.internal.performance.results.db.ConfigResults;
import org.eclipse.test.internal.performance.results.db.DB_Results;

/**
* Class used to fill details file of scenario builds data.
* @see ScenarioData
*/
public class RawDataTable {

  private ConfigResults configResults;
  private List buildPrefixes;
  private PrintStream stream;
  private Dim[] dimensions = DB_Results.getResultsDimensions();
  private boolean debug = false;

private RawDataTable(ConfigResults results, PrintStream ps) {
  this.configResults = results;
  this.stream = ps;
}

public RawDataTable(ConfigResults results, List prefixes, PrintStream ps) {
  this(results, ps);
  this.buildPrefixes = prefixes;
}
public RawDataTable(ConfigResults results, String baselinePrefix, PrintStream ps) {
  this(results, ps);
  this.buildPrefixes = new ArrayList();
  this.buildPrefixes.add(baselinePrefix);
}

/**
* Print all build data to the current stream.
*/
public void print(){
  this.stream.print("<table border=\"1\">");
  printSummary();
  printDetails();
  this.stream.print("</table>\n");
}

/*
* Print table columns headers.
*/
private void printColumnHeaders() {
  StringBuffer buffer = new StringBuffer();
  int length = this.dimensions.length;
  for (int i=0; i<length; i++) {
    buffer.append("<td><b>");
    buffer.append(this.dimensions[i].getName());
    buffer.append("</b></td>");
  }
  this.stream.print(buffer.toString());
}

/*
* Print all build results in the table.
*/
private void printDetails() {
  this.stream.print("<tr><td><b>Build ID</b></td>");
  printColumnHeaders();
  this.stream.print("</tr>\n");

  List builds = this.configResults.getBuildsMatchingPrefixes(this.buildPrefixes);
  Collections.reverse(builds);
  int size = builds.size();
  for (int i=0; i<size; i++) {
    BuildResults buildResults = (BuildResults) builds.get(i);
    this.stream.print("<tr><td>");
    this.stream.print(buildResults.getName());
    this.stream.print("</td>");
    int dimLength = this.dimensions.length;
    for (int d=0; d<dimLength; d++) {
      Dim dimension = this.dimensions[d];
      int dim_id = dimension.getId();
      double value = buildResults.getValue(dim_id);
      printDimTitle(dimension.getName());
      String displayValue = dimension.getDisplayValue(value);
      this.stream.print(displayValue);
      if (this.debug) System.out.print("\t"+displayValue);
      this.stream.print("</td>");
    }
    if (this.debug) System.out.println();
    this.stream.print("</tr>\n");
  }
  if (this.debug) System.out.println("\n");
}

/*
* Print summary on top of the table.
*/
private void printSummary() {
  this.stream.print("<tr><td><b>Stats</b></td>");
  printColumnHeaders();
  this.stream.print("</tr>\n");

  int length = this.dimensions.length;
  double[][] dimStats = new double[length][];
  for (int i=0; i<length; i++) {
    dimStats[i] = this.configResults.getStatistics(this.buildPrefixes, this.dimensions[i].getId());
  }

  this.stream.print("<tr><td>#BUILDS SAMPLED</td>");
  for (int i=0; i<length; i++) {
    String dimName = this.dimensions[i].getName();
    printDimTitle(dimName);
    this.stream.print((int)dimStats[i][0]);
    this.stream.print("</td>");
  }
  this.stream.print("</tr>\n");
  this.stream.print("<tr><td>MEAN</td>");
  printRowDoubles(dimStats, 1);
  this.stream.print("</tr>\n");
  this.stream.print("<tr><td>STD DEV</td>");
  printRowDoubles(dimStats, 2);
  this.stream.print("</tr>\n");
  this.stream.print("<tr><td>COEF. VAR</td>");
  printRowDoubles(dimStats, 3);
  this.stream.print("</tr>\n");

  // Blank line
  this.stream.print("<tr>");
  for (int i=0; i<length+1;  i++){
    this.stream.print("<td>&nbsp;</td>");
  }
  this.stream.print("</tr>\n");
}

/*
* Print values in table row.
*/
private void printRowDoubles(double[][] stats, int idx) {
  int length = this.dimensions.length;
  for (int i=0; i<length; i++) {
    double value = stats[i][idx];
    String dimName = this.dimensions[i].getName();
    if (idx == 3) {
      if (value>10 && value<20) {
        this.stream.print("<td bgcolor=\"yellow\" title=\"");
      } else if (value>=20) {
        this.stream.print("<td bgcolor=\"FF9900\" title=\"");
      } else {
        this.stream.print("<td title=\"");
      }
      this.stream.print(dimName);
      this.stream.print("\">");
      this.stream.print(value);
      this.stream.print("%</td>");
    } else {
      printDimTitle(dimName);
      this.stream.print(this.dimensions[i].getDisplayValue(value));
      this.stream.print("</td>");
    }
  }
}

/*
* Print dim title inside value reference.
* TODO (frederic) See if this title is really necessary
*/
private void printDimTitle(String dimName) {
    this.stream.print("<td title=\"");
    this.stream.print(dimName);
    this.stream.print("\">");
}
}
TOP

Related Classes of org.eclipse.test.performance.ui.RawDataTable

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.