libs-gdl2/EOAccess/EORelationship.h
Manuel Guesdon 04d6bb3aac * EOAccess/EOAdaptorChannel.m
call delegate -adaptorChannel:willPerformOperations:
	* EOAccess/EODatabaseContext.m:
	  propagate delegate to channel
	  fix objectsForSourceGlobalID:relationshipName:editingContext: 
	    isToManyToOne case
	* EOAdaptors/PostgreSQLAdaptor/PostgreSQLChannel.m:
	  call delegate methods
	  adding assert to catch bad dates
	  use adaptor -primaryKeySequenceNameFormat
	* EOAccess/EOrelationship.m
	  implement -isParentRelationship
	  verify/clean -isReciprocalToRelationship:
	  implement -qualifierWithSourceRow:
	  small fix on -removeJoin:
	  use batch faulting when -setNumberOfToManyFaultsToBatchFetch:
	  improve -setIsMandatory
	  fix exception message -validateValue:
	  clean -_intermediateAttributes
	  clean -isMultiHop
	  implement -primaryKeyForTargetRowFromSourceDBSnapshot:
	  implement -_setSourceToDestinationKeyMap:
	  implement -qualifierForDBSnapshot:
	  fix/implement -isToManyToOne
	  fix -foreignKeyInDestination
	  implement -isPropagatesPrimaryKeyPossible
	  implement -qualifierOmittingAuxiliaryQualifierWithSourceRow
	  implement -auxiliaryQualifier
	  implement -setAuxiliaryQualifier:
	  clean -_sourceRowToForeignKeyMapping
	  add comment in -_sourceAttributeNames
	  fix -joinForAttribute:
	  fix -_flushCache
	  fix -_stringFromDeleteRule:
	  implement -_rightSideKeyMap
	  implement -_leftSideKeyMap
	  implement -_substitutionRelationshipForRow:
	  fix -isFlattened
	  remove _componentRelationships
	* EOAccess/EORelationship.h
	  remove _componentRelationships
	* EOAccess/EOEntityPriv.[hm]
	  fix _hiddenRelationships return type
	* EOAccess/Entity.m:
	  implement -_mapAttribute:toDestinationAttributeInLastComponentOfRelationshipPath:
	  implement -_inverseRelationshipPathForPath:
	  implement -_relationshipPathHasIdenticalKeys:
	  rewrite & fix -_keyMapForRelationshipPath:
	  rewrite & fix -_keyMapForIdenticalKeyRelationshipPath:
	  implement -valueForSQLExpression:
	  fix -validateObjectForDelete:
	  implement -qualifierForDBSnapshot:
	  fix -_addAttributesToFetchForRelationshipPath:atts:
	  fix -_parsePropertyName:	
	  implement -fetchSpecificationNamed:
	  implement +externalNameForInternalName:separatorString:useAllCaps:
	  implement +nameForExternalName:separatorString:initialCaps:
	  implement -stringByMarkingUpcaseTransitionsWithDelimiter
	  implement -snapshotKeyForAttributeName:
	  implement -_flattenedAttNameToSnapshotKeyMapping
	  fix -_attributesToFetch
	  fix -_attributesToSave
	* EOAccess/Entity.h:
	  fix _inverseRelationshipPathForPath:
	  fix -_relationshipPathHasIdenticalKey:
	  add _flgas.isSingleTableEntity
	* EOAccess/EntityPriv.h:
	  fix -qualifierForDBSnapshot:
	* EOAccess/EOPrivate.[hm]
	  add GDL2_EORelationshipClass
	  add GDL2_EOEntityClass
	* EOAccess/EOModel.m:
	  cache [EOEntity class]
	  add -propertyListForEntity:name: to enable subclassing
	* EOAccess/EOAttribute.m
	  fix -isFlattened
	  implement -targetAttribute
	  implement -relationshipPath
	  fix -_setDefinitionWithoutFlushingCaches:
	  fix -_normalizeDefinition:path:
	  fix -isReadOnly
	  implement -_setOverrideForKeyEnum:
	  implement -_hasAnyOverrides
	  implement -_isKeyEnumOverriden:
	  implement -_prototypeKeys
	  fix -initWithPropertyList:owner:
	  fix -readFormat
	  fix -writeFormat
	  fix -scale
	  fix -precision
	  fix -width
	  fix -allowsNull
	  fix -isReadOnly
	  fix -valueClassName
	  fix -externalType
	  fix -valueType
	  implement -_setValuesFromTargetAttribute
	* EOAccess/EOAttribute.h
	  declare -targetAttribute
	  declare -relationshipPath
	* EOAccess/EOAttributePriv.h
	  declare EOAttributeProtoOverrideBits enum
	  fix method arguments
	  declare  _setValuesFromTargetAttribute()
	* EOAccess/EOExpressionArray.h
	  declare -_isPropertyPath
	* EOAccess/EOExpressionArray.m
	  implement -_isPropertyPath



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@37813 72102866-910b-0410-8b05-ffd578937521
2014-04-26 18:23:22 +00:00

222 lines
6 KiB
Objective-C

/* -*-objc-*-
EORelationship.h
Copyright (C) 2000,2002,2003,2004,2005 Free Software Foundation, Inc.
Author: Mirko Viviani <mirko.viviani@gmail.com>
Date: February 2000
This file is part of the GNUstep Database Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef __EORelationship_h__
#define __EORelationship_h__
#include <EOControl/EOClassDescription.h>
#include <EOAccess/EOJoin.h>
#include <EOAccess/EOPropertyListEncoding.h>
@class NSString;
@class NSArray;
@class NSMutableArray;
@class NSDictionary;
@class NSMutableDictionary;
@class NSException;
@class EOEntity;
@class EOAttribute;
@class EOExpressionArray;
@class EOMutableKnownKeyDictionary;
@class EOMKKDSubsetMapping;
@class EOQualifier;
typedef enum {
EOInnerJoin = 0,
EOFullOuterJoin,
EOLeftOuterJoin,
EORightOuterJoin
} EOJoinSemantic;
@interface EORelationship : NSObject <EOPropertyListEncoding>
{
NSString *_name;
EOQualifier *_qualifier;
NSMutableDictionary *_sourceNames;
NSMutableDictionary *_destinationNames;
NSDictionary *_userInfo;
NSDictionary *_internalInfo;
NSString *_docComment;
NSDictionary *_sourceToDestinationKeyMap;
unsigned int _batchCount;
EOJoinSemantic _joinSemantic;
struct {
unsigned int isToMany:1;
unsigned int useBatchFaulting:1;
unsigned int deleteRule:2;
unsigned int isMandatory:1;
unsigned int ownsDestination:1;
unsigned int propagatesPrimaryKey:1;
unsigned int unused:1;
unsigned int isBidirectional:1;
unsigned int extraRefCount:23;
} _flags;
id _sourceRowToForeignKeyMapping;
/* Garbage collectable objects */
EOExpressionArray *_definitionArray;
EORelationship *_inverseRelationship;
EORelationship *_hiddenInverseRelationship;
EOEntity *_entity; // unretained
EOEntity *_destination; // unretained
NSMutableArray *_joins;
/* Computed values */
NSArray *_sourceAttributes;
NSArray *_destinationAttributes;
}
+ (id)relationshipWithPropertyList: (NSDictionary *)propertyList
owner: (id)owner;
- (NSString *)name;
- (EOEntity *)entity;
- (EOEntity *)destinationEntity;
- (NSString *)definition;
- (BOOL)isFlattened;
- (BOOL)isToMany;
- (BOOL)isCompound;
- (BOOL)isParentRelationship;
- (NSArray *)sourceAttributes;
- (NSArray *)destinationAttributes;
- (NSArray *)joins;
- (EOJoinSemantic)joinSemantic;
- (NSString *)joinSemanticString;
- (NSArray *)componentRelationships;
- (NSDictionary *)userInfo;
- (BOOL)referencesProperty: (id)property;
- (EODeleteRule)deleteRule;
- (BOOL)isMandatory;
- (BOOL)propagatesPrimaryKey;
- (BOOL)isBidirectional;
- (EORelationship *)hiddenInverseRelationship;
- (EORelationship *)inverseRelationship;
- (EORelationship *)anyInverseRelationship;
- (unsigned int)numberOfToManyFaultsToBatchFetch;
- (BOOL)ownsDestination;
- (EOQualifier *)qualifierWithSourceRow: (NSDictionary *)sourceRow;
/** Accessing documentation comments **/
- (NSString *)docComment;
@end
@interface EORelationship(EORelationshipEditing)
- (NSException *)validateName: (NSString *)name;
- (void)setName: (NSString *)name;
- (void)setDefinition: (NSString *)definition;
- (void)setEntity: (EOEntity *)entity;
- (void)setToMany: (BOOL)flag;
- (void)setPropagatesPrimaryKey: (BOOL)flag;
- (void)setIsBidirectional: (BOOL)flag;
- (void)setOwnsDestination: (BOOL)flag;
- (void)addJoin: (EOJoin *)join;
- (void)removeJoin: (EOJoin *)join;
- (void)setJoinSemantic: (EOJoinSemantic)joinSemantic;
- (void)setUserInfo: (NSDictionary *)dictionary;
- (void)setInternalInfo: (NSDictionary *)dictionary;
- (void)beautifyName;
- (void)setNumberOfToManyFaultsToBatchFetch: (unsigned int)size;
- (void)setDeleteRule: (EODeleteRule)deleteRule;
- (void)setIsMandatory: (BOOL)isMandatory;
- (void)setDocComment: (NSString *)docComment;
@end
@interface EORelationship(EORelationshipValueMapping)
- (NSException *)validateValue: (id *)valueP;
@end
@interface EORelationship (EORelationshipXX)
- (NSArray *)_intermediateAttributes;
- (EORelationship *)lastRelationship;
- (EORelationship *)firstRelationship;
- (EOEntity*) intermediateEntity;
- (BOOL)isMultiHop;
- (void)_setSourceToDestinationKeyMap:(NSDictionary *)sourceToDestinationKeyMap;
- (EOQualifier*)qualifierForDBSnapshot:(NSDictionary *)dbSnapshot;
- (NSDictionary *)primaryKeyForTargetRowFromSourceDBSnapshot:(NSDictionary *)dbSnapshot;
- (NSString *)relationshipPath;
- (BOOL)isToManyToOne;
- (NSDictionary *)_sourceToDestinationKeyMap;
- (BOOL)foreignKeyInDestination;
@end
@interface EORelationship (EORelationshipPrivate2)
- (BOOL)isPropagatesPrimaryKeyPossible;
- (EOQualifier*)qualifierOmittingAuxiliaryQualifierWithSourceRow: (NSDictionary *)row;
- (EOQualifier*)auxiliaryQualifier;
- (void)setAuxiliaryQualifier: (EOQualifier*)qualifier;
- (EOMutableKnownKeyDictionary *)_foreignKeyForSourceRow: (NSDictionary *)row;
- (EOMKKDSubsetMapping *)_sourceRowToForeignKeyMapping;
- (NSArray *)_sourceAttributeNames;
- (EOJoin *)joinForAttribute: (EOAttribute *)attribute;
- (void)_flushCache;
- (EOExpressionArray *)_definitionArray;
- (NSString *)_stringFromDeleteRule: (EODeleteRule)deleteRule;
- (EODeleteRule)_deleteRuleFromString: (NSString *)deleteRuleString;
- (NSDictionary *)_rightSideKeyMap;
- (NSDictionary *)_leftSideKeyMap;
- (EORelationship *)_substitutionRelationshipForRow: (NSDictionary *)row;
- (void)_joinsChanged;
@end
#endif /* __EORelationship_h__ */