QxOrm  1.4.3
C++ Object Relational Mapping library

qx::IxSqlRelation : common interface for all relationships defined between 2 classes (or between 2 tables in database) More...

#include <IxSqlRelation.h>

Inheritance diagram for qx::IxSqlRelation:
qx::QxPropertyBag qx::QxSqlRelation< DataType, Owner > qx::QxSqlRelation_ManyToMany< DataType, Owner > qx::QxSqlRelation_ManyToOne< DataType, Owner > qx::QxSqlRelation_OneToMany< DataType, Owner > qx::QxSqlRelation_OneToOne< DataType, Owner >

List of all members.

Public Types

enum  relation_type {
  no_relation, one_to_one, one_to_many, many_to_one,
  many_to_many
}
typedef QxCollection< QString,
IxDataMember * > 
type_lst_data_member
typedef qx_shared_ptr
< type_lst_data_member
type_lst_data_member_ptr

Public Member Functions

 IxSqlRelation (IxDataMember *p)
virtual ~IxSqlRelation ()=0
QxCollection< QString,
IxDataMember * > * 
getLstDataMember () const
IxSqlRelationXgetLstRelation () const
void setSqlJoinType (qx::dao::sql_join::join_type e)
qx::dao::sql_join::join_type getSqlJoinType () const
relation_type getRelationType () const
IxClassgetClass () const
IxClassgetClassOwner () const
IxDataMembergetDataMember () const
IxDataMemberXgetDataMemberX () const
IxDataMembergetDataId () const
IxDataMembergetDataIdOwner () const
QString getKey () const
long getDataCount () const
long getRelationCount () const
IxDataMembergetDataByKey (const QString &sKey) const
IxDataMembernextData (long &lIndex) const
IxSqlRelationnextRelation (long &lIndex) const
QString table () const
QString tableAlias (QxSqlRelationParams &params) const
QString tableAliasOwner (QxSqlRelationParams &params) const
QString getSqlJoin (qx::dao::sql_join::join_type e=qx::dao::sql_join::no_join) const
bool traceSqlQuery () const
virtual void init ()
virtual QString getDescription () const =0
virtual QString getExtraTable () const =0
virtual QString createExtraTable () const =0
virtual bool getCartesianProduct () const =0
virtual QVariant getIdFromQuery (bool bEager, QxSqlRelationParams &params) const =0
virtual void updateOffset (bool bEager, QxSqlRelationParams &params) const =0
virtual void createTable (QxSqlRelationParams &params) const =0
virtual void lazySelect (QxSqlRelationParams &params) const =0
virtual void eagerSelect (QxSqlRelationParams &params) const =0
virtual void lazyFrom (QxSqlRelationParams &params) const =0
virtual void eagerFrom (QxSqlRelationParams &params) const =0
virtual void lazyJoin (QxSqlRelationParams &params) const =0
virtual void eagerJoin (QxSqlRelationParams &params) const =0
virtual void lazyWhere (QxSqlRelationParams &params) const =0
virtual void eagerWhere (QxSqlRelationParams &params) const =0
virtual void lazyWhereSoftDelete (QxSqlRelationParams &params) const =0
virtual void eagerWhereSoftDelete (QxSqlRelationParams &params) const =0
virtual void lazyFetch_ResolveInput (QxSqlRelationParams &params) const =0
virtual void eagerFetch_ResolveInput (QxSqlRelationParams &params) const =0
virtual void lazyFetch_ResolveOutput (QxSqlRelationParams &params) const =0
virtual void * eagerFetch_ResolveOutput (QxSqlRelationParams &params) const =0
virtual void lazyInsert (QxSqlRelationParams &params) const =0
virtual void lazyInsert_Values (QxSqlRelationParams &params) const =0
virtual void lazyUpdate (QxSqlRelationParams &params) const =0
virtual void lazyInsert_ResolveInput (QxSqlRelationParams &params) const =0
virtual void lazyUpdate_ResolveInput (QxSqlRelationParams &params) const =0
virtual QSqlError onBeforeSave (QxSqlRelationParams &params) const =0
virtual QSqlError onAfterSave (QxSqlRelationParams &params) const =0
bool verifyOffset (QxSqlRelationParams &params, bool bId) const BOOST_USED

Static Public Member Functions

static void setTraceRelationInit (bool bTrace)

Protected Member Functions

QVariant getIdFromQuery_ManyToMany (bool bEager, QxSqlRelationParams &params) const
QVariant getIdFromQuery_ManyToOne (bool bEager, QxSqlRelationParams &params) const
QVariant getIdFromQuery_OneToMany (bool bEager, QxSqlRelationParams &params) const
QVariant getIdFromQuery_OneToOne (bool bEager, QxSqlRelationParams &params) const
void updateOffset_ManyToMany (bool bEager, QxSqlRelationParams &params) const
void updateOffset_ManyToOne (bool bEager, QxSqlRelationParams &params) const
void updateOffset_OneToMany (bool bEager, QxSqlRelationParams &params) const
void updateOffset_OneToOne (bool bEager, QxSqlRelationParams &params) const
void eagerSelect_ManyToMany (QxSqlRelationParams &params) const
void eagerSelect_ManyToOne (QxSqlRelationParams &params) const
void eagerSelect_OneToMany (QxSqlRelationParams &params) const
void eagerSelect_OneToOne (QxSqlRelationParams &params) const
void eagerJoin_ManyToMany (QxSqlRelationParams &params) const
void eagerJoin_ManyToOne (QxSqlRelationParams &params) const
void eagerJoin_OneToMany (QxSqlRelationParams &params) const
void eagerJoin_OneToOne (QxSqlRelationParams &params) const
void eagerWhereSoftDelete_ManyToMany (QxSqlRelationParams &params) const
void eagerWhereSoftDelete_ManyToOne (QxSqlRelationParams &params) const
void eagerWhereSoftDelete_OneToMany (QxSqlRelationParams &params) const
void eagerWhereSoftDelete_OneToOne (QxSqlRelationParams &params) const
void lazySelect_ManyToOne (QxSqlRelationParams &params) const
void lazyInsert_ManyToOne (QxSqlRelationParams &params) const
void lazyInsert_Values_ManyToOne (QxSqlRelationParams &params) const
void lazyUpdate_ManyToOne (QxSqlRelationParams &params) const
void createTable_ManyToOne (QxSqlRelationParams &params) const
QSqlError deleteFromExtraTable_ManyToMany (QxSqlRelationParams &params) const
QString createExtraTable_ManyToMany () const
bool addLazyRelation (QxSqlRelationParams &params, IxSqlRelation *pRelation) const

Protected Attributes

IxClassm_pClass
 'IxClass' associated wth sql relation
IxClassm_pClassOwner
 'IxClass' of the owner
IxDataMemberm_pDataMember
 'IxDataMember' associated wth sql relation
IxDataMemberXm_pDataMemberX
 Collection of 'IxDataMember' : parent of 'm_pDataMember'.
IxDataMemberm_pDataMemberId
 'IxDataMember' id of 'm_pDataMemberX'
IxDataMemberm_pDataMemberIdOwner
 'IxDataMember' id of the owner
long m_lOffsetRelation
 Generic offset for sql relation.
qx::dao::sql_join::join_type m_eJoinType
 Join type to build sql query.
relation_type m_eRelationType
 Relation type : one-to-one, one-to-many, etc.
QxSoftDelete m_oSoftDelete
 Soft delete (or logical delete) behavior.
QString m_sForeignKey
 SQL query foreign key (1-n)
QString m_sExtraTable
 Extra-table that holds the relationship (n-n)
QString m_sForeignKeyOwner
 SQL query foreign key for owner (n-n)
QString m_sForeignKeyDataType
 SQL query foreign key for data type (n-n)
bool m_bInitInEvent
 Class initialisation in progress.
bool m_bInitDone
 Class initialisation finished.
int m_iIsSameDataOwner
 Check if relationship source entity and target entity are equal.
type_lst_data_member_ptr m_lstDataMemberPtr
 Optimization : handle to collection of 'IxDataMember'.
qx_shared_ptr< IxSqlRelationXm_lstSqlRelationPtr
 Optimization : handle to collection of 'IxSqlRelation'.

Static Protected Attributes

static bool m_bTraceRelationInit
 Can be useful to debug an issue with relationship initialization.

Private Member Functions

IxDataMemberisValid_DataMember (long lIndex) const
IxDataMemberisValid_SqlRelation (long lIndex) const

Detailed Description

qx::IxSqlRelation : common interface for all relationships defined between 2 classes (or between 2 tables in database)

Definition at line 73 of file IxSqlRelation.h.


Member Typedef Documentation

Definition at line 80 of file IxSqlRelation.h.

Definition at line 81 of file IxSqlRelation.h.


Member Enumeration Documentation

Enumerator:
no_relation 
one_to_one 
one_to_many 
many_to_one 
many_to_many 

Definition at line 78 of file IxSqlRelation.h.


Constructor & Destructor Documentation

qx::IxSqlRelation::IxSqlRelation ( IxDataMember p) [inline]

Definition at line 110 of file IxSqlRelation.h.

virtual qx::IxSqlRelation::~IxSqlRelation ( ) [pure virtual]

Member Function Documentation

bool qx::IxSqlRelation::addLazyRelation ( QxSqlRelationParams params,
IxSqlRelation pRelation 
) const [protected]
QString qx::IxSqlRelation::createExtraTable_ManyToMany ( ) const [protected]
void qx::IxSqlRelation::createTable_ManyToOne ( QxSqlRelationParams params) const [protected]
QSqlError qx::IxSqlRelation::deleteFromExtraTable_ManyToMany ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerJoin_ManyToMany ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerJoin_ManyToOne ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerJoin_OneToMany ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerJoin_OneToOne ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerSelect_ManyToMany ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerSelect_ManyToOne ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerSelect_OneToMany ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerSelect_OneToOne ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerWhereSoftDelete_ManyToMany ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerWhereSoftDelete_ManyToOne ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerWhereSoftDelete_OneToMany ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::eagerWhereSoftDelete_OneToOne ( QxSqlRelationParams params) const [protected]
IxClass* qx::IxSqlRelation::getClass ( ) const [inline]

Definition at line 119 of file IxSqlRelation.h.

IxClass* qx::IxSqlRelation::getClassOwner ( ) const [inline]

Definition at line 120 of file IxSqlRelation.h.

IxDataMember* qx::IxSqlRelation::getDataByKey ( const QString &  sKey) const
long qx::IxSqlRelation::getDataCount ( ) const
IxDataMember* qx::IxSqlRelation::getDataId ( ) const [inline]

Definition at line 123 of file IxSqlRelation.h.

IxDataMember* qx::IxSqlRelation::getDataIdOwner ( ) const [inline]

Definition at line 124 of file IxSqlRelation.h.

IxDataMember* qx::IxSqlRelation::getDataMember ( ) const [inline]

Definition at line 121 of file IxSqlRelation.h.

IxDataMemberX* qx::IxSqlRelation::getDataMemberX ( ) const [inline]

Definition at line 122 of file IxSqlRelation.h.

QVariant qx::IxSqlRelation::getIdFromQuery_ManyToMany ( bool  bEager,
QxSqlRelationParams params 
) const [protected]
QVariant qx::IxSqlRelation::getIdFromQuery_ManyToOne ( bool  bEager,
QxSqlRelationParams params 
) const [protected]
QVariant qx::IxSqlRelation::getIdFromQuery_OneToMany ( bool  bEager,
QxSqlRelationParams params 
) const [protected]
QVariant qx::IxSqlRelation::getIdFromQuery_OneToOne ( bool  bEager,
QxSqlRelationParams params 
) const [protected]
QString qx::IxSqlRelation::getKey ( ) const
QxCollection<QString, IxDataMember *>* qx::IxSqlRelation::getLstDataMember ( ) const [inline]

Definition at line 113 of file IxSqlRelation.h.

IxSqlRelationX* qx::IxSqlRelation::getLstRelation ( ) const [inline]

Definition at line 114 of file IxSqlRelation.h.

long qx::IxSqlRelation::getRelationCount ( ) const
relation_type qx::IxSqlRelation::getRelationType ( ) const [inline]

Definition at line 118 of file IxSqlRelation.h.

QString qx::IxSqlRelation::getSqlJoin ( qx::dao::sql_join::join_type  e = qx::dao::sql_join::no_join) const
qx::dao::sql_join::join_type qx::IxSqlRelation::getSqlJoinType ( ) const [inline]

Definition at line 117 of file IxSqlRelation.h.

virtual void qx::IxSqlRelation::init ( ) [virtual]
IxDataMember* qx::IxSqlRelation::isValid_DataMember ( long  lIndex) const [private]
IxDataMember* qx::IxSqlRelation::isValid_SqlRelation ( long  lIndex) const [private]
void qx::IxSqlRelation::lazyInsert_ManyToOne ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::lazyInsert_Values_ManyToOne ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::lazySelect_ManyToOne ( QxSqlRelationParams params) const [protected]
void qx::IxSqlRelation::lazyUpdate_ManyToOne ( QxSqlRelationParams params) const [protected]
IxDataMember* qx::IxSqlRelation::nextData ( long &  lIndex) const
IxSqlRelation* qx::IxSqlRelation::nextRelation ( long &  lIndex) const
void qx::IxSqlRelation::setSqlJoinType ( qx::dao::sql_join::join_type  e) [inline]

Definition at line 116 of file IxSqlRelation.h.

static void qx::IxSqlRelation::setTraceRelationInit ( bool  bTrace) [static]
QString qx::IxSqlRelation::table ( ) const
QString qx::IxSqlRelation::tableAlias ( QxSqlRelationParams params) const
QString qx::IxSqlRelation::tableAliasOwner ( QxSqlRelationParams params) const
bool qx::IxSqlRelation::traceSqlQuery ( ) const
void qx::IxSqlRelation::updateOffset_ManyToMany ( bool  bEager,
QxSqlRelationParams params 
) const [protected]
void qx::IxSqlRelation::updateOffset_ManyToOne ( bool  bEager,
QxSqlRelationParams params 
) const [protected]
void qx::IxSqlRelation::updateOffset_OneToMany ( bool  bEager,
QxSqlRelationParams params 
) const [protected]
void qx::IxSqlRelation::updateOffset_OneToOne ( bool  bEager,
QxSqlRelationParams params 
) const [protected]
bool qx::IxSqlRelation::verifyOffset ( QxSqlRelationParams params,
bool  bId 
) const

Member Data Documentation

Class initialisation finished.

Definition at line 100 of file IxSqlRelation.h.

Class initialisation in progress.

Definition at line 99 of file IxSqlRelation.h.

bool qx::IxSqlRelation::m_bTraceRelationInit [static, protected]

Can be useful to debug an issue with relationship initialization.

Definition at line 106 of file IxSqlRelation.h.

Join type to build sql query.

Definition at line 92 of file IxSqlRelation.h.

Relation type : one-to-one, one-to-many, etc.

Definition at line 93 of file IxSqlRelation.h.

Check if relationship source entity and target entity are equal.

Definition at line 101 of file IxSqlRelation.h.

Generic offset for sql relation.

Definition at line 91 of file IxSqlRelation.h.

Optimization : handle to collection of 'IxDataMember'.

Definition at line 103 of file IxSqlRelation.h.

Optimization : handle to collection of 'IxSqlRelation'.

Definition at line 104 of file IxSqlRelation.h.

Soft delete (or logical delete) behavior.

Definition at line 94 of file IxSqlRelation.h.

'IxClass' associated wth sql relation

Definition at line 85 of file IxSqlRelation.h.

'IxClass' of the owner

Definition at line 86 of file IxSqlRelation.h.

'IxDataMember' associated wth sql relation

Definition at line 87 of file IxSqlRelation.h.

'IxDataMember' id of 'm_pDataMemberX'

Definition at line 89 of file IxSqlRelation.h.

'IxDataMember' id of the owner

Definition at line 90 of file IxSqlRelation.h.

Collection of 'IxDataMember' : parent of 'm_pDataMember'.

Definition at line 88 of file IxSqlRelation.h.

QString qx::IxSqlRelation::m_sExtraTable [protected]

Extra-table that holds the relationship (n-n)

Definition at line 96 of file IxSqlRelation.h.

QString qx::IxSqlRelation::m_sForeignKey [protected]

SQL query foreign key (1-n)

Definition at line 95 of file IxSqlRelation.h.

SQL query foreign key for data type (n-n)

Definition at line 98 of file IxSqlRelation.h.

SQL query foreign key for owner (n-n)

Definition at line 97 of file IxSqlRelation.h.


The documentation for this class was generated from the following file: