From 05f1612cbb7e33cf9135a346fc2505cc0e87e853 Mon Sep 17 00:00:00 2001 From: rowanbeentje Date: Thu, 23 Feb 2012 02:13:56 +0000 Subject: Warning: this branch commit is largely untested, and known to throw exceptions as database structure retrieval is currently missing! Further work on SPMySQLFramework integration: - Improve SPMySQL framework build settings including correct ppc builds and a Distribution configuration for the build distributions to match - Add new convenience querying and result methods to the framework - Amend Sequel Pro source to use the new SPMySQL.framework methods everywhere, replacing MCPKit methods where they differ and improving some functions - Remove MCPKit from the source - Fix a number of warnings on Release-style builds --- Source/SPNavigatorController.m | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) (limited to 'Source/SPNavigatorController.m') diff --git a/Source/SPNavigatorController.m b/Source/SPNavigatorController.m index 30b47006..63c3ed51 100644 --- a/Source/SPNavigatorController.m +++ b/Source/SPNavigatorController.m @@ -33,6 +33,7 @@ #import "SPTooltip.h" #import "SPAppController.h" #import "SPDatabaseViewController.h" +#import "SPMySQL.h" #import #endif @@ -68,9 +69,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte @synchronized(self) { return [[self sharedNavigatorController] retain]; } -#ifdef SP_REFACTOR - return nil; // only here to stop clang's "can reach end of non-void function" -#endif + return nil; } - (id)init @@ -117,9 +116,8 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte [functionIcon release]; [fieldIcon release]; #endif -#ifdef SP_REFACTOR /* patch */ + [super dealloc]; -#endif } /** * The following base protocol methods are implemented to ensure the singleton status of this class. @@ -799,7 +797,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte [expandStatus2 removeObjectForKey:[[parentObject allKeysForObject:item] objectAtIndex:0]]; } -- (id)outlineView:(id)outlineView child:(NSInteger)index ofItem:(id)item +- (id)outlineView:(id)outlineView child:(NSInteger)childIndex ofItem:(id)item { if (item == nil) { @@ -822,7 +820,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte // No parent return the child by using the normal sort routine if(!parentObject || ![parentObject isKindOfClass:NSDictionaryClass]) - return [item objectForKey:NSArrayObjectAtIndex([allKeys sortedArrayUsingFunction:compareStrings context:nil],index)]; + return [item objectForKey:NSArrayObjectAtIndex([allKeys sortedArrayUsingFunction:compareStrings context:nil],childIndex)]; // Get the parent key name for storing id parentKeys = [parentObject allKeysForObject:item]; @@ -832,26 +830,26 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte // For safety reasons if(!itemRef) - return [item objectForKey:NSArrayObjectAtIndex([allKeys sortedArrayUsingFunction:compareStrings context:nil],index)]; + return [item objectForKey:NSArrayObjectAtIndex([allKeys sortedArrayUsingFunction:compareStrings context:nil],childIndex)]; // Not yet cached so do it if(![cachedSortedKeys objectForKey:itemRef]) [cachedSortedKeys setObject:[allKeys sortedArrayUsingFunction:compareStrings context:nil] forKey:itemRef]; - return [item objectForKey:NSArrayObjectAtIndex([cachedSortedKeys objectForKey:itemRef],index)]; + return [item objectForKey:NSArrayObjectAtIndex([cachedSortedKeys objectForKey:itemRef],childIndex)]; } // If something failed return the child by using the normal way - return [item objectForKey:NSArrayObjectAtIndex([allKeys sortedArrayUsingFunction:compareStrings context:nil],index)]; + return [item objectForKey:NSArrayObjectAtIndex([allKeys sortedArrayUsingFunction:compareStrings context:nil],childIndex)]; } else { - return [item objectForKey:NSArrayObjectAtIndex([allKeys sortedArrayUsingFunction:compareStrings context:nil],index)]; + return [item objectForKey:NSArrayObjectAtIndex([allKeys sortedArrayUsingFunction:compareStrings context:nil],childIndex)]; } } else if ([item isKindOfClass:[NSArray class]]) { - return NSArrayObjectAtIndex(item,index); + return NSArrayObjectAtIndex(item,childIndex); } return nil; @@ -1016,9 +1014,9 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte if(!parentObject) return 0; if([outlineView levelForItem:item] == 3 && [outlineView isExpandable:[outlineView itemAtRow:[outlineView rowForItem:item]-1]]) - return 5.0; + return 5.0f; - return 18.0; + return 18.0f; } - (BOOL)outlineView:(NSOutlineView *)outlineView shouldExpandItem:(id)item @@ -1163,7 +1161,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte - (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row { // Use first row as dummy to increase the distance between content and header - return (row == 0) ? 5.0 : 16.0; + return (row == 0) ? 5.0f : 16.0f; } - (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex @@ -1213,11 +1211,11 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte #pragma mark - #pragma mark others -- (NSString*)tableInfoLabelForIndex:(NSInteger)index ofType:(NSInteger)type +- (NSString*)tableInfoLabelForIndex:(NSInteger)anIndex ofType:(NSInteger)type { if(type == 0 || type == 1) // TABLE / VIEW - switch(index) { + switch(anIndex) { case 0: return NSLocalizedString(@"Type", @"type label (Navigator)"); case 1: @@ -1239,7 +1237,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte } if(type == 2) // PROCEDURE - switch(index) { + switch(anIndex) { case 0: return @"DTD Identifier"; case 1: @@ -1252,7 +1250,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte return @"Definer"; } if(type == 3) // FUNCTION - switch(index) { + switch(anIndex) { case 0: return NSLocalizedString(@"Return Type", @"return type label (Navigator)"); case 1: -- cgit v1.2.3 From 79eff5bf42154da8d7730e0e0159160f68ec4e16 Mon Sep 17 00:00:00 2001 From: rowanbeentje Date: Wed, 14 Mar 2012 01:16:18 +0000 Subject: =?UTF-8?q?Final=20feature=20work=20on=20the=20SPMySQL=20branch=20?= =?UTF-8?q?before=20merging:=20=20-=20Add=20a=20ping=20keepalive=20managin?= =?UTF-8?q?g=20object=20to=20prevent=20retain=20cycles=20from=20the=20NSTi?= =?UTF-8?q?mer=20=20-=20Add=20-[SPMySQLConnection=20copy]=20support=20=20-?= =?UTF-8?q?=20Refactor=20Hans-J=C3=B6rg=20Bibiko's=20database=20structure?= =?UTF-8?q?=20retrieval,=20moving=20it=20out=20of=20the=20MySQL=20framewor?= =?UTF-8?q?k=20and=20building=20it=20around=20a=20copy=20of=20the=20connec?= =?UTF-8?q?tion.=20=20This=20reduces=20the=20amount=20of=20connections-ove?= =?UTF-8?q?r-time=20used=20by=20Sequel=20Pro=20to=20two=20constant=20conne?= =?UTF-8?q?ctions=20(addressing=20Issue=20#1097)=20and=20improves=20robust?= =?UTF-8?q?ness.=20=20-=20Use=20the=20database=20structure=20retrieval=20c?= =?UTF-8?q?onnection=20for=20faster=20query=20cancellation=20without=20an?= =?UTF-8?q?=20extra=20connection=20required,=20if=20possible?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/SPNavigatorController.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'Source/SPNavigatorController.m') diff --git a/Source/SPNavigatorController.m b/Source/SPNavigatorController.m index 63c3ed51..2b27a598 100644 --- a/Source/SPNavigatorController.m +++ b/Source/SPNavigatorController.m @@ -34,6 +34,7 @@ #import "SPAppController.h" #import "SPDatabaseViewController.h" #import "SPMySQL.h" +#import "SPDatabaseStructure.h" #import #endif @@ -447,12 +448,12 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte [[schemaData objectForKey:connectionName] removeObjectForKey:db]; } } - id structureData = [theConnection getDbStructure]; + id structureData = [[doc databaseStructureRetrieval] structure]; if(structureData && [structureData objectForKey:connectionName] && [[structureData objectForKey:connectionName] isKindOfClass:NSDictionaryClass]) { for(id item in [[structureData objectForKey:connectionName] allKeys]) [[schemaData objectForKey:connectionName] setObject:[[structureData objectForKey:connectionName] objectForKey:item] forKey:item]; - NSArray *a = [theConnection getAllKeysOfDbStructure]; + NSArray *a = [[doc databaseStructureRetrieval] allStructureKeys]; if(a) [allSchemaKeys setObject:a forKey:connectionName]; } else { @@ -1063,7 +1064,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte NSUInteger i = 0; for(i=0; i<[selectedItem count]-2; i++) { NSString *item = NSArrayObjectAtIndex(selectedItem, i); - if(![item length]) continue; + if([item isNSNull] || ![item length]) continue; [infoArray addObject:[NSString stringWithFormat:@"%@: %@", [self tableInfoLabelForIndex:i ofType:0], [item stringByReplacingOccurrencesOfString:@"," withString:@", "]]]; -- cgit v1.2.3