Source: xql/xqlobject.h


Annotated List
Files
Globals
Hierarchy
Index
/***************************************************************************
                          xqlObject.h  -  description
                             -------------------
    begin                : Mon Jun 26 2000
    copyright            : (C) 2000 by Raoul Markus
    email                : raoul.markus@arcormail.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 main_xqlObject_h
#define main_xqlObject_h
 
//#include "xql.h"
#include "xqltypes.h"
#include "xqlodbc.h"
#include "xqlsession.h"
#include "xqlexception.h"
#include 
#include "xqlsqlstmt.h"
#include 
#include 

/**
 * root class for all abstract Objects. 
 * provides useraccess etc.
 */
class xqlObject 
{
  public:
    xqlObject(xqlSession * pThisSession);
    /** creates an object with owner admin. Needs no authentification */
    xqlObject(xqlOdbc * pconnection);
    virtual ~xqlObject();
    virtual const char* getType () const ;
    virtual bool isSame (const xqlObject& obj) const; // test for sameness

    virtual bool isSaved();
    virtual bool save();
    //    virtual bool read(xqlid pObjectId);
    /**
     to set the object name. this name must be unique. every object is identified by its objectname.
     Setting the object name does not imply that it exists in the database.
     */
    virtual bool setType(char* pType);
    /**
     this function creates all the nesseccary database objects to save instances of the object.
     the objectname has to be set before by  setObjectType()
     */
    virtual bool createType();
    /**
     this function loads the structure information for the object "ObjectType" 
     from the database. The objectname has to be set before by  setObjectType()
     */
    virtual bool loadType(int pTypeId);
    virtual bool saveType();
    /**
     creates a new instance of the object. an id is given, space is allocated 
     in the database.
     */ 
    virtual bool createInstance();
    /**
     saves the current instance of the object.
     */
    virtual bool saveInstance();
    virtual bool deleteInstance();
    /**
     loads the instance given by pInstId from the database.
     Attention with the objectname? is the objectname already known?
     */
    virtual bool loadInstance(int pInstId);
    /** Gibt die aktuelle ID des Objektes wieder */
    virtual int getTypeId();
    /** returns the classname of this type */
    virtual char * className() const;
    /** returns the table name in the variable pTableName */
    void getTableName(char * pTableName);
    /** returns  the TypeId of a given Instance Id.  */
    int getTypeIdOfInstance(int pInstId);
    /** returns the current instance id */
    int getInstId();
    /** returns the current xqlOdbc handle to the database */
    xqlOdbc * getConnection();
    /** No descriptions */
    bool loadType(std::string& pType);
    /** returns the classname for a given Typeid. */
    std::string * getClassnameByTypeId(int pTypeId);
    /** returns the Icon-Id for this object, XQL_DEFAULT_ICON if not set */
    virtual const xqlid getIconId() const;
  /** sets the icon for this object type. No check is performed. */
  void setIconId(xqlid pIconId);
  private:
  protected:
    int mInstId;   //  jeweilige Objekt-ID
    xqlOdbc* thisOdbc;
    /** 
     this var indicates if the instance of the object exists in database
     */
    bool mIsSaved;
    /** 
     this var indicates if the object type / structure exists in database
     */
    bool mTypeCreated;
    /** 
     this var indicates if the object is simple or has any substructure exists in database
     */
    int mSimple;
    char * mType;
    /** 
      userId holds the current owner of this object
      it has not to be equal to the user of the currents session! 
     */
    xqlUserId userId;
    xqlSession * mCurrentSession;
    /** the id of the given type. */
    int mTypeId;
    /** true, if the Type is set, i. e. that mType has a 
    meaningfull value. Is only manipulated by setType,
    loadType.... */
    bool mTypeIsSet;
    xqlid mIconId;
  protected:
    void operator=(const xqlObject&) {
    }
    bool haveRight(const char * pAction);
    /** loads the iconid for this type */
    void loadIconId(xqlid pType);
  /** saves the current IconId */
  void saveIconId();
};
#endif

Generated by: markus on hobbes on Fri Mar 29 16:15:24 2002, using kdoc 2.0a53.