aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPExportInitializer.m
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2010-06-07 13:44:45 +0000
committerrowanbeentje <rowan@beent.je>2010-06-07 13:44:45 +0000
commit4c7cbdf882ad1e1bb1a5a11dc59dc53b90bee686 (patch)
treeffa901519ec9b970a76f6437feb39de65e04498a /Source/SPExportInitializer.m
parent42781adb6cfa7f01f3763aade1b5043995930756 (diff)
downloadsequelpro-4c7cbdf882ad1e1bb1a5a11dc59dc53b90bee686.tar.gz
sequelpro-4c7cbdf882ad1e1bb1a5a11dc59dc53b90bee686.tar.bz2
sequelpro-4c7cbdf882ad1e1bb1a5a11dc59dc53b90bee686.zip
A number of exporter improvements:
- Improve interface validation on the SQL view, including fixing no-content toggling - Fix the export of views to correctly construct placeholder tables and fix view syntax export (this addresses Issue #707) - Fix logic controlling Stored Procedure and Function export - fix hangs and allow correct export - Handle permission errors when retrieving Stored Pro/Function syntax - Improve export of linebreaks in CSV quoted cells for improved Excel compatibility - SQL export now retrieves table syntax as it progresses through the tables - more accurate progress bar and removes initial pause when exporting lots of tables - Alter filename construction to use centralised filename string: fixes end export Growl notification - Improve dump comments
Diffstat (limited to 'Source/SPExportInitializer.m')
-rw-r--r--Source/SPExportInitializer.m75
1 files changed, 28 insertions, 47 deletions
diff --git a/Source/SPExportInitializer.m b/Source/SPExportInitializer.m
index 0cfa88b1..c5779dc6 100644
--- a/Source/SPExportInitializer.m
+++ b/Source/SPExportInitializer.m
@@ -178,30 +178,28 @@
// If the user has selected to only export to a single file or this is a filtered or custom query
// export, create the single file now and assign it to all subsequently created exporters.
if ((![self exportToMultipleFiles]) || (exportSource == SPFilteredExport) || (exportSource == SPQueryExport)) {
-
- NSString *filename = @"";
-
+
// Create custom filename if required
if (createCustomFilename) {
- filename = [self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:nil];
+ [exportFilename setString:[self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:nil]];
}
else {
// Determine what the file name should be
switch (exportSource)
{
case SPFilteredExport:
- filename = [NSString stringWithFormat:@"%@_view", [tableDocumentInstance table]];
+ [exportFilename setString:[NSString stringWithFormat:@"%@_view", [tableDocumentInstance table]]];
break;
case SPQueryExport:
- filename = @"query_result";
+ [exportFilename setString:@"query_result"];
break;
case SPTableExport:
- filename = [tableDocumentInstance database];
+ [exportFilename setString:[tableDocumentInstance database]];
break;
}
}
- singleFileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:filename]];
+ singleFileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:exportFilename]];
}
// Start the export process depending on the data source
@@ -294,17 +292,7 @@
sqlPreviousConnectionEncodingViaLatin1 = [tableDocumentInstance connectionEncodingViaLatin1:nil];
[tableDocumentInstance setConnectionEncoding:@"utf8" reloadingViews:NO];
-
- NSMutableArray *tableTypes = [[NSMutableArray alloc] init];
- NSMutableDictionary *infoDict = [[NSMutableDictionary alloc] init];
-
- // Build the table information dictionary as well as the table array with item type
- for (NSArray *table in exportTables)
- {
- [infoDict setObject:[tableDataInstance informationForTable:[table objectAtIndex:0]] forKey:[table objectAtIndex:0]];
- }
-
- [sqlExporter setSqlTableInformation:infoDict];
+
[sqlExporter setSqlExportTables:exportTables];
// Set the exporter's max progress
@@ -313,15 +301,11 @@
// Set the progress bar's max value
[exportProgressIndicator setMaxValue:[sqlExporter exportMaxProgress]];
- [infoDict release];
- [tableTypes release];
-
- NSString *filename = @"";
-
// Create custom filename if required
- filename = (createCustomFilename) ? [self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:nil] : [NSString stringWithFormat:@"%@_%@", [tableDocumentInstance database], [[NSDate date] descriptionWithCalendarFormat:@"%Y-%m-%d" timeZone:nil locale:nil]];
+ [exportFilename setString:(createCustomFilename) ? [self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:nil] : [NSString stringWithFormat:@"%@_%@", [tableDocumentInstance database], [[NSDate date] descriptionWithCalendarFormat:@"%Y-%m-%d" timeZone:nil locale:nil]]];
+ [exportFilename setString:[exportFilename stringByAppendingPathExtension:([exportCompressOutputFile state]) ? @"sql.gz" : @"sql"]];
- SPFileHandle *fileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:[filename stringByAppendingPathExtension:([exportCompressOutputFile state]) ? @"sql.gz" : @"sql"]]];
+ SPFileHandle *fileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:exportFilename]];
[sqlExporter setExportOutputFileHandle:fileHandle];
@@ -338,29 +322,28 @@
// export, create the single file now and assign it to all subsequently created exporters.
if ((![self exportToMultipleFiles]) || (exportSource == SPFilteredExport) || (exportSource == SPQueryExport)) {
- NSString *filename = @"";
-
// Create custom filename if required
if (createCustomFilename) {
- filename = [self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:nil];
+ [exportFilename setString:[self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:nil]];
}
else {
// Determine what the file name should be
switch (exportSource)
{
case SPFilteredExport:
- filename = [NSString stringWithFormat:@"%@_view", [tableDocumentInstance table]];
+ [exportFilename setString:[NSString stringWithFormat:@"%@_view", [tableDocumentInstance table]]];
break;
case SPQueryExport:
- filename = @"query_result";
+ [exportFilename setString:@"query_result"];
break;
case SPTableExport:
- filename = [tableDocumentInstance database];
+ [exportFilename setString:[tableDocumentInstance database]];
break;
}
}
+ [exportFilename setString:[exportFilename stringByAppendingPathExtension:@"xml"]];
- singleFileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:[filename stringByAppendingPathExtension:@"xml"]]];
+ singleFileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:exportFilename]];
}
// Start the export process depending on the data source
@@ -431,17 +414,16 @@
// Set the progress bar's max value
[exportProgressIndicator setMaxValue:[dotExporter exportMaxProgress]];
- NSString *filename = @"";
-
// Create custom filename if required
if (createCustomFilename) {
- filename = [self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:nil];
+ [exportFilename setString:[self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:nil]];
}
else {
- filename = [tableDocumentInstance database];
+ [exportFilename setString:[tableDocumentInstance database]];
}
-
- SPFileHandle *fileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:[filename stringByAppendingPathExtension:@"dot"]]];
+ [exportFilename setString:[exportFilename stringByAppendingPathExtension:@"dot"]];
+
+ SPFileHandle *fileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:exportFilename]];
[dotExporter setExportOutputFileHandle:fileHandle];
@@ -463,7 +445,6 @@
*/
- (SPCSVExporter *)initializeCSVExporterForTable:(NSString *)table orDataArray:(NSArray *)dataArray
{
- NSString *filename = @"";
SPFileHandle *fileHandle = nil;
SPCSVExporter *csvExporter = [[SPCSVExporter alloc] initWithDelegate:self];
@@ -491,17 +472,17 @@
if (createCustomFilename) {
// Create custom filename based on the selected format
- filename = [self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:table];
+ [exportFilename setString:[self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:table]];
// If the user chose to use a custom filename format and we exporting to multiple files, make
// sure the table name is included to ensure the output files are unique.
- filename = ([[exportCustomFilenameTokenField stringValue] rangeOfString:@"table" options:NSLiteralSearch].location == NSNotFound) ? [filename stringByAppendingFormat:@"_%@", table] : filename;
+ [exportFilename setString:([[exportCustomFilenameTokenField stringValue] rangeOfString:@"table" options:NSLiteralSearch].location == NSNotFound) ? [exportFilename stringByAppendingFormat:@"_%@", table] : exportFilename];
}
else {
- filename = table;
+ [exportFilename setString:table];
}
- fileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:filename]];
+ fileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:exportFilename]];
[csvExporter setExportOutputFileHandle:fileHandle];
}
@@ -523,7 +504,6 @@
*/
- (SPXMLExporter *)initializeXMLExporterForTable:(NSString *)table orDataArray:(NSArray *)dataArray
{
- NSString *filename = @"";
SPFileHandle *fileHandle = nil;
SPXMLExporter *xmlExporter = [[SPXMLExporter alloc] initWithDelegate:self];
@@ -544,9 +524,10 @@
// If required create separate files
if ((exportSource == SPTableExport) && exportToMultipleFiles && (exportTableCount > 0)) {
- filename = [[exportPathField stringValue] stringByAppendingPathComponent:table];
+ [exportFilename setString:[[exportPathField stringValue] stringByAppendingPathComponent:table]];
+ [exportFilename setString:[exportFilename stringByAppendingPathExtension:@"xml"]];
- fileHandle = [self getFileHandleForFilePath:[filename stringByAppendingPathExtension:@"xml"]];
+ fileHandle = [self getFileHandleForFilePath:exportFilename];
// Write the file header
[self writeXMLHeaderToFileHandle:fileHandle];