00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __C_CHAINEDRELATIONBASE_H__
00016 #define __C_CHAINEDRELATIONBASE_H__
00017
00018
00019 #include <cRelation.h>
00020
00021 class DLL_External ChainedRelationBase : public Relation {
00022 #ifdef POLITE_TEST_FRIEND
00023 friend POLITE_TEST_FRIEND;
00024 #endif // POLITE_TEST_FRIEND
00025
00026 friend class QueRefProto;
00027 friend class OneToOneRelationBase;
00028 friend class OneToManyRelationBase;
00029 friend class ManyToOneRelationBase;
00030 friend class ManyToManyRelationBase;
00031
00032 protected:
00033
00034
00035 char *_inner_columns;
00036
00037 int _relnum;
00038
00039 int _qnum;
00040
00041 Query _left_query;
00042 Query _right_query;
00043
00044
00045 protected:
00046 ChainedRelationBase(
00047 const char *a_left_class_name,
00048 const char *a_right_class_name,
00049 const char *a_table_name,
00050 class Connection *a_database_connection,
00051 const char *a_left_column_name,
00052 const char *a_right_column_name,
00053 const char *a_inner_columns,
00054 const int a_relnum,
00055 const int a_qnum,
00056 const class Query &a_left_query,
00057 const class Query &a_right_query
00058 );
00059
00060 ChainedRelationBase(
00061 const ChainedRelationBase &X,
00062 const ChainedRelationBase &Y
00063 );
00064
00065 ChainedRelationBase(
00066 ProtoBase &X,
00067 ProtoBase &Y
00068 );
00069
00070 public:
00071 ~ChainedRelationBase();
00072
00073
00074 virtual bool InsertCouple(RefBase &left, RefBase &right) {return false;};
00075
00076
00077 virtual bool DeleteCouple(RefBase &left, RefBase &right) {return false;};
00078
00079
00080 virtual bool LDeleteAll(class RefBase &right) {return false;};
00081
00082
00083 virtual bool RDeleteAll(class RefBase &left) {return false;};
00084
00085
00086 virtual bool WriteDDL(ofstream &S, class Database &Db);
00087
00088
00089 protected:
00090 virtual class ResultBase *_LGetAll(
00091 ResultBase *rb,
00092 const class RefBase &right,
00093 const class QueRefProto &query = ALL
00094 );
00095
00096
00097
00098 virtual ResultBase *_RGetAll(
00099 ResultBase *rb,
00100 const class RefBase &left,
00101 const class QueRefProto &query = ALL
00102 );
00103
00104
00105
00106 public:
00107 virtual bool ExistsCouple(
00108 const class RefBase &left,
00109 const class RefBase &right
00110 );
00111
00112
00113 ChainedRelationBase(const ChainedRelationBase &R);
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133 protected:
00134
00135 void _Init(
00136 const char *a_left_class_name,
00137 const char *a_right_class_name,
00138 const char *a_table_name,
00139 class Connection *a_database_connection,
00140 const char *a_left_column_name,
00141 const char *a_right_column_name,
00142 const char *a_inner_columns,
00143 const int a_relnum,
00144 const int a_qnum,
00145 const class Query &a_left_query,
00146 const class Query &a_right_query
00147 );
00148
00149 virtual ResultBase *_LGetAll(
00150 ResultBase * rb,
00151 const class QueRefProto &qL,
00152 const class QueRefProto &qR
00153 );
00154
00155
00156
00157 virtual ResultBase *_RGetAll(
00158 ResultBase * rb,
00159 const class QueRefProto &qL,
00160 const class QueRefProto &qR
00161 );
00162
00163
00164
00165 };
00166
00167 #endif //__C_CHAINEDRELATIONBASE_H__