From 2883b0b21c9ee77b339b52b7f63808a38169ae9f Mon Sep 17 00:00:00 2001 From: David Ayers Date: Fri, 24 Jul 2009 16:20:27 +0000 Subject: [PATCH] 2009-06-24 Georg Fleischmann 2009-06-24 David Ayers * EOAccess/EOPrivate.h (EOQualifier ): Declare. * EOAccess/EOSQLQualifier.m ([EOQualifier schemaBasedQualifierWithRootEntity:]), ([EOQualifier sqlStringForSQLExpression:]): Add preliminary dummy implementations. ([EONotQualifier schemaBasedQualifierWithRootEntity:]): Implement. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@28406 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 15 +++++++++++++-- EOAccess/EOPrivate.h | 11 +++++++++++ EOAccess/EOSQLQualifier.m | 40 +++++++++++++++++++++++++++++++++------ 3 files changed, 58 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0e49f74..033ddbb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2009-06-24 Georg Fleischmann +2009-06-24 David Ayers + + * EOAccess/EOPrivate.h (EOQualifier ): + Declare. + * EOAccess/EOSQLQualifier.m + ([EOQualifier schemaBasedQualifierWithRootEntity:]), + ([EOQualifier sqlStringForSQLExpression:]): Add preliminary dummy + implementations. + ([EONotQualifier schemaBasedQualifierWithRootEntity:]): Implement. + 2009-06-01 Georg Fleischmann * EOAdaptor/PostgreSQLAdaptor/EOPostgreSQLExpression.m @@ -941,7 +952,7 @@ nullifyAttributesInRelationship:relationships: and relayAttributesInRelationship:relationships: at the end. -2007-02-18 Nicola Pero +2007-02-18 Nicola Pero * configure.ac: Check for GNUSTEP_MAKEFILES, not GNUSTEP_SYSTEM_ROOT. @@ -999,7 +1010,7 @@ and +foreignKeyConstraintStatementsForRelationship: to return empty arrays. -007-01-05 Matt Rice +2007-01-05 Matt Rice * Documentation/GDL2Intro/GDL2Intro.texi: Add more docs. * Documentation/GDL2Intro/Examples/eoexample.m: Use an diff --git a/EOAccess/EOPrivate.h b/EOAccess/EOPrivate.h index aaf7e7d..a2c1516 100644 --- a/EOAccess/EOPrivate.h +++ b/EOAccess/EOPrivate.h @@ -30,6 +30,8 @@ #include "EODefines.h" #include "../EOControl/EOPrivate.h" +#include "EOSQLQualifier.h" + @class EODatabaseContext; // ==== Classes ==== @@ -47,4 +49,13 @@ GDL2ACCESS_EXPORT void GDL2_EOAccessPrivateInit(); GDL2ACCESS_EXPORT NSDictionary* EODatabaseContext_snapshotForGlobalIDWithImpPtr(EODatabaseContext* dbContext,IMP* impPtr,EOGlobalID* gid); GDL2ACCESS_EXPORT EOGlobalID* EODatabaseContext_globalIDForObjectWithImpPtr(EODatabaseContext* dbContext,IMP* impPtr,id object); +/* EOQualifier implements schemaBasedQualifierWithRootEntity: + but it instead of simply declaring and documenting that EOF + merely declares the protocol for its subclasses and uses + EORequestConcreteImplementation for other classes. +*/ +@interface EOQualifier (EOQualifierSQLGeneration) +@end + + #endif /* __EOAccess_EOPrivat_h__ */ diff --git a/EOAccess/EOSQLQualifier.m b/EOAccess/EOSQLQualifier.m index 2533061..8f558e0 100644 --- a/EOAccess/EOSQLQualifier.m +++ b/EOAccess/EOSQLQualifier.m @@ -70,12 +70,10 @@ RCS_ID("$Id$") #include "EOEntityPriv.h" @implementation EOSQLQualifier - + (EOQualifier *)qualifierWithQualifierFormat: (NSString *)format, ... { NSEmitTODO(); //TODO [self notImplemented: _cmd]; //TODO - return nil; } @@ -84,18 +82,19 @@ RCS_ID("$Id$") { NSEmitTODO(); //TODO [self notImplemented: _cmd]; //TODO - return nil; } - (EOQualifier *)schemaBasedQualifierWithRootEntity:(EOEntity *)entity { + NSEmitTODO(); //TODO [self notImplemented: _cmd]; return nil; } - (NSString *)sqlStringForSQLExpression:(EOSQLExpression *)sqlExpression { + NSEmitTODO(); //TODO [self notImplemented: _cmd]; return nil; } @@ -103,6 +102,24 @@ RCS_ID("$Id$") @end +/* Undocumente method which uses EORequestConcreteImplementation + to determine an implementation to use for non EOF-Qualifiers. + */ +@implementation EOQualifier (EOQualifierSQLGeneration) +- (EOQualifier *)schemaBasedQualifierWithRootEntity:(EOEntity *)entity +{ + NSEmitTODO(); //TODO + [self notImplemented: _cmd]; + return nil; +} +- (NSString *)sqlStringForSQLExpression:(EOSQLExpression *)sqlExpression +{ + NSEmitTODO(); //TODO + [self notImplemented: _cmd]; + return nil; +} +@end + @implementation EOAndQualifier (EOQualifierSQLGeneration) - (NSString *)sqlStringForSQLExpression: (EOSQLExpression *)sqlExpression @@ -496,9 +513,20 @@ RCS_ID("$Id$") - (EOQualifier *)schemaBasedQualifierWithRootEntity: (EOEntity *)entity { - //TODO - [self notImplemented: _cmd]; - return nil; + EOQualifier *returnedQualifier = self; + EOQualifier *schemaBasedQualifier; + + schemaBasedQualifier + = [_qualifier schemaBasedQualifierWithRootEntity: entity]; + + // If we've got a different qualifier, return a new EONotQualifier + if (schemaBasedQualifier != _qualifier) + { + returnedQualifier + = [[self class] qualifierWithQualifier: schemaBasedQualifier]; + } + + return returnedQualifier; } @end