]> err.no Git - sope/blob - sope-gdl1/GDLAccess/EOSQLQualifier.h
renamed PostgreSQL72 to PostgreSQL, install in Library/GDLAdaptors-1.1
[sope] / sope-gdl1 / GDLAccess / EOSQLQualifier.h
1 /* 
2    EOSQLQualifier.h
3
4    Copyright (C) 1996 Free Software Foundation, Inc.
5
6    Author: Ovidiu Predescu <ovidiu@bx.logicnet.ro>
7            Helge Hess <helge.hess@mdlink.de>
8    Date:   September 1996
9            November 1999
10
11    This file is part of the GNUstep Database Library.
12
13    This library is free software; you can redistribute it and/or
14    modify it under the terms of the GNU Library General Public
15    License as published by the Free Software Foundation; either
16    version 2 of the License, or (at your option) any later version.
17
18    This library is distributed in the hope that it will be useful,
19    but WITHOUT ANY WARRANTY; without even the implied warranty of
20    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21    Library General Public License for more details.
22
23    You should have received a copy of the GNU Library General Public
24    License along with this library; see the file COPYING.LIB.
25    If not, write to the Free Software Foundation,
26    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27 */
28
29 #ifndef __EOSQLQualifier_h__
30 #define __EOSQLQualifier_h__
31
32 #import <EOControl/EOQualifier.h>
33
34 #import <GDLAccess/EOExpressionArray.h>
35
36 @class NSDictionary, NSString, NSMutableSet;
37 @class EOEntity, EORelationship, EOExpressionArray, EOSQLQualifier;
38 @class EOSQLExpression;
39
40 @protocol EOQualifierSQLGeneration
41
42 - (NSString *)sqlStringForSQLExpression:(EOSQLExpression *)_sqlExpr;
43 - (EOQualifier *)schemaBasedQualifierWithRootEntity:(EOEntity *)_entity;
44
45 @end
46
47 @interface EOSQLQualifier : EOQualifier < NSCopying >
48 {
49     /* TODO: these should be GCMutableSet */
50     NSMutableSet *relationshipPaths;
51     NSMutableSet *additionalEntities;
52
53     /* Garbage collectable objects */
54     EOEntity          *entity;
55     EOExpressionArray *content;
56     BOOL usesDistinct;
57 }
58
59 /* Combining qualifiers */
60 - (void)negate;
61 - (void)conjoinWithQualifier:(EOSQLQualifier*)qualifier;
62 - (void)disjoinWithQualifier:(EOSQLQualifier*)qualifier;
63
64 /* Getting the entity */
65 - (EOEntity *)entity;
66
67 /* Checking the definition */
68 - (BOOL)isEmpty;
69
70 /* Accessing the distinct selection */
71 - (void)setUsesDistinct:(BOOL)flag;
72 - (BOOL)usesDistinct;
73
74 /* Accessing the relationships referred within qualifier */
75 - (NSMutableSet*)relationshipPaths;
76 - (NSMutableSet*)additionalEntities;
77
78 /* Getting the expression value */
79 - (NSString*)expressionValueForContext:(id<EOExpressionContext>)ctx;
80
81 /* Private methods */
82 - (void)_computeRelationshipPaths:(NSArray *)_relationshipPaths;
83 - (void)_computeRelationshipPaths;
84
85 - (EOSQLQualifier *)sqlQualifierForEntity:(EOEntity *)_entity;
86
87 @end
88
89 @interface EOSQLQualifier(QualifierCreation)
90
91 - (id)initWithEntity:(EOEntity *)_entity 
92   qualifierFormat:(NSString *)_qualifierFormat, ...;
93
94 - (id)initWithEntity:(EOEntity *)_entity 
95   qualifierFormat:(NSString *)_qualifierFormat
96   argumentsArray:(NSArray *)_args;
97
98 /* Creating instances */
99
100 + (EOSQLQualifier *)qualifierForRow:(NSDictionary *)row
101   entity:(EOEntity *)entity;
102
103 + (EOSQLQualifier *)qualifierForPrimaryKey:(NSDictionary *)key
104   entity:(EOEntity *)entity;
105
106 + (EOSQLQualifier *)qualifierForRow:(NSDictionary *)row 
107   relationship:(EORelationship *)relationship;
108
109 + (EOSQLQualifier *)qualifierForObject:(id)sourceObject 
110   relationship:(EORelationship *)relationship;
111
112 @end
113
114 @interface EOQualifier(SQLQualifier)
115 - (EOSQLQualifier *)sqlQualifierForEntity:(EOEntity *)_entity;
116 @end
117
118 @interface EOAndQualifier(SQLGeneration) < EOQualifierSQLGeneration >
119 @end
120
121 @interface EOOrQualifier(SQLGeneration) < EOQualifierSQLGeneration >
122 @end
123
124 @interface EONotQualifier(SQLGeneration) < EOQualifierSQLGeneration >
125 @end
126
127 @interface EOKeyValueQualifier(SQLGeneration) < EOQualifierSQLGeneration >
128 @end
129
130 @interface EOKeyComparisonQualifier(SQLGeneration) < EOQualifierSQLGeneration >
131 @end
132
133 #endif /* __EOSQLQualifier_h__ */
134
135 /*
136   Local Variables:
137   c-basic-offset: 4
138   tab-width: 8
139   End:
140 */