From 75c1cf6b0a918752c1a6a439e96e5cf8fba7e5ea Mon Sep 17 00:00:00 2001 From: Bibiko Date: Sun, 21 Feb 2010 21:46:10 +0000 Subject: =?UTF-8?q?=E2=80=A2=20CSV=20Import=20Field=20Mapper=20-=20added?= =?UTF-8?q?=20Advanced=20sheet=20for=20setting=20IGNORE,=20DELAYED,=20ON?= =?UTF-8?q?=20DUPLICATE=20KEY=20UPDATE=20''=20for=20INSERT/REPLACE?= =?UTF-8?q?=20INTO=20=E2=80=A2=20if=20during=20import=20CSV=20Import=20an?= =?UTF-8?q?=20error=20occurred=20show=20SP=20Console?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/SPFieldMapperController.m | 102 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 96 insertions(+), 6 deletions(-) (limited to 'Source/SPFieldMapperController.m') diff --git a/Source/SPFieldMapperController.m b/Source/SPFieldMapperController.m index 616497b4..ccf94f99 100644 --- a/Source/SPFieldMapperController.m +++ b/Source/SPFieldMapperController.m @@ -192,6 +192,30 @@ return ([importFieldNamesHeaderSwitch state] == NSOnState)?YES:NO; } +- (NSString*)importHeaderString +{ + if([[importMethodPopup titleOfSelectedItem] isEqualToString:@"INSERT"]) { + return [NSString stringWithFormat:@"INSERT %@%@INTO ", + ([delayedCheckBox state] == NSOnState) ? @"DELAYED " : @"", + ([ignoreCheckBox state] == NSOnState) ? @"IGNORE " : @"" + ]; + } + else if([[importMethodPopup titleOfSelectedItem] isEqualToString:@"REPLACE"]) { + return [NSString stringWithFormat:@"REPLACE %@INTO ", + ([delayedCheckBox state] == NSOnState) ? @"DELAYED " : @"" + ]; + } + return @""; +} + +- (NSString*)onupdateString +{ + if([onupdateCheckBox state] == NSOnState && [[onupdateTextView string] length]) + return [NSString stringWithFormat:@"ON DUPLICATE KEY UPDATE %@", [onupdateTextView string]]; + else + return @""; +} + #pragma mark - #pragma mark IBAction methods @@ -278,10 +302,13 @@ NSInteger i; // If operator is set to = for UPDATE method replace it by doNotImport if(![[importMethodPopup titleOfSelectedItem] isEqualToString:@"UPDATE"]) { + [advancedButton setEnabled:YES]; for(i=0; i<[fieldMappingTableColumnNames count]; i++) { if([fieldMappingOperatorArray objectAtIndex:i] == isEqual) [fieldMappingOperatorArray replaceObjectAtIndex:i withObject:doNotImport]; } + } else { + [advancedButton setEnabled:NO]; } [self updateFieldMappingOperatorOptions]; @@ -351,9 +378,12 @@ [theDelegate importFile]; } +#pragma mark - +#pragma mark Global Value Sheet + - (IBAction)addGlobalSourceVariable:(id)sender { - [NSApp beginSheet:[globalValuesSheet window] + [NSApp beginSheet:globalValuesSheet modalForWindow:[self window] modalDelegate:self didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) contextInfo:nil]; @@ -388,7 +418,7 @@ [globalValuesTableView reloadData]; // Set focus to favorite list to avoid an unstable state - [[globalValuesSheet window] makeFirstResponder:globalValuesTableView]; + [globalValuesSheet makeFirstResponder:globalValuesTableView]; [removeGlobalValueButton setEnabled:([globalValuesTableView numberOfSelectedRows] > 0)]; [insertNULLValueButton setEnabled:([globalValuesTableView numberOfSelectedRows] == 1)]; @@ -411,7 +441,7 @@ // Ensure all changes are stored before ordering out [globalValuesTableView validateEditing]; if ([globalValuesTableView numberOfSelectedRows] == 1) - [[globalValuesSheet window] makeFirstResponder:globalValuesTableView]; + [globalValuesSheet makeFirstResponder:globalValuesTableView]; // Replace the current map pair with the last selected global value if([replaceAfterSavingCheckBox state] == NSOnState && [globalValuesTableView numberOfSelectedRows] == 1) { @@ -428,7 +458,66 @@ } - [NSApp endSheet:[globalValuesSheet window] returnCode:[sender tag]]; + [NSApp endSheet:globalValuesSheet returnCode:[sender tag]]; +} + +#pragma mark - +#pragma mark Advanced Sheet + +- (IBAction)openAdvancedSheet:(id)sender +{ + + if([[importMethodPopup titleOfSelectedItem] isEqualToString:@"REPLACE"]) { + [ignoreCheckBox setEnabled:NO]; + [onupdateCheckBox setEnabled:NO]; + [delayedCheckBox setEnabled:YES]; + [onupdateTextView setBackgroundColor:[NSColor lightGrayColor]]; + [onupdateTextView setEditable:NO]; + } + else if([[importMethodPopup titleOfSelectedItem] isEqualToString:@"INSERT"]) { + [ignoreCheckBox setEnabled:YES]; + [onupdateCheckBox setEnabled:([delayedCheckBox state] == NSOnState) ? NO : YES]; + [delayedCheckBox setEnabled:([onupdateCheckBox state] == NSOnState) ? NO : YES]; + if([onupdateCheckBox state] == NSOffState) { + [onupdateTextView setEditable:NO]; + [onupdateTextView setBackgroundColor:[NSColor lightGrayColor]]; + } else { + [onupdateTextView setEditable:YES]; + [onupdateTextView setBackgroundColor:[NSColor whiteColor]]; + } + } + + [advancedSheet makeFirstResponder:ignoreCheckBox]; + + [NSApp beginSheet:advancedSheet + modalForWindow:[self window] + modalDelegate:self + didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) contextInfo:nil]; +} + +- (IBAction)closeAdvancedSheet:(id)sender +{ + [NSApp endSheet:advancedSheet returnCode:[sender tag]]; +} + +- (IBAction)advancedCheckboxValidation:(id)sender +{ + + if([delayedCheckBox state] == NSOnState) + [onupdateCheckBox setState:NO]; + if([onupdateCheckBox state] == NSOnState) { + [delayedCheckBox setState:NO]; + [onupdateTextView setBackgroundColor:[NSColor whiteColor]]; + [onupdateTextView setEditable:YES]; + [advancedSheet makeFirstResponder:onupdateTextView]; + } else { + [onupdateTextView setBackgroundColor:[NSColor lightGrayColor]]; + [onupdateTextView setEditable:NO]; + } + + [onupdateCheckBox setEnabled:([delayedCheckBox state] == NSOnState) ? NO : YES]; + [delayedCheckBox setEnabled:([onupdateCheckBox state] == NSOnState) ? NO : YES]; + } #pragma mark - @@ -436,8 +525,9 @@ - (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo { - [[globalValuesSheet window] orderOut:self]; - [self updateFieldMappingButtonCell]; + [sheet orderOut:self]; + if (sheet == globalValuesSheet) + [self updateFieldMappingButtonCell]; } - (void)matchHeaderNames -- cgit v1.2.3