// // MCPAttribute.h // MCPModeler // // Created by Serge Cohen (serge.cohen@m4x.org) on 09/08/04. // Copyright 2004 Serge Cohen. All rights reserved. // // This code is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2 of the License, or any later version. // // This code 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 General Public License for more // details. // // For a copy of the GNU General Public License, visit or // write to the Free Software Foundation, Inc., 59 Temple Place--Suite 330, // Boston, MA 02111-1307, USA. // // More info at // #import @class MCPModel; @class MCPClassDescription; @class MCPRelation; @class MCPJoin; @interface MCPAttribute : NSObject < NSCoding > { @protected MCPClassDescription *classDescription; // ClassDescription of which the attribute is attribute NSString *name; // Name of the attribute (Obj-C side) Class valueClass; // Class used by the attribute (or NULL if the internal type is not an object) NSString *internalType; // Name of the class, or type used for the class definition NSString *externalName; // Name of the corresponding column in the DB NSString *externalType; // Type used to store the attribute (in the DB) unsigned int width; // Width (for storing by the DB) BOOL allowsNull; // Attribute can be null BOOL autoGenerated; // Attribute is auto generated by the DB BOOL isPartOfKey; // Attribute is part of theprimary key of the class description BOOL isPartOfIdentity; // Attribute is part of the idclass description of the class description BOOL hasAccessor; // Does this attribute have an accessor id defaultValue; // Default value of the attribute NSMutableArray *joins; // An array of the joins using this attribute // NSMutableArray *relations; // An array of the relations (MCPRelation) that use this attribue as join } #pragma mark Class methods + (void) initialize; #pragma mark Life cycle - (id) initForClassDescription:(MCPClassDescription *) iClassDescription withName:(NSString *) iName; - (void) dealloc; #pragma mark NSCoding protocol - (id) initWithCoder:(NSCoder *) decoder; - (void) encodeWithCoder:(NSCoder *) encoder; #pragma mark Setters - (void) setName:(NSString *) iName; - (void) setValueClass:(Class) iValueClass; - (void) setInternalType:(NSString *) iInternalType; - (void) setExternalType:(NSString *) iExternalType; - (void) setExternalName:(NSString *) iExternalName; - (void) setWidth:(unsigned int) iWidth; - (void) setAllowsNull:(BOOL) iAllowsNull; - (void) setAutoGenerated:(BOOL) iAutoGenerated; - (void) setIsPartOfKey:(BOOL) iIsPartOfKey; - (void) setIsPartOfIdentity:(BOOL) iIsPartOfIdentity; - (void) setHasAccessor:(BOOL) iHasAccessor; - (void) setDefaultValue:(id) iDefaultValue; - (void) insertObject:(MCPJoin *) iJoin inJoinsAtIndex:(unsigned int) index; - (void) removeObjectFromJoinsAtIndex:(unsigned int) index; //- (void) addRelation:(MCPRelation *) iRelation; //- (void) removeRelation:(MCPRelation *) iRelation; #pragma mark Getters - (MCPClassDescription *) classDescription; - (NSString *) name; - (Class) valueClass; - (NSString *) valueClassName; - (NSString *) internalType; - (NSString *) externalName; - (NSString *) externalType; - (unsigned int) width; - (BOOL) allowsNull; - (BOOL) autoGenerated; - (BOOL) isPartOfKey; - (BOOL) isPartOfIdentity; - (BOOL) hasAccessor; - (id) defaultValue; - (unsigned int) countOfJoins; - (MCPJoin *) objectInJoinsAtIndex:(unsigned int) index; - (unsigned int) indexOfJoinIdenticalTo:(id) iJoin; #pragma mark Some general methods: - (BOOL) isEqual:(id) iObject; @end