4 Copyright (C) 1996 Free Software Foundation, Inc.
6 Author: Ovidiu Predescu <ovidiu@bx.logicnet.ro>
7 Helge Hess <helge.hess@mdlink.de>
11 This file is part of the GNUstep Database Library.
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.
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.
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.
29 #ifndef __EOSQLQualifier_h__
30 #define __EOSQLQualifier_h__
32 #import <EOControl/EOQualifier.h>
34 #import <GDLAccess/EOExpressionArray.h>
36 @class NSDictionary, NSString, NSMutableSet;
37 @class EOEntity, EORelationship, EOExpressionArray, EOSQLQualifier;
38 @class EOSQLExpression;
40 @protocol EOQualifierSQLGeneration
42 - (NSString *)sqlStringForSQLExpression:(EOSQLExpression *)_sqlExpr;
43 - (EOQualifier *)schemaBasedQualifierWithRootEntity:(EOEntity *)_entity;
47 @interface EOSQLQualifier : EOQualifier < NSCopying >
49 /* TODO: these should be GCMutableSet */
50 NSMutableSet *relationshipPaths;
51 NSMutableSet *additionalEntities;
53 /* Garbage collectable objects */
55 EOExpressionArray *content;
59 /* Combining qualifiers */
61 - (void)conjoinWithQualifier:(EOSQLQualifier*)qualifier;
62 - (void)disjoinWithQualifier:(EOSQLQualifier*)qualifier;
64 /* Getting the entity */
67 /* Checking the definition */
70 /* Accessing the distinct selection */
71 - (void)setUsesDistinct:(BOOL)flag;
74 /* Accessing the relationships referred within qualifier */
75 - (NSMutableSet*)relationshipPaths;
76 - (NSMutableSet*)additionalEntities;
78 /* Getting the expression value */
79 - (NSString*)expressionValueForContext:(id<EOExpressionContext>)ctx;
82 - (void)_computeRelationshipPaths:(NSArray *)_relationshipPaths;
83 - (void)_computeRelationshipPaths;
85 - (EOSQLQualifier *)sqlQualifierForEntity:(EOEntity *)_entity;
89 @interface EOSQLQualifier(QualifierCreation)
91 - (id)initWithEntity:(EOEntity *)_entity
92 qualifierFormat:(NSString *)_qualifierFormat, ...;
94 - (id)initWithEntity:(EOEntity *)_entity
95 qualifierFormat:(NSString *)_qualifierFormat
96 argumentsArray:(NSArray *)_args;
98 /* Creating instances */
100 + (EOSQLQualifier *)qualifierForRow:(NSDictionary *)row
101 entity:(EOEntity *)entity;
103 + (EOSQLQualifier *)qualifierForPrimaryKey:(NSDictionary *)key
104 entity:(EOEntity *)entity;
106 + (EOSQLQualifier *)qualifierForRow:(NSDictionary *)row
107 relationship:(EORelationship *)relationship;
109 + (EOSQLQualifier *)qualifierForObject:(id)sourceObject
110 relationship:(EORelationship *)relationship;
114 @interface EOQualifier(SQLQualifier)
115 - (EOSQLQualifier *)sqlQualifierForEntity:(EOEntity *)_entity;
118 @interface EOAndQualifier(SQLGeneration) < EOQualifierSQLGeneration >
121 @interface EOOrQualifier(SQLGeneration) < EOQualifierSQLGeneration >
124 @interface EONotQualifier(SQLGeneration) < EOQualifierSQLGeneration >
127 @interface EOKeyValueQualifier(SQLGeneration) < EOQualifierSQLGeneration >
130 @interface EOKeyComparisonQualifier(SQLGeneration) < EOQualifierSQLGeneration >
133 #endif /* __EOSQLQualifier_h__ */