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,$string,@args) : register a query of type for |
21 |
|
# $parameter |
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}; |