/***************************************************************************
                          mappe.h  -  Interface Klasse CDokumentenmappe
                             -------------------                                         
    begin                : Wed Aug 4 1999                                           
    copyright            : (C) 1999 by Stephan Uhlmann                         
    email                : suhlmann@gmx.de                                     
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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; either version 2 of the License, or     *
 *   (at your option) any later version.                                   * 
 *                                                                         *
 ***************************************************************************/


#ifndef __MAPPE_H__
#define __MAPPE_H__

#include <qdatastream.h>
#include "menge.h"  /* Import Klasse CDokumentenmenge */

/**
 * Die Klasse CDokumentenmappe stellt die Daten und Methoden
 * zur Verfuegung um eine Dokumentenmappe zu verwalten.
 * Hier wird eine Instanz der Klasse CDokumentenmenge angelegt.
 */


class CDokumentenmappe
{
 private:
/** die Dokumentenliste */
 CDokumentenmenge* Dokumente;
/** Kundeninformation */
 QString Kundeninformation;
/** Datum der Erstellung der Dokumentenmappe */
 QDateTime Erstellungsdatum;
/** Datum der letzten Aenderung */
 QDateTime Aenderungsdatum;

 public:

  /** Konstruktor */
  /*  pre: this existiert nicht */
  /* post: this existiert und ist gueltig */
  CDokumentenmappe();


  /** Destruktor */
  /* pre: this existiert */
  /* post: this existiert nicht */
  ~CDokumentenmappe();


  /** generiert eine neue Dokumentenmappe und gibt einen Zeiger darauf zurueck */
  /* pre: CDokumentenmappe existiert nicht */
  /* post: CDokumentenmappe existiert und ist gueltig */
  CDokumentenmappe* Generate();

  /** gibt eine Dokumentenmappe wieder frei */
  /* pre: this existiert */
  /* post: this ist ungueltig */
  void Free();

  /** prueft die Klasseninvarianz des Objekts */
  /* pre: this existiert */
  /* post: TRUE wenn this gueltig, sonst FALSE */
  bool ClassInvariant() const;

  /** kopiert die Dokumentenmappe src in die aktuelle Dokumentenmappe */
  /* pre: this existiert; src ist gueltig */
  /* post: this ist gueltig; this ist gleich src */
  bool Copy(CDokumentenmappe* src);

  /** vergleicht zwei Dokumentenmappen miteinander */
  /* pre: this und src existieren und sind gueltig */
  /* post: TRUE wenn Inhalt von this gleich Inhalt von src, sonst FALSE */
  bool EqualValue(CDokumentenmappe* src) const;

  /** liefert die Anzahl der Dokumente in der Dokumentenmappe */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  unsigned int LiefereAnzahl() const;

  /** gibt die Kundeninformation der Dokumentenmappe zurueck */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QString LiefereKundeninformation() const;

  /** aendert die Kundeninformation der Dokumentenmappe */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  void AendereKundeninformation(QString NInfo);

  /** fuegt ein Dokument in die Dokumentenmappe ein */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn das Dokument eingefuegt werden konnst, sonst FALSE */
  bool EinfuegeDokument(CDokument* src);

  /** loescht ein Dokument aus der Dokumentenmappe */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn das Dokument geloescht werden konnst, sonst FALSE */
  bool LoescheDokument(QString Schluessel);

  /** Sucht ein Dokument in der Dokumentenmappe heraus */
  /* pre: this existiert und ist gueltig */
  /* post: NULL wenn Dokument nicht enthalten, sonst Zeiger auf das Element in der Liste */
  CDokumentenmenge::TElement* SucheDokument(QString Schluessel) const;

  /** prueft ob ein Dokument in der Dokumentenmappe enthalten ist */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn das Dokument enthalten ist, sonst FALSE */
  bool DokumentInMappe(QString Schluessel) const;

  /** gibt das Erstellungsdatum der Dokumentenmappe zurueck */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QDateTime LiefereErstellungsdatum() const;

  /** liefert das Aenderungsdatum der Dokumentenmappe */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QDateTime LiefereAenderungsdatum() const;

  /** prueft ob die Kundeninformation zulaessig ist */
  /* pre:  */
  /* post: TRUE wenn src gueltig ist, sonst FALSE */
  bool ZulaessigeKundeninformation(QString src) const;

  /** gibt das erste Element in der Dokumentenmappe zurueck */
  /* pre: this existiert */
  /* post: NULL wenn keine Elemente enthalten, sonst Zeiger auf erstes Element */
  CDokumentenmenge::TElement* LiefereErstes() const;



  /** schreibt den Inhalt der Dokumentenmappe in den angegebenen stream */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn die CDokumentenmappe geschrieben werden konnte, sonst FALSE */
  bool readData(QDataStream* stream);

  /** laedt den Inhalt der Dokumentenmappe aus dem angegebenen stream */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn die CDokumentenmappe geladen werden konnte, sonst FALSE */
  bool writeData(QDataStream* stream) const;

  /** liefert das aktuelle Systemdatum zurueck */
  QDateTime LiefereSystemdatum() const;
};

#endif /* __MAPPE_H__ */







































Documentation generated by uhlmann@fara2 on Mon Aug 30 20:37:52 MEST 1999