diff options
author | stuconnolly <stuart02@gmail.com> | 2010-10-28 20:18:32 +0000 |
---|---|---|
committer | stuconnolly <stuart02@gmail.com> | 2010-10-28 20:18:32 +0000 |
commit | 886ee90ca1047fdef2c6bfd52ea28ffc0345aca4 (patch) | |
tree | 2dd9c8b694fe395c159e57f5c1b1338629bcb866 /Source/SPTableFieldValidation.m | |
parent | f48b5ba6410a5d449fad026e870e2c3e5e0fcf53 (diff) | |
download | sequelpro-886ee90ca1047fdef2c6bfd52ea28ffc0345aca4.tar.gz sequelpro-886ee90ca1047fdef2c6bfd52ea28ffc0345aca4.tar.bz2 sequelpro-886ee90ca1047fdef2c6bfd52ea28ffc0345aca4.zip |
Tidy up SPTableStructure including moving all the private field type validation methods to their own class, SPTableFieldValidation.
Diffstat (limited to 'Source/SPTableFieldValidation.m')
-rw-r--r-- | Source/SPTableFieldValidation.m | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/Source/SPTableFieldValidation.m b/Source/SPTableFieldValidation.m new file mode 100644 index 00000000..ceee9b3b --- /dev/null +++ b/Source/SPTableFieldValidation.m @@ -0,0 +1,142 @@ +// +// $Id$ +// +// SPTableFieldValidation.m +// sequel-pro +// +// Created by Stuart Connolly (stuconnolly.com) on October 28, 2010 +// Copyright (c) 2010 Stuart Connolly. All rights reserved. +// +// 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://code.google.com/p/sequel-pro/> + +#import "SPTableFieldValidation.h" + +@interface SPTableFieldValidation (PrivateAPI) + +- (NSString *)_formatType:(NSString *)type; + +@end + +@implementation SPTableFieldValidation + +@synthesize fieldTypes; + +#pragma mark - +#pragma mark Public API + +/** + * Returns whether or not the supplied field type is numeric according to it's position within the currnet + * field types array. + * + * @param fieldType The field type to test + */ +- (BOOL)isFieldTypeNumeric:(NSString *)fieldType +{ + NSString *type = [self _formatType:fieldType]; + + if (![fieldTypes containsObject:type]) return YES; + + return ([fieldTypes indexOfObject:type] < 17); +} + +/** + * Returns whether or not the supplied field type is a date according to it's position within the currnet + * field types array. + * + * @param fieldType The field type to test + */ +- (BOOL)isFieldTypeDate:(NSString *)fieldType +{ + NSString *type = [self _formatType:fieldType]; + + if (![fieldTypes containsObject:type]) return YES; + + return (([fieldTypes indexOfObject:type] > 32) && ([fieldTypes indexOfObject:type] < 38)); +} + +/** + * Returns whether or not the supplied field type is geometry according to it's position within the currnet + * field types array. + * + * @param fieldType The field type to test + */ +- (BOOL)isFieldTypeGeometry:(NSString *)fieldType +{ + NSString *type = [self _formatType:fieldType]; + + if (![fieldTypes containsObject:type]) return YES; + + return ([fieldTypes indexOfObject:type] > 38); +} + +/** + * Returns whether or not the supplied field type is a string according to it's position within the currnet + * field types array. + * + * @param fieldType The field type to test + */ +- (BOOL)isFieldTypeString:(NSString *)fieldType +{ + NSString *type = [self _formatType:fieldType]; + + if (![fieldTypes containsObject:type]) return YES; + + return (([fieldTypes indexOfObject:type] > 17) && ([fieldTypes indexOfObject:type] < 32)); +} + +/** + * Returns whether or not the supplied field type allows binary according to it's position within the currnet + * field types array. + * + * @param fieldType The field type to test + */ +- (BOOL)isFieldTypeAllowBinary:(NSString *)fieldType +{ + NSString *type = [self _formatType:fieldType]; + + if (![fieldTypes containsObject:type]) return YES; + + return (([fieldTypes indexOfObject:type] > 17) && ([fieldTypes indexOfObject:type] < 24)); +} + +#pragma mark - +#pragma mark Private API + +/** + * Formats, i.e. removes whitespace and newlines as well as uppercases the supplied field type string. + * + * @param type The field type string to format + */ +- (NSString *)_formatType:(NSString *)type +{ + return [[type stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; +} + +#pragma mark - +#pragma mark Other + +/** + * Dealloc. + */ +- (void)dealloc +{ + [fieldTypes release], fieldTypes = nil; + + [super dealloc]; +} + +@end |