#ifndef __REPUTILS_H
#define __REPUTILS_H

#ifndef __REPORT_H
#include <report.h>
#endif

///////////////////////////////////////////////////////////
// TAS400_report
// Report dinamico per visualizzare file di testo AS400
///////////////////////////////////////////////////////////

class TAS400_report : public TReport
{
  TRecordset* _set;   // TAS400_recordset
  bool _owned;

protected:
  virtual TRecordset* recordset() const;
  virtual bool set_recordset(TRecordset* recset);

public:
  virtual bool set_recordset(const TString& query);

  TAS400_report(const char* query);
  TAS400_report(TRecordset& recset);  // TAS400_recordset!!!
};

///////////////////////////////////////////////////////////
// TLog_report
// Report per visualizzare file di log
///////////////////////////////////////////////////////////

class TLog_report : public TReport
{
  TString _title;
  bool _kill_duplicates;
  size_t _msg, _war, _err;

protected:
  virtual bool use_mask() { return false; }
  virtual bool get_usr_val(const TString& name, TVariant& var) const;
  virtual bool set_usr_val(const TString& name, const TVariant& var);

public:
  void reset();
  bool log(int severity, const char* msg); // severity: 0=normal; 1=warning; 2=error
  void set_title(const char* title);
  void kill_duplicates(bool k = true) { _kill_duplicates = k; }
  const TString& title() const { return _title; }
  size_t messages() const { return _msg; }
  size_t warnings() const { return _war; }
  size_t errors() const   { return _err; }
  size_t rows() const { return messages() + warnings() + errors(); } 

  TLog_report(const char* title = "", const char* name = "bagn010a");
};

#endif