// // $Id$ // // MCPAttribute.h // MCPKit // // Created by Serge Cohen (serge.cohen@m4x.org) on 09/08/04. // Copyright (c) 2004 Serge Cohen. All rights reserved. // // Forked by the Sequel Pro team (sequelpro.com), April 2009 // // This program 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 // (at your option) any later version. // // This program 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. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // More info at <http://mysql-cocoa.sourceforge.net/> // More info at <http://code.google.com/p/sequel-pro/> #import <Foundation/Foundation.h> @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) NSUInteger 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 } #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:(NSUInteger) 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:(NSUInteger) index; - (void) removeObjectFromJoinsAtIndex:(NSUInteger) 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; - (NSUInteger) width; - (BOOL) allowsNull; - (BOOL) autoGenerated; - (BOOL) isPartOfKey; - (BOOL) isPartOfIdentity; - (BOOL) hasAccessor; - (id) defaultValue; - (NSUInteger) countOfJoins; - (MCPJoin *) objectInJoinsAtIndex:(NSUInteger) index; - (NSUInteger) indexOfJoinIdenticalTo:(id) iJoin; #pragma mark Some general methods: - (BOOL) isEqual:(id) iObject; @end