Re: Opposite of EOQualifierSQLGeneration.Support.qualifierMigratedFromEntityRelationshipPath(EOQualifier, EOEntity, String)?
Re: Opposite of EOQualifierSQLGeneration.Support.qualifierMigratedFromEntityRelationshipPath(EOQualifier, EOEntity, String)?
- Subject: Re: Opposite of EOQualifierSQLGeneration.Support.qualifierMigratedFromEntityRelationshipPath(EOQualifier, EOEntity, String)?
- From: Lachlan Deck <email@hidden>
- Date: Tue, 19 Feb 2008 07:53:44 +1100
Hi there,
On 19/02/2008, at 7:35 AM, Pierre Bernard wrote:
I am not really sure what you want to do, but chances are you will
find help here:
http://code.google.com/p/houdah-webobjects-frameworks/wiki/
QualifierAdditions
In the qualifier support classes (HoudahEOAccess framework) you
will find implementations of qualifier migration.
With a little luck, one of the qualifiers (probably
InSubQueryQualifier) can be used to do just what you want.
Thanks... for reminding me of your framework.
Yeah that'd probably work. i.e., an InSubQueryQualifier +
EONotQualifier(pkRelationship.destinationEntity().restrictingQualifier
()).
I ended up just doing the below for now. But I'll think about whether
the above would be more future proof.
Thanks.
On 18 Feb 2008, at 20:14, Lachlan Deck wrote:
I'm wondering if there's something akin to the above but that
allows migrating *to* some other entity (rather than from).
e.g., I'm wanting to 'and' the restricting qualifiers for the pk
relations of my join entities (dynamically) so that they are
likewise restricted.
Anything in either EOF or Wonder?
with regards,
--
Lachlan Deck
public static class QualifierMigrationSupport
{
private static String dottedKeyPath( String relationshipPath )
{
if ( relationshipPath == null || relationshipPath.length() == 0 ||
relationshipPath.lastIndexOf( '.' ) == relationshipPath.length() - 1 )
return relationshipPath;
return relationshipPath + '.';
}
private static String newKeyPath( String relPath, String origPath )
{
return dottedKeyPath( relPath ) + origPath;
}
public static EOQualifier
qualifierMigratedFromEntityToRelationshipPath( EOAndQualifier
qualifier, EOEntity entity, String relationshipPath )
{
NSArray qualifiers = qualifier.qualifiers();
int qualifiersCount = qualifiers.count();
NSMutableArray newQualifiers = new NSMutableArray( qualifiersCount );
for ( int i = qualifiersCount - 1; i >= 0; i-- )
newQualifiers
.addObject( qualifierMigratedFromEntityToRelationshipPath
( ( EOQualifier )qualifiers.objectAtIndex( i ), entity,
relationshipPath ) );
return new EOAndQualifier( newQualifiers );
}
public static EOQualifier
qualifierMigratedFromEntityToRelationshipPath
( EOKeyComparisonQualifier qualifier, EOEntity entity, String
relationshipPath )
{
String newLeftKey = newKeyPath( relationshipPath, qualifier.leftKey
() );
String newRightKey = newKeyPath( relationshipPath,
qualifier.rightKey() );
return new EOKeyComparisonQualifier( newLeftKey, qualifier.selector
(), newRightKey );
}
public static EOQualifier
qualifierMigratedFromEntityToRelationshipPath( EOKeyValueQualifier
qualifier, EOEntity entity, String relationshipPath )
{
return new EOKeyValueQualifier( newKeyPath( relationshipPath,
qualifier.key() ), qualifier.selector(), qualifier.value() );
}
public static EOQualifier
qualifierMigratedFromEntityToRelationshipPath( EONotQualifier
qualifier, EOEntity entity, String relationshipPath )
{
return new EONotQualifier
( qualifierMigratedFromEntityToRelationshipPath( qualifier.qualifier
(), entity, relationshipPath ) );
}
public static EOQualifier
qualifierMigratedFromEntityToRelationshipPath( EOOrQualifier
qualifier, EOEntity entity, String relationshipPath )
{
NSArray qualifiers = qualifier.qualifiers();
int qualifiersCount = qualifiers.count();
NSMutableArray newQualifiers = new NSMutableArray( qualifiersCount );
for ( int i = qualifiersCount - 1; i >= 0; i-- )
newQualifiers
.addObject( qualifierMigratedFromEntityToRelationshipPath
( ( EOQualifier )qualifiers.objectAtIndex( i ), entity,
relationshipPath ) );
return new EOOrQualifier( newQualifiers );
}
public static EOQualifier
qualifierMigratedFromEntityToRelationshipPath( EOQualifier qualifier,
EOEntity entity, String relationshipPath )
{
EOQualifier result = null;
if ( qualifier instanceof EOAndQualifier )
result = qualifierMigratedFromEntityToRelationshipPath
( ( EOAndQualifier )qualifier, entity, relationshipPath );
else if ( qualifier instanceof EOOrQualifier )
result = qualifierMigratedFromEntityToRelationshipPath
( ( EOOrQualifier )qualifier, entity, relationshipPath );
else if ( qualifier instanceof EOKeyValueQualifier )
result = qualifierMigratedFromEntityToRelationshipPath
( ( EOKeyValueQualifier )qualifier, entity, relationshipPath );
else if ( qualifier instanceof EONotQualifier )
result = qualifierMigratedFromEntityToRelationshipPath
( ( EONotQualifier )qualifier, entity, relationshipPath );
else if ( qualifier instanceof EOKeyComparisonQualifier )
result = qualifierMigratedFromEntityToRelationshipPath
( ( EOKeyComparisonQualifier )qualifier, entity, relationshipPath );
return result;
}
}
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden