aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPExporter.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/SPExporter.h')
-rw-r--r--Source/SPExporter.h72
1 files changed, 64 insertions, 8 deletions
diff --git a/Source/SPExporter.h b/Source/SPExporter.h
index f3c01077..d9dadb6c 100644
--- a/Source/SPExporter.h
+++ b/Source/SPExporter.h
@@ -33,38 +33,78 @@
* This class is designed to be the base class of all data exporters and provide basic functionality
* common to each of them. Each data exporter (i.e. CSV, SQL, XML, etc.) should be implemented as a subclass
* of this class, with the end result being a modular export architecture separated by export type. All exporters
- * should also conform to the SPExporterAccess protocol to allow generic access to the exporter's state and common
- * functionality.
+ * should also have an associated delegate protocol and delegate category (of SPExportController) which conforms
+ * to this protocol.
*
* All export functionality is initially controlled by SPExportController, which is the single point within the
* architecture that controls the user interface and provides user feedback. When the user starts an export
* operation after selecting the available options, SPExportController should create an instance of the appropriate
- * exporter (e.g. SPCSVExporter for a CSV export) and begin the export process. Any available progress information
- * (defined in SPExporter as is common to all exporters) of the export should be set by the exporter and made
+ * exporter (e.g. SPCSVExporter for a CSV export, etc) and begin the export process. Any available progress information
+ * (defined in SPExporter as it's common to all exporters) of the export should be set by the exporter and made
* available to SPExportController via delegate methods in order to update the user interface.
*
* Note that all exporters are designed to be run concurrently and as such this base class is a subclass of
* NSOperation. All the data format specific subclasses have to do is override NSOperation's main() method
* and implement all processes which are to be run concurrently within it. This method is automatically called
- * once the exporter instance is placed on the operation queue once its ready to be run.
+ * once the exporter instance is placed on the operation queue once its ready to be run. It should not be
+ * explicity called.
*/
+#import "SPConstants.h"
+
@class MCPConnection, SPFileHandle;
@interface SPExporter : NSOperation
{
+ /**
+ * The MySQL connection to use
+ */
MCPConnection *connection;
-
+
+ /**
+ * The exports current progress value
+ */
double exportProgressValue;
+ /**
+ * The max progress value of the export operation
+ */
+ double exportMaxProgress;
+
+ /**
+ * Indicates whether or not the exporter is running
+ */
BOOL exportProcessIsRunning;
+
+ /**
+ * Indicates whether or not low memory streaming is used
+ */
BOOL exportUsingLowMemoryBlockingStreaming;
+ /**
+ * Compress output
+ */
+ BOOL exportOutputCompressFile;
+
+ /**
+ * Compression format
+ */
+ SPFileCompressionFormat exportOutputCompressionFormat;
+
+ /**
+ * The resulting exported data as a string
+ */
NSString *exportData;
+
+ /**
+ * The output file handle of the exporter
+ */
SPFileHandle *exportOutputFileHandle;
+
+ /**
+ * Export output encoding
+ */
NSStringEncoding exportOutputEncoding;
-
- double exportMaxProgress;
}
@property(readwrite, retain) MCPConnection *connection;
@@ -74,10 +114,26 @@
@property(readwrite, assign) BOOL exportProcessIsRunning;
@property(readwrite, assign) BOOL exportUsingLowMemoryBlockingStreaming;
+@property(readwrite, assign) SPFileCompressionFormat exportOutputCompressionFormat;
+
@property(readwrite, retain) NSString *exportData;
@property(readwrite, retain) SPFileHandle *exportOutputFileHandle;
@property(readwrite, assign) NSStringEncoding exportOutputEncoding;
@property(readwrite, assign) double exportMaxProgress;
+/**
+ * Returns whether or not file compression is in use.
+ *
+ * @return A BOOL indicating the use of compression
+ */
+- (BOOL)exportOutputCompressFile;
+
+/**
+ * Sets whether or not the resulting output of this exporter should be compressed.
+ *
+ * @param compress A BOOL indicating the use of compression
+ */
+- (void)setExportOutputCompressFile:(BOOL)compress;
+
@end