aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPDataImport.m
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2012-02-23 02:13:56 +0000
committerrowanbeentje <rowan@beent.je>2012-02-23 02:13:56 +0000
commit05f1612cbb7e33cf9135a346fc2505cc0e87e853 (patch)
tree785824be4e44a61389271343d958851fa4ff7dd0 /Source/SPDataImport.m
parenta889340b9cb1eca0d3ff022e8e6e2c718480bf44 (diff)
downloadsequelpro-05f1612cbb7e33cf9135a346fc2505cc0e87e853.tar.gz
sequelpro-05f1612cbb7e33cf9135a346fc2505cc0e87e853.tar.bz2
sequelpro-05f1612cbb7e33cf9135a346fc2505cc0e87e853.zip
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
Diffstat (limited to 'Source/SPDataImport.m')
-rw-r--r--Source/SPDataImport.m46
1 files changed, 24 insertions, 22 deletions
diff --git a/Source/SPDataImport.m b/Source/SPDataImport.m
index 7f90eea7..e0917858 100644
--- a/Source/SPDataImport.m
+++ b/Source/SPDataImport.m
@@ -39,8 +39,8 @@
#import "SPFieldMapperController.h"
#import "SPFileHandle.h"
#import "SPEncodingPopupAccessory.h"
+#import "SPMySQL.h"
-#import <MCPKit/MCPKit.h>
#import <UniversalDetector/UniversalDetector.h>
#define SP_FILE_READ_ERROR_STRING NSLocalizedString(@"File read error", @"File read error title (Import Dialog)")
@@ -424,9 +424,9 @@
[fileEncodingDetector analyzeData:[detectorFileHandle readDataOfLength:2500000]];
sqlEncoding = [fileEncodingDetector encoding];
[fileEncodingDetector release];
- if ([MCPConnection mySQLEncodingForStringEncoding:sqlEncoding]) {
+ if ([SPMySQLConnection mySQLCharsetForStringEncoding:sqlEncoding]) {
connectionEncodingToRestore = [mySQLConnection encoding];
- [mySQLConnection queryString:[NSString stringWithFormat:@"SET NAMES '%@'", [MCPConnection mySQLEncodingForStringEncoding:sqlEncoding]]];
+ [mySQLConnection queryString:[NSString stringWithFormat:@"SET NAMES '%@'", [SPMySQLConnection mySQLCharsetForStringEncoding:sqlEncoding]]];
}
}
@@ -564,11 +564,11 @@
if (![query length]) continue;
// Run the query
- [mySQLConnection queryString:query usingEncoding:sqlEncoding streamingResult:NO];
+ [mySQLConnection queryString:query usingEncoding:sqlEncoding withResultType:SPMySQLResultAsResult];
// Check for any errors
- if ([mySQLConnection queryErrored] && ![[mySQLConnection getLastErrorMessage] isEqualToString:@"Query was empty"]) {
- [errors appendFormat:NSLocalizedString(@"[ERROR in query %ld] %@\n", @"error text when multiple custom query failed"), (long)(queriesPerformed+1), [mySQLConnection getLastErrorMessage]];
+ if ([mySQLConnection queryErrored] && ![[mySQLConnection lastErrorMessage] isEqualToString:@"Query was empty"]) {
+ [errors appendFormat:NSLocalizedString(@"[ERROR in query %ld] %@\n", @"error text when multiple custom query failed"), (long)(queriesPerformed+1), [mySQLConnection lastErrorMessage]];
// If not set to ignore errors, ask what to do. Use NSAlert rather than
// SPBeginWaitingAlertSheet as there is already a modal sheet in progress.
@@ -580,7 +580,7 @@
defaultButton:NSLocalizedString(@"Continue", @"continue button")
alternateButton:NSLocalizedString(@"Ignore All Errors", @"ignore errors button")
otherButton:NSLocalizedString(@"Stop", @"stop button")
- informativeTextWithFormat:NSLocalizedString(@"[ERROR in query %ld] %@\n", @"error text when multiple custom query failed"), (long)(queriesPerformed+1), [mySQLConnection getLastErrorMessage]
+ informativeTextWithFormat:NSLocalizedString(@"[ERROR in query %ld] %@\n", @"error text when multiple custom query failed"), (long)(queriesPerformed+1), [mySQLConnection lastErrorMessage]
];
[sqlErrorAlert setAlertStyle:NSWarningAlertStyle];
sqlImportErrorSheetReturnCode = [sqlErrorAlert runModal];
@@ -632,11 +632,11 @@
if ([query length] && !progressCancelled) {
// Run the query
- [mySQLConnection queryString:query usingEncoding:sqlEncoding streamingResult:NO];
+ [mySQLConnection queryString:query usingEncoding:sqlEncoding withResultType:SPMySQLResultAsResult];
// Check for any errors
- if ([mySQLConnection queryErrored] && ![[mySQLConnection getLastErrorMessage] isEqualToString:@"Query was empty"]) {
- [errors appendFormat:NSLocalizedString(@"[ERROR in query %ld] %@\n", @"error text when multiple custom query failed"), (long)(queriesPerformed+1), [mySQLConnection getLastErrorMessage]];
+ if ([mySQLConnection queryErrored] && ![[mySQLConnection lastErrorMessage] isEqualToString:@"Query was empty"]) {
+ [errors appendFormat:NSLocalizedString(@"[ERROR in query %ld] %@\n", @"error text when multiple custom query failed"), (long)(queriesPerformed+1), [mySQLConnection lastErrorMessage]];
}
// Increment the processed queries count
@@ -1067,10 +1067,10 @@
[tableDocumentInstance showConsole:nil];
[errors appendFormat:
NSLocalizedString(@"[ERROR in row %ld] %@\n", @"error text when reading of csv file gave errors"),
- (long)(rowsImported+1),[mySQLConnection getLastErrorMessage]];
+ (long)(rowsImported+1),[mySQLConnection lastErrorMessage]];
}
- if ( insertRemainingRowsAfterUpdate && ![mySQLConnection affectedRows]) {
+ if ( insertRemainingRowsAfterUpdate && ![mySQLConnection rowsAffectedByLastQuery]) {
query = [[NSMutableString alloc] initWithString:insertRemainingBaseString];
[query appendString:[self mappedValueStringForRowArray:[parsedRows objectAtIndex:i]]];
@@ -1084,7 +1084,7 @@
if ([mySQLConnection queryErrored]) {
[errors appendFormat:
NSLocalizedString(@"[ERROR in row %ld] %@\n", @"error text when reading of csv file gave errors"),
- (long)(rowsImported+1),[mySQLConnection getLastErrorMessage]];
+ (long)(rowsImported+1),[mySQLConnection lastErrorMessage]];
}
}
@@ -1120,7 +1120,7 @@
if ([mySQLConnection queryErrored]) {
[errors appendFormat:
NSLocalizedString(@"[ERROR in row %ld] %@\n", @"error text when reading of csv file gave errors"),
- (long)(rowsImported+1),[mySQLConnection getLastErrorMessage]];
+ (long)(rowsImported+1),[mySQLConnection lastErrorMessage]];
}
rowsImported++;
if (fileIsCompressed) {
@@ -1379,7 +1379,7 @@
if(fieldMappingArrayHasGlobalVariables && mapColumn >= numberOfImportDataColumns) {
NSMutableString *globalVar = [NSMutableString string];
id insertItem = NSArrayObjectAtIndex(fieldMappingGlobalValueArray, mapColumn);
- if([insertItem isKindOfClass:[NSNull class]]) {
+ if([insertItem isNSNull]) {
[globalVar setString:@"NULL"];
} else if([insertItem isSPNotLoaded]) {
[globalVar setString:@"NULL"];
@@ -1417,7 +1417,7 @@
if (cellData == [NSNull null]) {
[setString appendString:@"NULL"];
} else {
- [setString appendFormat:@"'%@'", [mySQLConnection prepareString:cellData]];
+ [setString appendString:[mySQLConnection escapeAndQuoteString:cellData]];
}
}
}
@@ -1431,7 +1431,7 @@
if(fieldMappingArrayHasGlobalVariables && mapColumn >= numberOfImportDataColumns) {
NSMutableString *globalVar = [NSMutableString string];
id insertItem = NSArrayObjectAtIndex(fieldMappingGlobalValueArray, mapColumn);
- if([insertItem isKindOfClass:[NSNull class]]) {
+ if([insertItem isNSNull]) {
[globalVar setString:@"NULL"];
} else if([insertItem isSPNotLoaded]) {
[globalVar setString:@"NULL"];
@@ -1469,7 +1469,8 @@
if (cellData == [NSNull null]) {
[whereString appendString:@" IS NULL"];
} else {
- [whereString appendFormat:@"='%@'", [mySQLConnection prepareString:cellData]];
+ [whereString appendString:@"="];
+ [whereString appendString:[mySQLConnection escapeAndQuoteString:cellData]];
}
}
}
@@ -1505,7 +1506,7 @@
if(fieldMappingArrayHasGlobalVariables && mapColumn >= numberOfImportDataColumns) {
NSMutableString *globalVar = [NSMutableString string];
id insertItem = NSArrayObjectAtIndex(fieldMappingGlobalValueArray, mapColumn);
- if([insertItem isKindOfClass:[NSNull class]]) {
+ if([insertItem isNSNull]) {
[globalVar setString:@"NULL"];
} else if([insertItem isSPNotLoaded]) {
[globalVar setString:@"NULL"];
@@ -1549,9 +1550,10 @@
if([geometryFields count] && [geometryFieldsMapIndex containsIndex:i]) {
[valueString appendString:[(NSString*)cellData getGeomFromTextString]];
} else if([bitFields count] && [bitFieldsMapIndex containsIndex:i]) {
- [valueString appendFormat:@"b'%@'", [mySQLConnection prepareString:cellData]];
+ [valueString appendString:@"b"];
+ [valueString appendString:[mySQLConnection escapeAndQuoteString:cellData]];
} else {
- [valueString appendFormat:@"'%@'", [mySQLConnection prepareString:cellData]];
+ [valueString appendString:[mySQLConnection escapeAndQuoteString:cellData]];
}
}
}
@@ -1636,7 +1638,7 @@
/**
* Sets the connection (received from SPDatabaseDocument) and makes things that have to be done only once.
*/
-- (void)setConnection:(MCPConnection *)theConnection
+- (void)setConnection:(SPMySQLConnection *)theConnection
{
NSButtonCell *switchButton = [[NSButtonCell alloc] init];