-
Notifications
You must be signed in to change notification settings - Fork 180
/
GenericEvidenceSource.m
93 lines (78 loc) · 2.33 KB
/
GenericEvidenceSource.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//
// GenericEvidenceSource.m
// ControlPlane
//
// Created by David Symonds on 19/07/07.
//
#import "GenericEvidenceSource.h"
@implementation GenericEvidenceSource
- (id)init
{
if (!(self = [super initWithNibNamed:@"GenericRule"]))
return nil;
return self;
}
- (NSMutableDictionary *)readFromPanel
{
NSMutableDictionary *dict = [super readFromPanel];
id sel = [[ruleParameterController arrangedObjects] objectAtIndex:[ruleParameterController selectionIndex]];
[dict setValue:[sel valueForKey:@"parameter"] forKey:@"parameter"];
[dict setValue:[sel valueForKey:@"type"] forKey:@"type"];
if (![dict objectForKey:@"description"])
[dict setValue:[sel valueForKey:@"description"] forKey:@"description"];
return dict;
}
- (void)writeToPanel:(NSDictionary *)dict usingType:(NSString *)type
{
[super writeToPanel:dict usingType:type];
NSString *useType = type;
if (!useType) {
if ([dict objectForKey:@"type"])
useType = [dict valueForKey:@"type"];
else
useType = [[self typesOfRulesMatched] objectAtIndex:0];
}
[suggestionLeadText setStringValue:[self getSuggestionLeadText:useType]];
[ruleParameterController removeObjects:[ruleParameterController arrangedObjects]];
NSEnumerator *en = [[self getSuggestions] objectEnumerator];
NSDictionary *suggestion;
while ((suggestion = [en nextObject])) {
if (![[suggestion valueForKey:@"type"] isEqualToString:useType])
continue;
[ruleParameterController addObject:suggestion];
}
if (![dict objectForKey:@"parameter"])
[ruleParameterController selectNext:self];
else {
// Pick the current parameter
en = [[ruleParameterController arrangedObjects] objectEnumerator];
unsigned int index = 0;
NSDictionary *elt;
NSObject *thisParam = [dict valueForKey:@"parameter"];
while ((elt = [en nextObject])) {
// TODO: Check that this test is correct!
if ([[elt valueForKey:@"parameter"] isEqualTo:thisParam])
break;
++index;
}
if (elt) {
// Found!
[ruleParameterController setSelectionIndex:index];
} else {
// Push existing one in, since it isn't there
[ruleParameterController setSelectsInsertedObjects:YES];
[ruleParameterController addObject:dict];
}
}
}
- (NSString *)getSuggestionLeadText:(NSString *)type
{
[self doesNotRecognizeSelector:_cmd];
return nil;
}
- (NSArray *)getSuggestions
{
[self doesNotRecognizeSelector:_cmd];
return nil;
}
@end