aboutsummaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorstuconnolly <stuart02@gmail.com>2009-08-29 03:09:10 +0000
committerstuconnolly <stuart02@gmail.com>2009-08-29 03:09:10 +0000
commit72258028821c732892fd4ee00149a9afece290e4 (patch)
tree42189ef0edd2a59c2d2a6e50382b50ebb16e2494 /Source
parent495e8fffa8c2455aaee97c78445feb71253dcd61 (diff)
downloadsequelpro-72258028821c732892fd4ee00149a9afece290e4.tar.gz
sequelpro-72258028821c732892fd4ee00149a9afece290e4.tar.bz2
sequelpro-72258028821c732892fd4ee00149a9afece290e4.zip
Add the first classes of the new export architecture. See the description at the top of SPExporter.h for more information.
Diffstat (limited to 'Source')
-rw-r--r--Source/SPCSVExporter.h63
-rw-r--r--Source/SPCSVExporter.m54
-rw-r--r--Source/SPExportController.m14
-rw-r--r--Source/SPExporter.h49
-rw-r--r--Source/SPExporter.m30
5 files changed, 205 insertions, 5 deletions
diff --git a/Source/SPCSVExporter.h b/Source/SPCSVExporter.h
new file mode 100644
index 00000000..48f0c424
--- /dev/null
+++ b/Source/SPCSVExporter.h
@@ -0,0 +1,63 @@
+//
+// $Id$
+//
+// SPCSVExporter.h
+// sequel-pro
+//
+// Created by Stuart Connolly (stuconnolly.com) on August 29, 2009
+// Copyright (c) 2009 Stuart Connolly. All rights reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// More info at <http://code.google.com/p/sequel-pro/>
+
+#import <Cocoa/Cocoa.h>
+
+#import "SPExporter.h"
+#import "MCPKit.h"
+
+@interface SPCSVExporter : SPExporter
+{
+ // CSV file
+ NSFileHandle *csvFileHandle;
+
+ // CSV data
+ NSArray *csvDataArray;
+ MCPResult *csvDataResult;
+
+ // CSV options
+ BOOL csvOutputFieldNames;
+ NSString *csvFieldSeparatorString;
+ NSString *csvEnclosingCharacterString;
+ NSString *csvEscapeString;
+ NSString *csvLineEndingString;
+ NSArray *csvTableColumnNumericStatus;
+}
+
+@property (readwrite, retain) NSFileHandle *csvFileHandle;
+
+@property (readwrite, retain) NSArray *csvDataArray;
+@property (readwrite, retain) MCPResult *csvDataResult;
+
+@property (readwrite) BOOL csvOutputFieldNames;
+@property (readwrite, retain) NSString *csvFieldSeparatorString;
+@property (readwrite, retain) NSString *csvEnclosingCharacterString;
+@property (readwrite, retain) NSString *csvEscapeString;
+@property (readwrite, retain) NSString *csvLineEndingString;
+@property (readwrite, retain) NSArray *csvTableColumnNumericStatus;
+
+- (id)initWithFileHandle:(NSFileHandle *)fileHandle;
+
+@end
diff --git a/Source/SPCSVExporter.m b/Source/SPCSVExporter.m
new file mode 100644
index 00000000..15cf6827
--- /dev/null
+++ b/Source/SPCSVExporter.m
@@ -0,0 +1,54 @@
+//
+// $Id$
+//
+// SPCSVExporter.m
+// sequel-pro
+//
+// Created by Stuart Connolly (stuconnolly.com) on August 29, 2009
+// Copyright (c) 2009 Stuart Connolly. All rights reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// More info at <http://code.google.com/p/sequel-pro/>
+
+#import "SPCSVExporter.h"
+
+@implementation SPCSVExporter
+
+@synthesize csvFileHandle;
+
+@synthesize csvDataArray;
+@synthesize csvDataResult;
+
+@synthesize csvOutputFieldNames;
+@synthesize csvFieldSeparatorString;
+@synthesize csvEnclosingCharacterString;
+@synthesize csvEscapeString;
+@synthesize csvLineEndingString;
+@synthesize csvTableColumnNumericStatus;
+
+/**
+ * Initialize an instance of the exporter using the supplied file handle.
+ */
+- (id)initWithFileHandle:(NSFileHandle *)fileHandle
+{
+ if ((self == [super init])) {
+ [self setCsvFileHandle:fileHandle];
+ }
+
+ return self;
+}
+
+@end
diff --git a/Source/SPExportController.m b/Source/SPExportController.m
index 4e83d818..f89e727d 100644
--- a/Source/SPExportController.m
+++ b/Source/SPExportController.m
@@ -63,13 +63,17 @@
- (IBAction)closeSheet:(id)sender
{
- [NSApp endSheet:exportWindow];
- [NSApp stopModalWithCode:[sender tag]];
+ [NSApp endSheet:exportWindow returnCode:[sender tag]];
+ [exportWindow orderOut:self];
}
- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
{
- [sheet orderOut:self];
+ // Perform the export
+ if (returnCode == NSOKButton) {
+
+ // First determine what type of export the user selected
+ }
}
#pragma mark -
@@ -159,10 +163,9 @@
- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
{
- NSArray *array = [toolbar items];
NSMutableArray *items = [NSMutableArray arrayWithCapacity:6];
- for (NSToolbarItem *item in array)
+ for (NSToolbarItem *item in [toolbar items])
{
[items addObject:[item itemIdentifier]];
}
@@ -176,6 +179,7 @@
- (void)dealloc
{
[tables release], tables = nil;
+
[super dealloc];
}
diff --git a/Source/SPExporter.h b/Source/SPExporter.h
new file mode 100644
index 00000000..bf405f58
--- /dev/null
+++ b/Source/SPExporter.h
@@ -0,0 +1,49 @@
+//
+// $Id$
+//
+// SPExporter.h
+// sequel-pro
+//
+// Created by Stuart Connolly (stuconnolly.com) on August 29, 2009
+// Copyright (c) 2009 Stuart Connolly. All rights reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// More info at <http://code.google.com/p/sequel-pro/>
+
+#import <Cocoa/Cocoa.h>
+
+/**
+ * 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 an uncomplicated export architecture defined by export type.
+ *
+ * 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
+ * available to SPExportController via delegate methods in order to update the user interface.
+ *
+ * Note that all core export processes should be designed and implemented to run in a separate thread to avoid
+ * blocking the main thread and also to provide improved efficiency over the current design (for example, all memory
+ * used within a separate thread can be reclaimed immediately after the thread completes its cycle and it's
+ * autorelease pool is released).
+ */
+@interface SPExporter : NSObject
+
+// Implement functionality common to all exporters here
+
+@end
diff --git a/Source/SPExporter.m b/Source/SPExporter.m
new file mode 100644
index 00000000..fc5a231b
--- /dev/null
+++ b/Source/SPExporter.m
@@ -0,0 +1,30 @@
+//
+// $Id$
+//
+// SPExporter.m
+// sequel-pro
+//
+// Created by Stuart Connolly (stuconnolly.com) on August 29, 2009
+// Copyright (c) 2009 Stuart Connolly. All rights reserved.
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// More info at <http://code.google.com/p/sequel-pro/>
+
+#import "SPExporter.h"
+
+@implementation SPExporter
+
+@end