|
47 | 47 | static const NSString *SPTriggerCreated = @"TriggerCreated";
|
48 | 48 | static const NSString *SPTriggerSQLMode = @"TriggerSQLMode";
|
49 | 49 |
|
| 50 | +typedef NS_ENUM(NSInteger, SPTriggerActionTimeTag) { |
| 51 | + SPTriggerActionTimeBeforeTag = 0, |
| 52 | + SPTriggerActionTimeAfterTag = 1 |
| 53 | +}; |
| 54 | + |
| 55 | +typedef NS_ENUM(NSInteger, SPTriggerEventTag) { |
| 56 | + SPTriggerEventInsertTag = 0, |
| 57 | + SPTriggerEventUpdateTag = 1, |
| 58 | + SPTriggerEventDeleteTag = 2 |
| 59 | +}; |
| 60 | + |
| 61 | +static SPTriggerActionTimeTag TagForActionTime(NSString *mysql); |
| 62 | +static SPTriggerEventTag TagForEvent(NSString *mysql); |
| 63 | + |
50 | 64 | @interface SPTableTriggers ()
|
51 | 65 |
|
52 | 66 | - (void)_editTriggerAtIndex:(NSInteger)index;
|
@@ -208,18 +222,29 @@ - (IBAction)confirmAddTrigger:(id)sender
|
208 | 222 | }
|
209 | 223 |
|
210 | 224 | NSString *triggerName = [triggerNameTextField stringValue];
|
211 |
| - NSString *triggerActionTime = ([triggerActionTimePopUpButton indexOfSelectedItem]) ? @"AFTER" : @"BEFORE"; |
212 |
| - NSString *triggerEvent = @""; |
213 | 225 |
|
214 |
| - switch ([triggerEventPopUpButton indexOfSelectedItem]) |
| 226 | + NSString *triggerActionTime = @""; |
| 227 | + switch ([triggerActionTimePopUpButton selectedTag]) |
| 228 | + { |
| 229 | + case SPTriggerActionTimeBeforeTag: |
| 230 | + triggerActionTime = @"BEFORE"; |
| 231 | + break; |
| 232 | + |
| 233 | + case SPTriggerActionTimeAfterTag: |
| 234 | + triggerActionTime = @"AFTER"; |
| 235 | + break; |
| 236 | + } |
| 237 | + |
| 238 | + NSString *triggerEvent = @""; |
| 239 | + switch ([triggerEventPopUpButton selectedTag]) |
215 | 240 | {
|
216 |
| - case 0: |
| 241 | + case SPTriggerEventInsertTag: |
217 | 242 | triggerEvent = @"INSERT";
|
218 | 243 | break;
|
219 |
| - case 1: |
| 244 | + case SPTriggerEventUpdateTag: |
220 | 245 | triggerEvent = @"UPDATE";
|
221 | 246 | break;
|
222 |
| - case 2: |
| 247 | + case SPTriggerEventDeleteTag: |
223 | 248 | triggerEvent = @"DELETE";
|
224 | 249 | break;
|
225 | 250 | }
|
@@ -531,23 +556,9 @@ - (void)_editTriggerAtIndex:(NSInteger)index
|
531 | 556 | [triggerNameTextField setStringValue:[trigger objectForKey:SPTriggerName]];
|
532 | 557 | [triggerStatementTextView setString:[trigger objectForKey:SPTriggerStatement]];
|
533 | 558 |
|
534 |
| - // Timin title is different then what we have saved in the database (case difference) |
535 |
| - for (NSUInteger i = 0; i < [[triggerActionTimePopUpButton itemArray] count]; i++) |
536 |
| - { |
537 |
| - if ([[[triggerActionTimePopUpButton itemTitleAtIndex:i] uppercaseString] isEqualToString:[[trigger objectForKey:SPTriggerActionTime] uppercaseString]]) { |
538 |
| - [triggerActionTimePopUpButton selectItemAtIndex:i]; |
539 |
| - break; |
540 |
| - } |
541 |
| - } |
| 559 | + [triggerActionTimePopUpButton selectItemWithTag:TagForActionTime([trigger objectForKey:SPTriggerActionTime])]; |
542 | 560 |
|
543 |
| - // Event title is different then what we have saved in the database (case difference) |
544 |
| - for (NSUInteger i = 0; i < [[triggerEventPopUpButton itemArray] count]; i++) |
545 |
| - { |
546 |
| - if ([[[triggerEventPopUpButton itemTitleAtIndex:i] uppercaseString] isEqualToString:[[trigger objectForKey:SPTriggerEvent] uppercaseString]]) { |
547 |
| - [triggerEventPopUpButton selectItemAtIndex:i]; |
548 |
| - break; |
549 |
| - } |
550 |
| - } |
| 561 | + [triggerEventPopUpButton selectItemWithTag:TagForEvent([trigger objectForKey:SPTriggerEvent])]; |
551 | 562 |
|
552 | 563 | // Change button label from Add to Edit
|
553 | 564 | [confirmAddTriggerButton setTitle:NSLocalizedString(@"Save", @"Save trigger button label")];
|
@@ -642,3 +653,24 @@ - (void)dealloc
|
642 | 653 | }
|
643 | 654 |
|
644 | 655 | @end
|
| 656 | + |
| 657 | +#pragma mark - |
| 658 | + |
| 659 | +SPTriggerActionTimeTag TagForActionTime(NSString *mysql) |
| 660 | +{ |
| 661 | + NSString *uc = [mysql uppercaseString]; |
| 662 | + if([uc isEqualToString:@"BEFORE"]) return SPTriggerActionTimeBeforeTag; |
| 663 | + if([uc isEqualToString:@"AFTER"]) return SPTriggerActionTimeAfterTag; |
| 664 | + SPLog(@"Unknown trigger action time: %@",uc); |
| 665 | + return -1; |
| 666 | +} |
| 667 | + |
| 668 | +SPTriggerEventTag TagForEvent(NSString *mysql) |
| 669 | +{ |
| 670 | + NSString *uc = [mysql uppercaseString]; |
| 671 | + if([uc isEqualToString:@"INSERT"]) return SPTriggerEventInsertTag; |
| 672 | + if([uc isEqualToString:@"UPDATE"]) return SPTriggerEventUpdateTag; |
| 673 | + if([uc isEqualToString:@"DELETE"]) return SPTriggerEventDeleteTag; |
| 674 | + SPLog(@"Unknown trigger event: %@",uc); |
| 675 | + return -1; |
| 676 | +} |
0 commit comments