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>
41 Note: the expression context is the EOSQLExpression.
44 @class NSDictionary, NSString, NSMutableSet;
45 @class EOEntity, EORelationship, EOExpressionArray, EOSQLQualifier;
46 @class EOSQLExpression;
48 @protocol EOQualifierSQLGeneration
50 - (NSString *)sqlStringForSQLExpression:(EOSQLExpression *)_sqlExpr;
51 - (EOQualifier *)schemaBasedQualifierWithRootEntity:(EOEntity *)_entity;
55 @interface EOSQLQualifier : EOQualifier < NSCopying >
57 /* TODO: these should be GCMutableSet */
58 NSMutableSet *relationshipPaths;
59 NSMutableSet *additionalEntities;
61 /* Garbage collectable objects */
63 EOExpressionArray *content;
67 /* Combining qualifiers */
69 - (void)conjoinWithQualifier:(EOSQLQualifier*)qualifier;
70 - (void)disjoinWithQualifier:(EOSQLQualifier*)qualifier;
72 /* Getting the entity */
75 /* Checking the definition */
78 /* Accessing the distinct selection */
79 - (void)setUsesDistinct:(BOOL)flag;
82 /* Accessing the relationships referred within qualifier */
83 - (NSMutableSet*)relationshipPaths;
84 - (NSMutableSet*)additionalEntities;
86 /* Getting the expression value */
87 - (NSString*)expressionValueForContext:(id<EOExpressionContext>)ctx;
90 - (void)_computeRelationshipPaths:(NSArray *)_relationshipPaths;
91 - (void)_computeRelationshipPaths;
93 - (EOSQLQualifier *)sqlQualifierForEntity:(EOEntity *)_entity;
97 @interface EOSQLQualifier(QualifierCreation)
99 - (id)initWithEntity:(EOEntity *)_entity
100 qualifierFormat:(NSString *)_qualifierFormat, ...;
102 - (id)initWithEntity:(EOEntity *)_entity
103 qualifierFormat:(NSString *)_qualifierFormat
104 argumentsArray:(NSArray *)_args;
106 /* Creating instances */
108 + (EOSQLQualifier *)qualifierForRow:(NSDictionary *)row
109 entity:(EOEntity *)entity;
111 + (EOSQLQualifier *)qualifierForPrimaryKey:(NSDictionary *)key
112 entity:(EOEntity *)entity;
114 + (EOSQLQualifier *)qualifierForRow:(NSDictionary *)row
115 relationship:(EORelationship *)relationship;
117 + (EOSQLQualifier *)qualifierForObject:(id)sourceObject
118 relationship:(EORelationship *)relationship;
122 @interface EOQualifier(SQLQualifier)
123 - (EOSQLQualifier *)sqlQualifierForEntity:(EOEntity *)_entity;
126 @interface EOAndQualifier(SQLGeneration) < EOQualifierSQLGeneration >
129 @interface EOOrQualifier(SQLGeneration) < EOQualifierSQLGeneration >
132 @interface EONotQualifier(SQLGeneration) < EOQualifierSQLGeneration >
135 @interface EOKeyValueQualifier(SQLGeneration) < EOQualifierSQLGeneration >
138 @interface EOKeyComparisonQualifier(SQLGeneration) < EOQualifierSQLGeneration >
141 #endif /* __EOSQLQualifier_h__ */