home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / C++-7 / DISK11 / MFC / SAMPLES / TUTORIAL / DATABASE.H$ / database
Encoding:
Text File  |  1992-01-10  |  2.9 KB  |  110 lines

  1. // database.h : Declares the interfaces for the CDataBase class.
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and Microsoft
  9. // QuickHelp documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12.  
  13. #ifndef __DATABASE_H__
  14. #define __DATABASE_H__
  15.  
  16. #include "person.h"
  17.  
  18. /////////////////////////////////////////////////////////////////////////////
  19.  
  20. // string const for untitiled database
  21. extern const char szUntitled[];
  22. //////////////////////////////////////////////////
  23. //  CDataBase
  24. //  The database object is intended to encapsulate everything
  25. //  needed to work the the CPersonList into one interface.
  26. //  Exception handling, data manipulations, and searching
  27. //  are handled on this level freeing the view program, whether it
  28. //  is character or windows, to deal with displaying the data.
  29. //
  30. class CDataBase: public CObject
  31. {
  32. public:
  33.     // constructor
  34.     CDataBase()
  35.         {
  36.             m_pDataList = NULL;
  37.             m_pFindList = NULL;
  38.             m_szFileName = "";
  39.             m_szFileTitle = "";
  40.         }
  41.  
  42.     // Create/Destory CPersonLists
  43.     BOOL New();
  44.     void Terminate();
  45.  
  46.     // File handling
  47.     BOOL DoOpen( const char* pszFileName );
  48.     BOOL DoSave( const char* pszFileName = NULL );
  49.     BOOL DoFind( const char* pszLastName = NULL );
  50.  
  51.     // Person Handling
  52.     void AddPerson( CPerson* pNewPerson );
  53.     void ReplacePerson( CPerson* pOldPerson, const CPerson& rNewPerson );
  54.     void DeletePerson( int nIndex );
  55.     CPerson* GetPerson( int nIndex );
  56.  
  57.     // Database Attributes
  58.     int GetCount()
  59.         {
  60.             ASSERT_VALID( this );
  61.             if ( m_pFindList != NULL )
  62.                 return m_pFindList->GetCount();
  63.             if ( m_pDataList != NULL )
  64.                 return m_pDataList->GetCount();
  65.             return 0;
  66.         }
  67.             
  68.     BOOL IsDirty()
  69.         {   ASSERT_VALID( this );
  70.             return ( m_pDataList != NULL ) ? m_pDataList->GetDirty() : FALSE; }
  71.             
  72.     BOOL IsNamed()
  73.         {   ASSERT_VALID( this );
  74.             return m_szFileName != szUntitled; }
  75.  
  76.     const char* GetName()
  77.         {   ASSERT_VALID( this );
  78.             return m_szFileName; }
  79.         
  80.     CString GetTitle()
  81.         {   ASSERT_VALID( this );
  82.             return  "Phone Book - " + m_szFileTitle; }
  83.     void SetTitle( const char* pszTitle )
  84.         {   ASSERT_VALID( this );
  85.             m_szFileTitle = pszTitle; }
  86.  
  87.     BOOL IsPresent()
  88.         {   ASSERT_VALID( this );
  89.             return m_pDataList != NULL; }
  90.         
  91. protected:
  92.     CPersonList* m_pDataList;
  93.     CPersonList* m_pFindList;
  94.     CString m_szFileName;
  95.     CString m_szFileTitle;
  96.  
  97. private:
  98.     CPersonList* ReadDataBase( CFile* pFile );
  99.     BOOL WriteDataBase( CFile* pFile );
  100.     
  101. #ifdef _DEBUG
  102. public:
  103.     void AssertValid() const;
  104. #endif
  105. };
  106.  
  107. /////////////////////////////////////////////////////////////////////////////
  108.  
  109. #endif // __DATABASE_H__
  110.