From 300e2cb06db621fb7f651b11e5e1c6bb2f6fbd87 Mon Sep 17 00:00:00 2001 From: Bibiko Date: Tue, 2 Mar 2010 13:45:46 +0000 Subject: =?UTF-8?q?=E2=80=A2=20CSV=20Field=20Mapper=20-=20REPLACE=20as=20i?= =?UTF-8?q?mport=20method=20is=20only=20enabled=20if=20target=20table=20ha?= =?UTF-8?q?s=20a=20primary=20key=20or=20at=20least=20one=20field=20which?= =?UTF-8?q?=20is=20set=20to=20unique=20-=20if=20user=20set=20a=20field=20t?= =?UTF-8?q?o=20"Ignore=20Field"=20display=20as=20"import=20value"=20the=20?= =?UTF-8?q?field's=20default=20value=20greyed=20-=20some=20minor=20code=20?= =?UTF-8?q?cosmetics?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/SPFieldMapperController.h | 2 +- Source/SPFieldMapperController.m | 37 ++++++++++++++++++++++++++----------- Source/TableDump.m | 2 +- 3 files changed, 28 insertions(+), 13 deletions(-) (limited to 'Source') diff --git a/Source/SPFieldMapperController.h b/Source/SPFieldMapperController.h index 5bca61d0..e7f0aa18 100644 --- a/Source/SPFieldMapperController.h +++ b/Source/SPFieldMapperController.h @@ -54,7 +54,6 @@ IBOutlet CMTextView *onupdateTextView; IBOutlet id advancedButton; - id theDelegate; id fieldMappingImportArray; @@ -66,6 +65,7 @@ NSMutableArray *fieldMappingOperatorOptions; NSMutableArray *fieldMappingOperatorArray; NSMutableArray *fieldMappingGlobalValues; + NSMutableArray *fieldMappingTableDefaultValues; NSNumber *doImport; NSNumber *doNotImport; diff --git a/Source/SPFieldMapperController.m b/Source/SPFieldMapperController.m index ccf94f99..a4e75efc 100644 --- a/Source/SPFieldMapperController.m +++ b/Source/SPFieldMapperController.m @@ -53,7 +53,7 @@ } theDelegate = managerDelegate; fieldMappingTableColumnNames = [[NSMutableArray alloc] init]; - // fieldMappingTableDefaultValues = [[NSMutableArray alloc] init]; + fieldMappingTableDefaultValues = [[NSMutableArray alloc] init]; fieldMappingTableTypes = [[NSMutableArray alloc] init]; fieldMappingButtonOptions = [[NSMutableArray alloc] init]; fieldMappingOperatorOptions = [[NSMutableArray alloc] init]; @@ -122,6 +122,7 @@ if (fieldMappingOperatorOptions) [fieldMappingOperatorOptions release]; if (fieldMappingOperatorArray) [fieldMappingOperatorArray release]; if (fieldMappingGlobalValues) [fieldMappingGlobalValues release]; + if (fieldMappingTableDefaultValues) [fieldMappingTableDefaultValues release]; [super dealloc]; } @@ -231,13 +232,14 @@ // Remove all the current columns [fieldMappingTableColumnNames removeAllObjects]; - // [fieldMappingTableDefaultValues removeAllObjects]; + [fieldMappingTableDefaultValues removeAllObjects]; [fieldMappingTableTypes removeAllObjects]; // Retrieve the information for the newly selected table using a SPTableData instance SPTableData *selectedTableData = [[SPTableData alloc] init]; [selectedTableData setConnection:mySQLConnection]; NSDictionary *tableDetails = [selectedTableData informationForTable:[tableTargetPopup titleOfSelectedItem]]; + BOOL isReplacePossible = NO; if (tableDetails) { for (NSDictionary *column in [tableDetails objectForKey:@"columns"]) { @@ -252,11 +254,17 @@ if([column objectForKey:@"isprimarykey"]) { [type appendFormat:@",%@",@"PRIMARY"]; + [fieldMappingTableDefaultValues addObject:@"auto_increment"]; + isReplacePossible = YES; } else { - if([column objectForKey:@"unique"]) + if([column objectForKey:@"unique"]) { [type appendFormat:@",%@",@"UNIQUE"]; + isReplacePossible = YES; + } if ([column objectForKey:@"default"]) - [type appendFormat:@",%@",[column objectForKey:@"default"]]; + [fieldMappingTableDefaultValues addObject:[column objectForKey:@"default"]]; + else + [fieldMappingTableDefaultValues addObject:@"NULL"]; } [fieldMappingTableTypes addObject:[NSString stringWithString:type]]; @@ -264,6 +272,8 @@ } [selectedTableData release]; + [[importMethodPopup menu] setAutoenablesItems:NO]; + [[importMethodPopup itemWithTitle:@"REPLACE"] setEnabled:isReplacePossible]; // Update the table view fieldMappingCurrentRow = 0; @@ -573,10 +583,9 @@ - (void)setupFieldMappingArray { NSInteger i, value; - - if (!fieldMappingArray) { - fieldMappingArray = [[NSMutableArray alloc] init]; - + + if (!fieldMappingArray) { + fieldMappingArray = [[NSMutableArray alloc] init]; for (i = 0; i < [fieldMappingTableColumnNames count]; i++) { if (i < [NSArrayObjectAtIndex(fieldMappingImportArray, fieldMappingCurrentRow) count] && ![NSArrayObjectAtIndex(NSArrayObjectAtIndex(fieldMappingImportArray, fieldMappingCurrentRow), i) isKindOfClass:[NSNull class]]) { @@ -588,7 +597,7 @@ [fieldMappingArray addObject:[NSNumber numberWithInteger:value]]; } } - + [fieldMapperTableView reloadData]; } @@ -701,7 +710,7 @@ if(aTableView == fieldMapperTableView) { if([[aTableColumn identifier] isEqualToString:@"import_value"] && [importFieldNamesHeaderSwitch state] == NSOnState) { - if ([fieldMappingOperatorArray objectAtIndex:rowIndex] == doNotImport) return @""; + if ([fieldMappingOperatorArray objectAtIndex:rowIndex] == doNotImport) return [NSString stringWithFormat:@"DEFAULT: %@", [fieldMappingTableDefaultValues objectAtIndex:rowIndex]]; if([NSArrayObjectAtIndex(fieldMappingArray, rowIndex) integerValue]>=[NSArrayObjectAtIndex(fieldMappingImportArray, 0) count]) return [NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"Global value", @"global value"), NSArrayObjectAtIndex(fieldMappingGlobalValues, [NSArrayObjectAtIndex(fieldMappingArray, rowIndex) integerValue])]; @@ -765,6 +774,7 @@ if ([[aTableColumn dataCell] isKindOfClass:[NSPopUpButtonCell class]]) { NSPopUpButtonCell *c = [aTableColumn dataCell]; NSMenu *m = [c menu]; + [m setAutoenablesItems:NO]; [c removeAllItems]; [c addItemsWithTitles:fieldMappingButtonOptions]; [m addItem:[NSMenuItem separatorItem]]; @@ -773,10 +783,15 @@ [c addItemWithTitle:NSLocalizedString(@"Import all fields", @"import all fields menu item")]; [m addItem:[NSMenuItem separatorItem]]; [c addItemWithTitle:NSLocalizedString(@"Add global value…", @"add global value menu item")]; + [c addItemWithTitle:[NSString stringWithFormat:@"DEFAULT: %@", [fieldMappingTableDefaultValues objectAtIndex:rowIndex]]]; + [[m itemAtIndex:[c numberOfItems]-1] setEnabled:NO]; - // Hide csv file column value if user doesn't want to import it + // If user doesn't want to import it show its DEFAULT value otherwise hide it. if([fieldMappingOperatorArray objectAtIndex:rowIndex] != doNotImport) return [fieldMappingArray objectAtIndex:rowIndex]; + else + return [NSNumber numberWithInteger:[c numberOfItems]-1]; + } } diff --git a/Source/TableDump.m b/Source/TableDump.m index 5385a053..4d6e93ef 100644 --- a/Source/TableDump.m +++ b/Source/TableDump.m @@ -953,7 +953,7 @@ [singleProgressSheet makeKeyWindow]; // Set up the field names import string for INSERT or REPLACE INTO - [insertBaseString appendFormat:@"%@", csvImportHeaderString]; + [insertBaseString appendString:csvImportHeaderString]; [insertBaseString appendString:[selectedTableTarget backtickQuotedString]]; [insertBaseString appendString:@" ("]; insertBaseStringHasEntries = NO; -- cgit v1.2.3