All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.grinder.console.swingui.CumulativeStatisticsTableModel Maven / Gradle / Ivy

// Copyright (C) 2001 - 2010 Philip Aston
// All rights reserved.
//
// This file is part of The Grinder software distribution. Refer to
// the file LICENSE which is part of The Grinder distribution for
// licensing details. The Grinder distribution is available on the
// Internet at http://grinder.sourceforge.net/
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGE.

package net.grinder.console.swingui;

import java.awt.Color;
import java.io.IOException;
import java.io.Writer;

import net.grinder.console.common.Resources;
import net.grinder.console.model.SampleModel;
import net.grinder.console.model.SampleModelViews;
import net.grinder.statistics.StatisticsSet;


/**
 * Table model for cumulative statistics table.
 *
 * @author Philip Aston
 */
final class CumulativeStatisticsTableModel extends DynamicStatisticsTableModel {

  private boolean m_includeTotals = true;
  private final String m_totalString;

  public CumulativeStatisticsTableModel(
    SampleModel model,
    SampleModelViews sampleModelViews,
    Resources resources,
    SwingDispatcherFactory swingDispatcherFactory) {

    super(model, sampleModelViews, resources, swingDispatcherFactory);

    m_totalString = resources.getString("table.total.label");

    resetStatisticsViews();
  }

  public synchronized void resetStatisticsViews() {
    super.resetStatisticsViews();
    addColumns(getModelViews().getCumulativeStatisticsView());
  }

  protected StatisticsSet getStatistics(int row) {
    return getLastModelTestIndex().getCumulativeStatistics(row);
  }

  public synchronized int getRowCount() {
    return super.getRowCount() + (m_includeTotals ? 1 : 0);
  }

  public synchronized Object getValueAt(int row, int column) {

    if (row < getLastModelTestIndex().getNumberOfTests()) {
      return super.getValueAt(row, column);
    }
    else {
      switch (column) {
      case 0:
        return m_totalString;

      case 1:
        return "";

      default:
        return getDynamicField(
          getModel().getTotalCumulativeStatistics(), column - 2);
      }
    }
  }

  public boolean isBold(int row, int column) {

    if (row < getLastModelTestIndex().getNumberOfTests()) {
      return super.isBold(row, column);
    }
    else {
      return true;
    }
  }

  public Color getForeground(int row, int column) {

    if (row < getLastModelTestIndex().getNumberOfTests()) {
      return super.getForeground(row, column);
    }
    else {
      if (column == 3 &&
          getModelViews().getTestStatisticsQueries().getNumberOfErrors(
              getModel().getTotalCumulativeStatistics()) > 0) {
        return Colours.RED;
      }
      else {
        return null;
      }
    }
  }

  public Color getBackground(int row, int column) {

    if (row < getLastModelTestIndex().getNumberOfTests()) {
      return super.getBackground(row, column);
    }
    else {
      return null;
    }
  }

  public synchronized void writeWithoutTotals(Writer writer,
                                              String columnDelimiter,
                                              String lineDelimeter)
    throws IOException {

    try {
      m_includeTotals = false;
      super.write(writer, columnDelimiter, lineDelimeter);
    }
    finally {
      m_includeTotals = true;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy