//
// SPFieldMapperController.h
// sequel-pro
//
// Created by Hans-Jörg Bibiko on February 1, 2010.
// Copyright (c) 2010 Hans-Jörg Bibiko. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
// More info at
@class SPTextView;
@class SPTableView;
@class SPTablesList;
@class SPMySQLConnection;
@interface SPFieldMapperController : NSWindowController
{
IBOutlet SPTableView *fieldMapperTableView;
IBOutlet NSScrollView *fieldMapperTableScrollView;
IBOutlet NSTableView *globalValuesTableView;
IBOutlet NSPopUpButton *tableTargetPopup;
IBOutlet NSPathControl *fileSourcePath;
IBOutlet NSPopUpButton *importMethodPopup;
IBOutlet NSButton *rowUpButton;
IBOutlet NSButton *rowDownButton;
IBOutlet NSTextField *recordCountLabel;
IBOutlet NSButton *importFieldNamesHeaderSwitch;
IBOutlet NSButton *addRemainingDataSwitch;
IBOutlet NSButton *importButton;
IBOutlet NSBox *advancedBox;
IBOutlet NSPopUpButton *alignByPopup;
IBOutlet NSTextField *alignByPopupLabel;
IBOutlet NSTextField *importMethodLabel;
IBOutlet NSTextField *advancedLabel;
IBOutlet NSMenuItem *matchingNameMenuItem;
IBOutlet NSMenuItem *addNewColumnMenuItem;
IBOutlet NSMenuItem *setAllTypesToMenuItem;
IBOutlet NSTextField *newTableNameTextField;
IBOutlet NSTextField *newTableNameLabel;
IBOutlet NSButton *newTableNameInfoButton;
IBOutlet NSButton *newTableButton;
IBOutlet NSWindow *newTableInfoWindow;
IBOutlet NSPopUpButton *newTableInfoEncodingPopup;
IBOutlet NSPopUpButton *newTableInfoEnginePopup;
IBOutlet NSWindow *globalValuesSheet;
IBOutlet NSButton *addGlobalValueButton;
IBOutlet NSButton *removeGlobalValueButton;
IBOutlet NSButton *insertNULLValueButton;
IBOutlet NSButton *replaceAfterSavingCheckBox;
IBOutlet NSPopUpButton *insertPullDownButton;
IBOutlet NSMenu *recentGlobalValueMenu;
IBOutlet NSButton *ignoreCheckBox;
IBOutlet NSButton *ignoreUpdateCheckBox;
IBOutlet NSButton *delayedCheckBox;
IBOutlet NSButton *delayedReplaceCheckBox;
IBOutlet NSButton *onupdateCheckBox;
IBOutlet NSButton *lowPriorityCheckBox;
IBOutlet NSButton *lowPriorityReplaceCheckBox;
IBOutlet NSButton *lowPriorityUpdateCheckBox;
IBOutlet NSButton *highPriorityCheckBox;
IBOutlet NSButton *skipexistingRowsCheckBox;
IBOutlet SPTextView *onupdateTextView;
IBOutlet NSButton *gobackButton;
IBOutlet NSButton *advancedButton;
IBOutlet NSView *advancedInsertView;
IBOutlet NSView *advancedReplaceView;
IBOutlet NSView *advancedUpdateView;
IBOutlet NSComboBoxCell *typeComboxBox;
id theDelegate;
id customQueryInstance;
id fieldMappingImportArray;
id databaseDataInstance;
SPTablesList *tablesListInstance;
NSMutableArray *fieldMappingArray;
NSMutableArray *fieldMappingTableColumnNames;
NSMutableArray *fieldMappingTableTypes;
NSMutableArray *fieldMappingButtonOptions;
NSMutableArray *fieldMappingOperatorOptions;
NSMutableArray *fieldMappingOperatorArray;
NSMutableArray *fieldMappingGlobalValues;
NSMutableArray *fieldMappingGlobalValuesSQLMarked;
NSMutableArray *fieldMappingTableDefaultValues;
NSMutableArray *defaultFieldTypesForComboBox;
NSNumber *doImport;
NSNumber *doNotImport;
NSNumber *isEqual;
NSString *doImportString;
NSString *doNotImportString;
NSString *isEqualString;
NSString *newTableEncoding;
NSString *newTableEngine;
NSMutableIndexSet *toBeEditedRowIndexes;
NSArray *primaryKeyFields;
NSNumber *lastDisabledCSVFieldcolumn;
SPMySQLConnection *mySQLConnection;
NSString *sourcePath;
NSUserDefaults *prefs;
NSInteger heightOffset;
NSUInteger windowMinWidth;
NSUInteger windowMinHeigth;
NSInteger numberOfImportColumns;
NSInteger fieldMappingCurrentRow;
BOOL fieldMappingImportArrayIsPreview;
BOOL importFieldNamesHeader;
BOOL showAdvancedView;
BOOL targetTableHasPrimaryKey;
BOOL newTableMode;
BOOL addGlobalSheetIsOpen;
}
@property(retain) NSString* sourcePath;
- (id)initWithDelegate:(id)managerDelegate;
- (void)setConnection:(SPMySQLConnection *)theConnection;
- (void)setImportDataArray:(id)theFieldMappingImportArray hasHeader:(BOOL)hasHeader isPreview:(BOOL)isPreview;
// Getter methods
- (NSString*)selectedTableTarget;
- (NSArray*)fieldMapperOperator;
- (NSString*)selectedImportMethod;
- (NSArray*)fieldMappingArray;
- (NSArray*)fieldMappingTableColumnNames;
- (NSArray*)fieldMappingGlobalValueArray;
- (NSArray*)fieldMappingTableDefaultValues;
- (BOOL)importFieldNamesHeader;
- (BOOL)insertRemainingRowsAfterUpdate;
- (BOOL)globalValuesInUsage;
- (BOOL)importIntoNewTable;
- (NSString*)onupdateString;
- (NSString*)importHeaderString;
- (BOOL)canBeClosed;
- (BOOL)isGlobalValueSheetOpen;
// IBAction methods
- (IBAction)changeTableTarget:(id)sender;
- (IBAction)changeImportMethod:(id)sender;
- (IBAction)changeFieldAlignment:(id)sender;
- (IBAction)changeHasHeaderCheckbox:(id)sender;
- (IBAction)stepRow:(id)sender;
- (IBAction)addGlobalSourceVariable:(id)sender;
- (IBAction)openAdvancedSheet:(id)sender;
- (IBAction)closeSheet:(id)sender;
- (IBAction)goBackToFileChooser:(id)sender;
- (IBAction)goBackToFileChooserFromPathControl:(id)sender;
- (IBAction)addGlobalValue:(id)sender;
- (IBAction)removeGlobalValue:(id)sender;
- (IBAction)insertNULLValue:(id)sender;
- (IBAction)closeGlobalValuesSheet:(id)sender;
- (IBAction)advancedCheckboxValidation:(id)sender;
- (IBAction)insertPulldownValue:(id)sender;
- (IBAction)insertRecentGlobalValue:(id)sender;
- (IBAction)newTable:(id)sender;
- (IBAction)newTableInfo:(id)sender;
- (IBAction)closeInfoSheet:(id)sender;
- (IBAction)addNewColumn:(id)sender;
- (IBAction)removeNewColumn:(id)sender;
- (IBAction)setAllTypesTo:(id)sender;
// Others
- (void)resizeWindowByHeightDelta:(NSInteger)delta;
- (void)matchHeaderNames;
- (void)setupFieldMappingArray;
- (void)updateFieldMappingButtonCell;
- (void)updateFieldMappingOperatorOptions;
- (void)updateFieldNameAlignment;
- (void)validateImportButton;
@end