1 |
|
# |
2 |
|
# UserQuery |
3 |
|
# |
4 |
< |
# Set up and record Queries requested fromthe user |
4 |
> |
# Set up and record Queries requested from the user |
5 |
|
# |
6 |
|
# Interface |
7 |
|
# --------- |
8 |
|
# new(UserInterface) : A new query object with a specific interface |
9 |
+ |
# dump(fh,expr) : dump out parameters that match expr to filehandle |
10 |
+ |
# store(fh) : dump every param to fh |
11 |
+ |
# restore(fh) : restore from filehandle |
12 |
+ |
# params() : return list of all params |
13 |
|
# setparam(name,value) : set a parameter |
14 |
|
# setifundef(name,value) : only set param to value if undefined |
15 |
|
# getparam(name) : return value of named parameter |
16 |
+ |
# getexpandedparam(name) : return the value of the parameter with any |
17 |
+ |
# variables expanded in the context of the UserQuery |
18 |
+ |
# variables |
19 |
|
# clearquery() : remove all queries to be asked |
20 |
< |
# setquery($type,$parameter,@args) : register a query of type for $parameter |
20 |
> |
# setquery($type,$parameter,$string,@args) : register a query of type for |
21 |
> |
# $parameter |
22 |
> |
# querycheck(name, checkobject) : Set a checksum to be made on each query |
23 |
> |
# addquerymessage(name,string) : Add an extra message to the query for name |
24 |
|
# askuser() : Ask user registered queries |
25 |
|
# formatquery(args) : apply formatting information for display |
26 |
|
# of the query . args dependent on implemtation |
40 |
|
return $self; |
41 |
|
} |
42 |
|
|
43 |
+ |
sub dump { |
44 |
+ |
my $self=shift; |
45 |
+ |
my $fh=shift; |
46 |
+ |
my $string=shift; |
47 |
+ |
|
48 |
+ |
foreach $key ( keys %{$self->{params}} ) { |
49 |
+ |
if ( $key=~/$string/ ) { |
50 |
+ |
print $fh "k:".$key."\n"; |
51 |
+ |
print $fh "v:".$self->{params}{$key}."\n"; |
52 |
+ |
} |
53 |
+ |
} |
54 |
+ |
print $fh "#End\n"; |
55 |
+ |
} |
56 |
+ |
|
57 |
+ |
sub store { |
58 |
+ |
my $self=shift; |
59 |
+ |
my $fh=shift; |
60 |
+ |
|
61 |
+ |
my $key; |
62 |
+ |
foreach $key ( keys %{$self->{params}} ) { |
63 |
+ |
print $fh "k:".$key."\n"; |
64 |
+ |
print $fh "v:".$self->{params}{$key}."\n"; |
65 |
+ |
} |
66 |
+ |
print $fh "#End\n"; |
67 |
+ |
} |
68 |
+ |
|
69 |
+ |
sub restore { |
70 |
+ |
my $self=shift; |
71 |
+ |
my $fh=shift; |
72 |
+ |
|
73 |
+ |
my $check="k:"; |
74 |
+ |
my $key=""; |
75 |
+ |
while ( $line=<$fh> ) { |
76 |
+ |
chomp $line; |
77 |
+ |
last if ( $line eq "\#End" ); |
78 |
+ |
if ( $line!~/^$check/ ) { |
79 |
+ |
die "Data Corruption Error when restoring $self\n"; |
80 |
+ |
} |
81 |
+ |
if ( $check eq "k:" ) { |
82 |
+ |
$check="v:"; |
83 |
+ |
($key=$line)=~s/k://; |
84 |
+ |
} |
85 |
+ |
else { |
86 |
+ |
$check="k:"; |
87 |
+ |
($value=$line)=~s/v://; |
88 |
+ |
$self->setparam($key,$value); |
89 |
+ |
} |
90 |
+ |
} #end while |
91 |
+ |
} |
92 |
+ |
|
93 |
|
sub setparam { |
94 |
|
my $self=shift; |
95 |
|
my $name=shift; |
96 |
|
my $value=shift; |
97 |
|
|
98 |
+ |
print "Setting $name = $value\n"; |
99 |
|
$self->{params}{$name}=$value; |
100 |
|
} |
101 |
|
|
102 |
+ |
sub params { |
103 |
+ |
my $self=shift; |
104 |
+ |
return ( keys %{$self->{params}} ); |
105 |
+ |
} |
106 |
+ |
|
107 |
|
sub setifundef { |
108 |
|
my $self=shift; |
109 |
|
my $name=shift; |
120 |
|
return $self->{params}{$name}; |
121 |
|
} |
122 |
|
|
123 |
+ |
sub getexpandedparam { |
124 |
+ |
my $self=shift; |
125 |
+ |
my $name=shift; |
126 |
+ |
|
127 |
+ |
my $string=$self->getparam($name); |
128 |
+ |
$string=~s/\$\((.*?)\)/$self->{paramhash}{$1}/g; |
129 |
+ |
$string=~s/\$(.*?)( |\/|\Z)/$self->{paramhash}{$1}$2/g; |
130 |
+ |
|
131 |
+ |
return $string; |
132 |
+ |
} |
133 |
+ |
|
134 |
|
sub clearquery { |
135 |
|
my $self=shift; |
136 |
|
undef %self->{querytype}; |
154 |
|
} |
155 |
|
} |
156 |
|
|
157 |
+ |
sub querycheck { |
158 |
+ |
my $self=shift; |
159 |
+ |
my $name=shift; |
160 |
+ |
my $check=shift; |
161 |
+ |
|
162 |
+ |
$self->{querycheck}{$name}=$check; |
163 |
+ |
} |
164 |
+ |
|
165 |
+ |
sub addquerymessage { |
166 |
+ |
my $self=shift; |
167 |
+ |
my $name=shift; |
168 |
+ |
my $string=shift; |
169 |
+ |
$self->{querystring}{$name}=$self->{querystring}{$name}.$string; |
170 |
+ |
} |
171 |
+ |
|
172 |
|
sub formatquery { |
173 |
|
my $self=shift; |
174 |
|
|
180 |
|
my $self=shift; |
181 |
|
my $string=shift; |
182 |
|
|
183 |
< |
$self->{UserInterface}->startform(); |
183 |
> |
$self->{UserInterface}->startform($string); |
184 |
|
foreach $query ( @{$self->{queries}} ) { |
185 |
< |
$self->{UserInterface}->runquery($self->{querytype}{$query}, |
186 |
< |
$query, $self->{querystring}{$query}, |
187 |
< |
$self->{queryvars}{$query}, $self->{queryformat}{$name}); |
185 |
> |
my @rqargs=($self->{querytype}{$query}, $query, |
186 |
> |
$self->{querystring}{$query}, |
187 |
> |
$self->{queryvars}{$query}, $self->{queryformat}{$query}); |
188 |
> |
if ( exists $self->{querycheck}{$query} ) { |
189 |
> |
$self->{UserInterface}->runcheckedquery( |
190 |
> |
$self->{querycheck}{$query}, @rqargs); |
191 |
> |
} |
192 |
> |
else { |
193 |
> |
$self->{UserInterface}->runquery(@rqargs); |
194 |
> |
} |
195 |
|
} |
196 |
|
$self->{UserInterface}->endform($self); |
197 |
|
} |