diff options
author | stuconnolly <stuart02@gmail.com> | 2010-08-12 12:56:20 +0000 |
---|---|---|
committer | stuconnolly <stuart02@gmail.com> | 2010-08-12 12:56:20 +0000 |
commit | fc02f913371d522a025c47824fafeba8e3174da1 (patch) | |
tree | 086561fd418bf35139dda47d698d7923196a4f30 /Source/SPXMLExporter.m | |
parent | 50f15c41936be3fb62384834bb3629e09018e67b (diff) | |
download | sequelpro-fc02f913371d522a025c47824fafeba8e3174da1.tar.gz sequelpro-fc02f913371d522a025c47824fafeba8e3174da1.tar.bz2 sequelpro-fc02f913371d522a025c47824fafeba8e3174da1.zip |
Various export enhancements and fixes, including:
- A new SPExportFile class, providing an abstract interface to the handling and creation of export files.
- Enables the centralisation of all file/file handle creation logic as well as better support for handling situations where files fail to be created, including files that already exist at the export location.
- New SPExportFileHandleStatus constants to support the reporting of file handle creation.
- Update SPExporter to use the new file class instead of directly using an instance of SPFileHandle.
- Add the necessary logic to deal with files that already exist on disk, by providing the user with 3 options: cancel the export, ignore the files in question or overwrite them. We might want to enhance this to make new files sequential in name to prevent overwriting. Fixes issue #742.
- New SPExportFileUtilities category, which centralises all the logic relating to writing export type headers as well as dealing with problems occurred during file/file handle creation.
- Improve feedback given on the export progress sheet during export initialisation.
- Tidy up and improve comments.
Diffstat (limited to 'Source/SPXMLExporter.m')
-rw-r--r-- | Source/SPXMLExporter.m | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Source/SPXMLExporter.m b/Source/SPXMLExporter.m index eddfabbf..2da40220 100644 --- a/Source/SPXMLExporter.m +++ b/Source/SPXMLExporter.m @@ -41,6 +41,10 @@ /** * Initialise an instance of SPXMLExporter using the supplied delegate. + * + * @param exportDelegate The exporter delegate + * + * @return The initialised instance */ - (id)initWithDelegate:(NSObject *)exportDelegate { @@ -109,10 +113,10 @@ [[xmlTags objectAtIndex:i] addObject:[NSString stringWithFormat:@"</%@>\n", [[[xmlRow objectAtIndex:i] description] HTMLEscapeString]]]; } - [[self exportOutputFileHandle] writeData:[xmlString dataUsingEncoding:[self exportOutputEncoding]]]; + [[self exportOutputFile] writeData:[xmlString dataUsingEncoding:[self exportOutputEncoding]]]; // Write an opening tag in the form of the table name - [[self exportOutputFileHandle] writeData:[[NSString stringWithFormat:@"\t<%@>\n", ([self xmlTableName]) ? [[self xmlTableName] HTMLEscapeString] : @"custom"] dataUsingEncoding:[self exportOutputEncoding]]]; + [[self exportOutputFile] writeData:[[NSString stringWithFormat:@"\t<%@>\n", ([self xmlTableName]) ? [[self xmlTableName] HTMLEscapeString] : @"custom"] dataUsingEncoding:[self exportOutputEncoding]]]; // Set up the starting row, which is 0 for streaming result sets and // 1 for supplied arrays which include the column headers as the first row. @@ -204,7 +208,7 @@ currentPoolDataLength += [xmlString length]; // Write the row to the filehandle - [[self exportOutputFileHandle] writeData:[xmlString dataUsingEncoding:[self exportOutputEncoding]]]; + [[self exportOutputFile] writeData:[xmlString dataUsingEncoding:[self exportOutputEncoding]]]; // Update the progress counter and progress bar currentRowIndex++; @@ -233,10 +237,10 @@ } // Write the closing tag for the table - [[self exportOutputFileHandle] writeData:[[NSString stringWithFormat:@"\t</%@>\n\n", ([self xmlTableName]) ? [[self xmlTableName] HTMLEscapeString] : @"custom"] dataUsingEncoding:[self exportOutputEncoding]]]; + [[self exportOutputFile] writeData:[[NSString stringWithFormat:@"\t</%@>\n\n", ([self xmlTableName]) ? [[self xmlTableName] HTMLEscapeString] : @"custom"] dataUsingEncoding:[self exportOutputEncoding]]]; // Write data to disk - [[self exportOutputFileHandle] synchronizeFile]; + [[[self exportOutputFile] exportFileHandle] synchronizeFile]; // Mark the process as not running [self setExportProcessIsRunning:NO]; |