* EOAccess/EOSQLQualifier.m

o fix in  EOOrQualifier -sqlStringForSQLExpression:
	    use sqlExpression -sqlStringForDisjoinedQualifiers:
	    (problem was missing () around expression)
	* EOControl/EOAndQualifier.m:
	  o implemented -_addBindingsToDictionary:
	  o implemented -qualifierWithBindings:requiresAllVariables:
	  o implemented -validateKeysWithRootClassDescription:
	* EOControl/EOKeyValueQualifier.m:
	  o implemented -validateKeysWithRootClassDescription:
	  o implemented -initWithKeyValueUnarchiver:
	  o removed duplicate -initWithKeyValueUnarchiver: and
	    -encodeWithKeyValueArchiver
	  o implemented -_addBindingsToDictionary:
	  o implemented -qualifierWithBindings:requiresAllVariables:
	* EOControl/EOOrQualifier.m:
	  o implemented -_addBindingsToDictionary:
	  o implemented -qualifierWithBindings:requiresAllVariables:
	  o implemented -validateKeysWithRootClassDescription:
	* EOControl/EONotQualifier.m:
	  o implemented -_addBindingsToDictionary:
	  o implemented -validateKeysWithRootClassDescription:
	  o implemented -qualifierWithBindings:requiresAllVariables:
	* EOControl/EOQualifier.m:
	  o implemented _validateKey:withRootClassDescription:
	  o implemented -validateKeysWithRootClassDescription:
	  o implemented -bindingKeys
	  o implemented -keyPathForBindingKey:
	  o added EOQualifierVariableSubstitutionException;


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18226 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
David Ayers 2003-11-28 22:56:06 +00:00
parent 565696cba9
commit ce6dc1bf92
7 changed files with 269 additions and 63 deletions

View file

@ -53,6 +53,35 @@
o subclass joinExpression to avoid building join
expression (it's now build in -tableListWithRootEntity
o sublass -tableListWithRootEntity to add joins in it.
* EOAccess/EOSQLQualifier.m
o fix in EOOrQualifier -sqlStringForSQLExpression:
use sqlExpression -sqlStringForDisjoinedQualifiers:
(problem was missing () around expression)
* EOControl/EOAndQualifier.m:
o implemented -_addBindingsToDictionary:
o implemented -qualifierWithBindings:requiresAllVariables:
o implemented -validateKeysWithRootClassDescription:
* EOControl/EOKeyValueQualifier.m:
o implemented -validateKeysWithRootClassDescription:
o implemented -initWithKeyValueUnarchiver:
o removed duplicate -initWithKeyValueUnarchiver: and
-encodeWithKeyValueArchiver
o implemented -_addBindingsToDictionary:
o implemented - qualifierWithBindings:requiresAllVariables:
* EOControl/EOOrQualifier.m:
o implemented -_addBindingsToDictionary:
o implemented -qualifierWithBindings:requiresAllVariables:
o implemented -validateKeysWithRootClassDescription:
* EOControl/EONotQualifier.m:
o implemented -_addBindingsToDictionary:
o implemented -validateKeysWithRootClassDescription:
o implemented -qualifierWithBindings:requiresAllVariables:
* EOControl/EOQualifier.m:
o implemented _validateKey:withRootClassDescription:
o implemented -validateKeysWithRootClassDescription:
o implemented -bindingKeys
o implemented -keyPathForBindingKey:
o added EOQualifierVariableSubstitutionException;
2003-10-24 David Ayers <d.ayers@inode.at>

View file

@ -105,6 +105,7 @@ RCS_ID("$Id$")
- (NSString *)sqlStringForSQLExpression: (EOSQLExpression *)sqlExpression
{
//OK?
//Ayers: Review (This looks correct, time to cleanup.)
return [sqlExpression sqlStringForConjoinedQualifiers: _qualifiers];
/*
@ -176,6 +177,11 @@ RCS_ID("$Id$")
- (NSString *)sqlStringForSQLExpression: (EOSQLExpression *)sqlExpression
{
//OK?
//Ayers: Review (This looks correct, time to cleanup.)
return [sqlExpression sqlStringForDisjoinedQualifiers: _qualifiers];
/*
NSEnumerator *qualifiersEnum;
EOQualifier *qualifier;
NSMutableString *sqlString = nil;
@ -197,6 +203,7 @@ RCS_ID("$Id$")
}
return sqlString;
*/
}
- (EOQualifier *)schemaBasedQualifierWithRootEntity: (EOEntity *)entity

View file

@ -155,23 +155,52 @@ RCS_ID("$Id$")
return [self notImplemented: _cmd]; //TODO
}
- (void) _addBindingsToDictionary: (id)param0
- (void) _addBindingsToDictionary: (NSMutableDictionary*)dictionary
{
[self notImplemented: _cmd]; //TODO
int i=0;
int count=[_qualifiers count];
for(i=0;i<count;i++)
[[_qualifiers objectAtIndex:i]_addBindingsToDictionary:dictionary];
}
- (EOQualifier *) qualifierWithBindings: (NSDictionary *)bindings
requiresAllVariables: (BOOL)requiresAllVariables
{
//Ayers: Review
EOQualifier* resultQualifier = nil;
int i = 0;
int count = [_qualifiers count];
NSMutableArray* newQualifiers = nil;
EOFLOGObjectLevelArgs(@"EOQualifier", @"bindings=%@", bindings);
if ([bindings count] > 0)
for(i=0; i<count; i++)
{
NSEmitTODO();
return [self notImplemented: _cmd]; //TODO
EOQualifier* qualifier = [_qualifiers objectAtIndex:i];
EOQualifier* newQualifier
= [qualifier qualifierWithBindings: bindings
requiresAllVariables: requiresAllVariables];
if (newQualifier)
{
if (!newQualifiers)
{
newQualifiers=(NSMutableArray*)[NSMutableArray array];
}
[newQualifiers addObject: newQualifier];
}
}
else
return self;
if ([newQualifiers count] > 0)
{
if ([newQualifiers count] == 1)
{
resultQualifier=[newQualifiers lastObject];
}
else
{
resultQualifier
=[[self class] qualifierWithQualifierArray:newQualifiers];
}
}
return resultQualifier;
}
- (id) initWithKeyValueUnarchiver: (id)param0
@ -184,9 +213,17 @@ RCS_ID("$Id$")
[self notImplemented: _cmd]; //TODO
}
- (id) validateKeysWithRootClassDescription: (id)param0
- (NSException *) validateKeysWithRootClassDescription:(EOClassDescription*)classDescription
{
return [self notImplemented: _cmd]; //TODO
//Ayers: Review
int i = 0;
int count = [_qualifiers count];
for(i=0; i<count; i++)
{
[[_qualifiers objectAtIndex:i]
validateKeysWithRootClassDescription:classDescription];
}
return nil;//TODO
}
- (id) description

View file

@ -42,6 +42,7 @@ RCS_ID("$Id$")
#include <Foundation/NSString.h>
#include <Foundation/NSDictionary.h>
#include <Foundation/NSObjCRuntime.h>
#include <Foundation/NSException.h>
#else
#include <Foundation/Foundation.h>
#endif
@ -69,6 +70,12 @@ RCS_ID("$Id$")
- (NSComparisonResult)compare: (id)other;
@end
@interface EOQualifier (Privat)
- (void) _addBindingsToDictionary: (NSMutableDictionary*)dictionary;
- (NSException *)_validateKey: (NSString*)key
withRootClassDescription: (EOClassDescription *)classDescription;
@end
@implementation EOKeyValueQualifier
/**
@ -254,38 +261,39 @@ RCS_ID("$Id$")
}
- (id) validateKeysWithRootClassDescription: (id)param0
- (NSException *)validateKeysWithRootClassDescription:(EOClassDescription*)classDescription
{
return [self notImplemented: _cmd]; //TODO
}
- (id) initWithKeyValueUnarchiver: (id)param0
{
return [self notImplemented: _cmd]; //TODO
}
- (void) encodeWithKeyValueArchiver: (id)param0
{
[self notImplemented: _cmd]; //TODO
}
- (void) _addBindingsToDictionary: (id)param0
{
[self notImplemented: _cmd]; //TODO
return [self _validateKey:_key
withRootClassDescription:classDescription];
}
- (EOQualifier *) qualifierWithBindings: (NSDictionary*)bindings
requiresAllVariables: (BOOL)requiresAllVariables
{
EOQualifier* qualifier=nil;
EOFLOGObjectLevelArgs(@"EOQualifier", @"bindings=%@", bindings);
if ([bindings count] > 0)
if ([_value isKindOfClass:[EOQualifierVariable class]])
{
NSEmitTODO();
return [self notImplemented: _cmd]; //TODO
}
else
return self;
id value=[bindings valueForKeyPath:[(EOQualifierVariable*)_value key]];
if (value)
qualifier=[EOKeyValueQualifier qualifierWithKey:_key
operatorSelector:_selector
value:value];
else if (requiresAllVariables)
{
[NSException raise: EOQualifierVariableSubstitutionException
format: @"%@ -- %@ 0x%x: Value for '%@' not found in binding resolution",
NSStringFromSelector(_cmd),
NSStringFromClass([self class]),
self,
_key];
};
}
else
qualifier=self;
return qualifier;
}
- (EOQualifier *) qualifierMigratedFromEntity: (id)param0
@ -294,6 +302,17 @@ RCS_ID("$Id$")
return [self notImplemented: _cmd]; //TODO
}
@end
@implementation EOKeyValueQualifier (Privat)
- (void) _addBindingsToDictionary: (NSMutableDictionary*)dictionary
{
if ([_value isKindOfClass:[EOQualifierVariable class]])
[dictionary setObject:[(EOQualifierVariable*)_value key]
forKey:_key];
}
@end
@implementation EOKeyValueQualifier (EOKeyValueArchiving)
@ -318,9 +337,15 @@ RCS_ID("$Id$")
return self;
}
- (void) encodeWithKeyValueArchiver: (EOKeyValueUnarchiver*)archiver
- (void) encodeWithKeyValueArchiver: (EOKeyValueArchiver*)archiver
{
[self notImplemented: _cmd];
NSString* selectorName=NSStringFromSelector(_selector);
[archiver encodeObject:_key
forKey:@"key"];
[archiver encodeObject:selectorName
forKey:@"selectorName"];
[archiver encodeObject:_value
forKey:@"value"];
}
@end

View file

@ -49,6 +49,9 @@ RCS_ID("$Id$")
#include <EOControl/EOQualifier.h>
@interface EOQualifier (Privat)
- (void) _addBindingsToDictionary: (NSMutableDictionary*)dictionary;
@end
@implementation EONotQualifier
@ -92,4 +95,28 @@ RCS_ID("$Id$")
return ([_qualifier evaluateWithObject: object] ? NO : YES);
}
- (NSException *) validateKeysWithRootClassDescription:(EOClassDescription*)classDescription
{
return [_qualifier validateKeysWithRootClassDescription:classDescription];
}
- (EOQualifier *) qualifierWithBindings: (NSDictionary *)bindings
requiresAllVariables: (BOOL)requiresAllVariables
{
EOQualifier* resultQualifier
= [_qualifier qualifierWithBindings: bindings
requiresAllVariables: requiresAllVariables];
if (resultQualifier==_qualifier)
resultQualifier=self;
else if (resultQualifier)
resultQualifier=[[self class]qualifierWithQualifier:resultQualifier];
return resultQualifier;
}
- (void) _addBindingsToDictionary: (NSMutableDictionary*)dictionary
{
[_qualifier _addBindingsToDictionary:dictionary];
}
@end

View file

@ -152,23 +152,43 @@ RCS_ID("$Id$")
return [self notImplemented: _cmd]; //TODO
}
- (void) _addBindingsToDictionary: (id)param0
- (void) _addBindingsToDictionary: (NSMutableDictionary*)dictionary
{
[self notImplemented: _cmd]; //TODO
int i=0;
int count=[_qualifiers count];
for(i=0;i<count;i++)
[[_qualifiers objectAtIndex:i]_addBindingsToDictionary:dictionary];
}
- (EOQualifier *) qualifierWithBindings: (NSDictionary *)bindings
requiresAllVariables: (BOOL)requiresAllVariables
{
EOQualifier* resultQualifier=nil;
int i=0;
int count=[_qualifiers count];
NSMutableArray* newQualifiers=nil;
EOFLOGObjectLevelArgs(@"EOQualifier", @"bindings=%@", bindings);
if ([bindings count] > 0)
for(i=0;i<count;i++)
{
NSEmitTODO();
return [self notImplemented: _cmd]; //TODO
}
else
return self;
EOQualifier* qualifier=[_qualifiers objectAtIndex:i];
EOQualifier* newQualifier=[qualifier qualifierWithBindings:bindings
requiresAllVariables:requiresAllVariables];
if (newQualifier)
{
if (!newQualifiers)
newQualifiers=(NSMutableArray*)[NSMutableArray array];
[newQualifiers addObject:newQualifier];
};
};
if ([newQualifiers count]>0)
{
if ([newQualifiers count]==1)
resultQualifier=[newQualifiers lastObject];
else
resultQualifier=[[self class]qualifierWithQualifierArray:newQualifiers];
};
return resultQualifier;
}
- (id) initWithKeyValueUnarchiver: (id)param0
@ -181,9 +201,14 @@ RCS_ID("$Id$")
[self notImplemented: _cmd]; //TODO
}
- (id) validateKeysWithRootClassDescription: (id)param0
- (NSException *) validateKeysWithRootClassDescription:(EOClassDescription*)classDescription
{
return [self notImplemented: _cmd]; //TODO
int i=0;
int count=[_qualifiers count];
for(i=0;i<count;i++)
[[_qualifiers objectAtIndex:i]validateKeysWithRootClassDescription:classDescription];
//TODO
return nil;
}
- (id) description

View file

@ -58,9 +58,13 @@ RCS_ID("$Id$")
#include <EOControl/EOQualifier.h>
#include <EOControl/EONSAddOns.h>
#include <EOControl/EODebug.h>
#include <EOControl/EOClassDescription.h>
#include <GNUstepBase/GSObjCRuntime.h>
NSString *EOQualifierVariableSubstitutionException=@"EOQualifierVariableSubstitutionException";
@implementation NSNumber (EOQualifierExtras)
- (id)initWithString: (NSString *)string
@ -88,6 +92,12 @@ RCS_ID("$Id$")
}
@end
@interface EOQualifier (Privat)
- (void) _addBindingsToDictionary: (NSMutableDictionary*)dictionary;
- (id) _qualifierMigratedToSubEntity: (id)param0
fromParentEntity: (id)param1;
@end
@implementation EOQualifier
/**
@ -676,9 +686,52 @@ static Class whichQualifier(const char **cFormat, const char **s)
return [EOOrQualifier qualifierWithQualifierArray: array];
}
- (NSException *)validateKeysWithRootClassDescription: (EOClassDescription *)classDesc
- (NSException *)_validateKey:(NSString*)key
withRootClassDescription: (EOClassDescription *)classDescription
{
return [self notImplemented: _cmd]; //TODO
if (!key)
[NSException raise: NSInvalidArgumentException
format: @"%@ -- %@ 0x%x: nil key",
NSStringFromSelector(_cmd),
NSStringFromClass([self class]),
self];
else
{
NSArray* keyParts = [key componentsSeparatedByString:@"."];
int keyPartsCount=[keyParts count];
int i = 0;
BOOL stop=NO;
for(i=0;i<keyPartsCount && !stop; i++)
{
NSString* keyPart = [keyParts objectAtIndex:i];
NSArray* attributeKeys = [classDescription attributeKeys];
if ([attributeKeys containsObject:keyPart])
{
stop=(i!=(keyPartsCount-1));
}
else
{
classDescription = [classDescription classDescriptionForDestinationKey:keyPart];
stop=(classDescription==nil);
};
};
if (stop)
{
[NSException raise: NSInternalInconsistencyException
format: @"%@ -- %@ 0x%x: invalid key '%@'",
NSStringFromSelector(_cmd),
NSStringFromClass([self class]),
key];
} ;
};
//TODO
return nil;
};
- (NSException *)validateKeysWithRootClassDescription: (EOClassDescription *)classDescription
{
return [self subclassResponsibility: _cmd];
}
+ (NSArray *)allQualifierOperators
@ -774,16 +827,15 @@ static Class whichQualifier(const char **cFormat, const char **s)
- (EOQualifier *)qualifierWithBindings: (NSDictionary *)bindings
requiresAllVariables: (BOOL)requiresAll
{
// TODO
[self notImplemented: _cmd];
return nil;
return [self subclassResponsibility: _cmd];
}
/** Returns binding keys **/
- (NSArray *)bindingKeys
{
// TODO
[self notImplemented: _cmd];
return nil;
NSMutableDictionary* bindings = (NSMutableDictionary*)[NSMutableDictionary dictionary];
[self _addBindingsToDictionary:bindings];
return [bindings allKeys];
}
//NO
@ -795,14 +847,9 @@ static Class whichQualifier(const char **cFormat, const char **s)
- (NSString *)keyPathForBindingKey: (NSString *)key
{
// TODO
[self notImplemented: _cmd];
return nil;
}
- (void) _addBindingsToDictionary: (id)param0
{
[self notImplemented: _cmd]; //TODO
NSMutableDictionary* bindings = (NSMutableDictionary*)[NSMutableDictionary dictionary];
[self _addBindingsToDictionary:bindings];
return [bindings objectForKey:key];
}
- (EOQualifier *)qualifierMigratedFromEntity: (EOEntity *)entity
@ -811,16 +858,25 @@ static Class whichQualifier(const char **cFormat, const char **s)
return [self notImplemented: _cmd]; //TODO
}
- (BOOL) usesDistinct
{
[self notImplemented: _cmd]; //TODO
return NO;
}
@end
@implementation EOQualifier (Privat)
- (id) _qualifierMigratedToSubEntity: (id)param0
fromParentEntity: (id)param1
{
return [self notImplemented: _cmd]; //TODO
}
- (BOOL) usesDistinct
- (void) _addBindingsToDictionary: (NSMutableDictionary*)dictionary
{
[self notImplemented: _cmd]; //TODO
return NO;
}
@end
@ -996,7 +1052,7 @@ _isLike (NSString *self, NSString *regExpr, BOOL isCaseSensative)
if ([regExScanner scanCharactersFromSet: isLikeWildCardSet
intoString: &scanned])
{
char *cScanned;
const char *cScanned;
for (cScanned = [scanned cString]; *cScanned != 0; cScanned++)
{