Source: toresultstats.h


Annotated List
Files
Globals
Hierarchy
Index
//***************************************************************************
/*
 * TOra - An Oracle Toolkit for DBA's and developers
 * Copyright (C) 2003 Quest Software, Inc
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation;  only version 2 of
 * the License is valid for this program.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 *      As a special exception, you have permission to link this program
 *      with the Oracle Client libraries and distribute executables, as long
 *      as you follow the requirements of the GNU GPL in regard to all of the
 *      software in the executable aside from Oracle client libraries.
 *
 *      Specifically you are not permitted to link this program with the
 *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
 *      And you are not permitted to distribute binaries compiled against
 *      these libraries without written consent from Quest Software, Inc.
 *      Observe that this does not disallow linking to the Qt Free Edition.
 *
 * All trademarks belong to their respective owners.
 *
 ****************************************************************************/

#ifndef TORESULTSTATS_H
#define TORESULTSTATS_H

#include "tobackground.h"
#include "toresultview.h"

class toNoBlockQuery;

#define TO_STAT_BLOCKS 10
#define TO_STAT_MAX 500

/** This widget will displays information about statistics in either a database or a session.
 */

class toResultStats : public toResultView {
  Q_OBJECT
  /** Session ID to get statistics for.
   */
  int SessionID;
  /** Number of rows of statistics
   */
  int Row;
  /** Get information about if only changed items are to be displayed.
   */
  bool OnlyChanged;
  /** Display system statistics.
   */
  bool System;
  /** Last read values, used to calculate delta values.
   */
  double LastValues[TO_STAT_MAX+TO_STAT_BLOCKS];

  bool Reset;
  toNoBlockQuery *Query;
  toNoBlockQuery *SessionIO;
  toBackground Poll;

  /** Setup widget.
   */
  void setup();
  /** Add value
   */
  void addValue(bool reset,int id,const QString &name,double value);
public:
  /** Create statistics widget for session statistics.
   * @param OnlyChanged Only display changed items.
   * @param ses Session ID to display info about.
   * @param parent Parent widget.
   * @param name Name of widget.
   */
  toResultStats(bool OnlyChanged,int ses,QWidget *parent,const char *name=NULL);
  /** Create statistics widget for the current session statistics.
   * @param OnlyChanged Only display changed items.
   * @param parent Parent widget.
   * @param name Name of widget.
   */
  toResultStats(bool OnlyChanged,QWidget *parent,const char *name=NULL);
  /** Create statistics widget for the current database statistics.
   * @param parent Parent widget.
   * @param name Name of widget.
   */
  toResultStats(QWidget *parent,const char *name=NULL);

  /** Destroy object.
   */
  ~toResultStats();

  /** Reset statistics. Read in last values without updating widget data.
   */
  void resetStats(void);
  /** Change the session that the current query will run on.
   * @param query Query to check connection for.
   */
  void changeSession(toQuery &conn);
  /** Change session to specified id.
   * @param ses Session ID to change to.
   */
  void changeSession(int ses);
  /** Support Oracle
   */
  virtual bool canHandle(toConnection &conn);
signals:
  /** Emitted when session is changed.
   * @param ses New session ID.
   */
  void sessionChanged(int ses);
  /** Emitted when session is changed.
   * @param ses New session ID as string.
   */
  void sessionChanged(const QString &);
public slots:
  /** Update the statistics.
   * @param reset Set delta to current values. This means that the next time this widget
   *              is updated the delta will be from the new values.
   */
  void refreshStats(bool reset=true);
private slots:
  void poll(void);
};

#endif