00001 /******************************************************************************/ 00002 /* */ 00003 /* POLiTe - Persistent Object Library Test */ 00004 /* Ph.D. Thesis by Mgr. Michal Kopecky */ 00005 /* */ 00006 /* Charles University Prague */ 00007 /* */ 00008 /******************************************************************************/ 00009 /* */ 00010 /* File name: ... */ 00011 /* Module: ...... */ 00012 /* */ 00013 /******************************************************************************/ 00014 00015 #ifndef __C_COMPLEXQUERY_H__ 00016 #define __C_COMPLEXQUERY_H__ 00017 00018 // Common POLiTe Header(s) 00019 #include <lStr.h> 00020 00021 // Parent Header(s) 00022 #include <cQuery.h> 00023 00024 class DLL_External ComplexQuery :public Query{ 00025 #ifdef POLITE_TEST_FRIEND 00026 friend POLITE_TEST_FRIEND; 00027 #endif // POLITE_TEST_FRIEND 00028 00029 friend class Object; 00030 friend class Relation; 00031 friend class ResultBase; 00032 friend class ProtoBase; 00033 friend class OneToOneRelationBase; 00034 friend class OneToManyRelationBase; 00035 friend class ManyToOneRelationBase; 00036 friend class ManyToManyRelationBase; 00037 friend class ChainedRelationBase; 00038 00039 protected: 00040 char *_select; 00041 char *_from; 00042 00043 ComplexQuery(); 00044 00045 ComplexQuery( 00046 const char *const a_where 00047 ); 00048 00049 ComplexQuery( 00050 const char *const a_where, 00051 const char *const a_order_by 00052 ); 00053 00054 ComplexQuery( 00055 const char *const a_where, 00056 const char *const a_order_by, 00057 const char *const a_select, 00058 const char *const a_from 00059 ); 00060 00061 ComplexQuery( 00062 const QueRefProto &X 00063 ); 00064 00065 virtual ~ComplexQuery(); 00066 00067 ComplexQuery &operator =(const ComplexQuery &X); 00068 00069 virtual char *_Select() const; 00070 //replace columns selected, when not NULL 00071 virtual char *_From() const; 00072 //add to list of tables, when not null 00073 }; 00074 00075 #endif //__C_COMPLEXQUERY_H__