diff options
Diffstat (limited to 'CMMCPConnection.m')
-rw-r--r-- | CMMCPConnection.m | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/CMMCPConnection.m b/CMMCPConnection.m deleted file mode 100644 index 8d4e2673..00000000 --- a/CMMCPConnection.m +++ /dev/null @@ -1,207 +0,0 @@ -// -// CMMCPConnection.m -// sequel-pro -// -// Created by lorenz textor (lorenz@textor.ch) on Wed Sept 21 2005. -// Copyright (c) 2002-2003 Lorenz Textor. 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/> -// Or mail to <lorenz@textor.ch> - -#import "CMMCPConnection.h" - - -@implementation CMMCPConnection - -/* -Gets a proper NSStringEncoding according to the given MySQL charset. - -MySQL 4.0 offers this charsets: -big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin1 latin1_de latin2 latin5 sjis swe7 tis620 ujis usa7 win1250 win1251ukr - -WARNING : incomplete implementation. Please, send your fixes. - -+ (NSStringEncoding) encodingForMySQLEncoding:(const char *) mysqlEncoding -{ - // unicode - if (!strncmp(mysqlEncoding, "utf8", 4)) { - return NSUTF8StringEncoding; - } - if (!strncmp(mysqlEncoding, "ucs2", 4)) { - return NSUnicodeStringEncoding; - } - // west european - if (!strncmp(mysqlEncoding, "ascii", 5)) { - return NSASCIIStringEncoding; - } - if (!strncmp(mysqlEncoding, "latin1", 6)) { - return NSISOLatin1StringEncoding; - } - if (!strncmp(mysqlEncoding, "macroman", 8)) { - return NSMacOSRomanStringEncoding; - } - // central european - if (!strncmp(mysqlEncoding, "cp1250", 6)) { - return NSWindowsCP1250StringEncoding; - } - if (!strncmp(mysqlEncoding, "latin2", 6)) { - return NSISOLatin2StringEncoding; - } - // south european and middle east - if (!strncmp(mysqlEncoding, "cp1256", 6)) { - return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsArabic); - } - if (!strncmp(mysqlEncoding, "greek", 5)) { - return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatinGreek); - } - if (!strncmp(mysqlEncoding, "hebrew", 6)) { - CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatinHebrew); - } - if (!strncmp(mysqlEncoding, "latin5", 6)) { - return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatin5); - } - // baltic - if (!strncmp(mysqlEncoding, "cp1257", 6)) { - return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsBalticRim); - } - // cyrillic - if (!strncmp(mysqlEncoding, "cp1251", 6)) { - return NSWindowsCP1251StringEncoding; - } - // asian - if (!strncmp(mysqlEncoding, "big5", 4)) { - return CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingBig5); - } - if (!strncmp(mysqlEncoding, "ujis", 4)) { - return NSJapaneseEUCStringEncoding; - } - if (!strncmp(mysqlEncoding, "sjis", 4)) { - return NSShiftJISStringEncoding; - } - - // default to iso latin 1, even if it is not exact (throw an exception?) - NSLog(@"warning: unknown encoding %s! falling back to latin1.", mysqlEncoding); - return NSISOLatin1StringEncoding; -} -*/ - - -/* - modified version of queryString to be used in sequel-pro - */ -- (CMMCPResult *)queryString:(NSString *) query -{ - CMMCPResult *theResult; - const char *theCQuery = [self cStringFromString:query]; - int theQueryCode; - - // check connection - if (![self checkConnection]) { - NSLog(@"Connection was gone, but should be reestablished now!"); - } - - // inform the delegate about the query - if (delegate && [delegate respondsToSelector:@selector(willQueryString:)]) { - [delegate willQueryString:query]; - } - - if (0 == (theQueryCode = mysql_query(mConnection, theCQuery))) { - if (mysql_field_count(mConnection) != 0) { - // use CMMCPResult instad of MCPResult - theResult = [[CMMCPResult alloc] initWithMySQLPtr:mConnection encoding:mEncoding timeZone:mTimeZone]; - } else { - return nil; - } - } else { -// NSLog (@"Problem in queryString error code is : %d, query is : %s -in ObjC : %@-\n", theQueryCode, theCQuery, query); -// NSLog(@"Error message is : %@\n", [self getLastErrorMessage]); -// theResult = [theResult init]; // Old version... -// theResult = nil; - - // inform the delegate about errors - if (delegate && [delegate respondsToSelector:@selector(queryGaveError:)]) { - [delegate queryGaveError:[self getLastErrorMessage]]; - } - - return nil; - } - return [theResult autorelease]; -} - -- (void)setDelegate:(id)object -{ - delegate = object; -} - -/* Getting the currently used time zone (in communication with the DB server). */ -/* fixes mysql 4.1.14 problem, can be deleted as soon as fixed in the framework */ -- (NSTimeZone *)timeZone -{ - if ([self checkConnection]) { - MCPResult *theSessionTZ = [self queryString:@"SHOW VARIABLES LIKE '%time_zone'"]; - NSArray *theRow; - id theTZName; - NSTimeZone *theTZ; - - [theSessionTZ dataSeek:1ULL]; - theRow = [theSessionTZ fetchRowAsArray]; - theTZName = [theRow objectAtIndex:1]; - - if ( [theTZName isKindOfClass:[NSData class]] ) { - // MySQL 4.1.14 returns the mysql variables as NSData - theTZName = [self stringWithText:theTZName]; - } - - if ([theTZName isEqualToString:@"SYSTEM"]) { - [theSessionTZ dataSeek:0ULL]; - theRow = [theSessionTZ fetchRowAsArray]; - theTZName = [theRow objectAtIndex:1]; - - if ( [theTZName isKindOfClass:[NSData class]] ) { - // MySQL 4.1.14 returns the mysql variables as NSData - theTZName = [self stringWithText:theTZName]; - } - } - - if (theTZName) { // Old versions of the server does not support there own time zone ? - theTZ = [NSTimeZone timeZoneWithName:theTZName]; - } else { - // By default set the time zone to the local one.. - // Try to get the name using the previously available variable: - theSessionTZ = [self queryString:@"SHOW VARIABLES LIKE 'timezone'"]; - [theSessionTZ dataSeek:0ULL]; - theRow = [theSessionTZ fetchRowAsArray]; - theTZName = [theRow objectAtIndex:1]; - if (theTZName) { - // Finally we found one ... - theTZ = [NSTimeZone timeZoneWithName:theTZName]; - } else { - theTZ = [NSTimeZone defaultTimeZone]; - //theTZ = [NSTimeZone systemTimeZone]; - NSLog(@"The time zone is not defined on the server, set it to the default one : %@", theTZ); - } - } - - if (theTZ != mTimeZone) { - [mTimeZone release]; - mTimeZone = [theTZ retain]; - } - } - return mTimeZone; -} - -@end |