ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/ActiveDoc/Query.pm
(Generate patch)

Comparing COMP/SCRAM/src/ActiveDoc/Query.pm (file contents):
Revision 1.3 by williamc, Fri Dec 17 15:20:43 1999 UTC vs.
Revision 1.7 by williamc, Wed Mar 1 11:49:18 2000 UTC

# Line 26 | Line 26
26   #                  affected by lodgevalue until OK called.
27   # setparam(name,value) : set the value of a given query to list
28   # setifundef(name,value) : set the value of a given query to list
29 < # expand(@string)        : expand given strings
29 > # expand(string)         : expand given string
30   # lodgevalue(name,val)   : set a value of a given query variable to the list
31   #                          current value will be expanded in terms of these
32 + #                          return (pass/fail,messageobject,new_vals_in_options)
33   # OK()                   : set all query values to the values of the lodged
34   #                          variables
35   # cancel()               : clear the values of any lodged variables
36   # setparam(name,value)   : hard set
37   # params                 : return list of all parameters
38 + # runchecker(name,value) : run a query checker to analyse a value, any
39 + #                          return values are added to the option list
40  
41   package ActiveDoc::Query;
42   require 5.004;
# Line 60 | Line 63 | sub intro {
63   sub querytype {
64          my $self=shift;
65          my $name=shift;
66 +        my $rv;
67  
68 <        @_?$self->{querytype}{$name}=shift
69 <          :$self->{querytype}{$name};
68 >        if ( @_) {
69 >             $rv=shift;
70 >             if ( ! exists $self->{querytype}{$name} ) {
71 >                # store the order in which definitions are made
72 >                push @{$self->{queryorder}}, $name;
73 >             }
74 >             $self->{querytype}{$name}=$rv;
75 >        }
76 >        else {
77 >          $rv=$self->{querytype}{$name};
78 >        }
79 >        return $rv;
80 >        
81   }
82  
83   sub querycheck {
# Line 77 | Line 92 | sub querymessage {
92          my $self=shift;
93          my $name=shift;
94  
95 <        @_?($self->{querymessage}{$name}=shift)
96 <          :($self->expand($self->{querymessage}{$name}));
95 >        if ( @_ ) {
96 >          $self->{querymessage}{$name}=shift;
97 >        }
98 >        return  $self->expand($self->{querymessage}{$name});
99   }
100  
101   sub queryprompt {
# Line 88 | Line 105 | sub queryprompt {
105          my $rv=undef;
106          if ( @_ ) {
107            $self->{queryprompt}{$name}=shift;
108 <          $rv=$self->{queryprompt}{$name};
109 <        } elsif ( defined $self->{queryprompt}{$name} ) {
93 <          $rv=$self->expand($self->{queryprompt}{$name});
108 >        } elsif ( ! defined $self->{queryprompt}{$name} ) {
109 >          $self->{queryprompt}{$name}="";
110          }
111 +        $rv=$self->expand($self->{queryprompt}{$name});
112          return $rv;            
113   }
114  
# Line 114 | Line 131 | sub expand {
131          my $self=shift;
132          my $string=shift;
133  
134 +        return "" , if ( ! defined $string );
135          $string=~s{
136                  \$\((\w+)\)
137          }{
# Line 152 | Line 170 | sub getparam {
170   sub lodgevalue {
171          my $self=shift;
172          my $name=shift;
173 +        my $value=shift;
174 +
175 +        # pass this parameter to the checker
176 +        my ($ret,$message,@vals)=$self->runchecker($name,$value);
177 +        # only lodge the value if its valid
178 +        if ( $ret eq 0 ) {
179 +          $self->_lodgevalue($name,$value);
180 +        }
181 +        return ($ret,$message,@vals);
182 + }
183 +
184 + sub _lodgevalue {
185 +        my $self=shift;
186 +        my $name=shift;
187 +        my $value=shift;
188 +
189 +        $self->{lodgehash}{$name}=$value;
190 + }
191  
192 <        $self->{lodgehash}{$name}=shift;
192 > sub runchecker {
193 >        my $self=shift;
194 >        my $name=shift;
195 >        my $value=shift;
196 >        my $ret=0;
197 >        my $message;
198 >        my @vals=();
199 >
200 >        if (defined $self->querycheck($name)) {
201 >          ($ret,$message,@vals)=$self->querycheck($name)->consider($value);
202 >          # add any analysis options to the option list
203 >          if ( $#vals >= 0 ) {
204 >           $self->queryoptions($name,@vals);
205 >          }
206 >        }
207 >        return ($ret,$message,@vals);
208   }
209  
210   sub OK {
# Line 166 | Line 217 | sub OK {
217  
218   sub querylist {
219          my $self=shift;
220 <        return ( keys %{$self->{querytype}});
220 >        return @{$self->{queryorder}};
221   }
222  
223   sub cancel {
# Line 192 | Line 243 | sub setparam {
243          my $name=shift;
244          my $value=shift;
245  
246 <        print "Setting $name = $value\n";
246 >        #print "Setting $name = $value\n";
247          $self->{params}{$name}=$value;
248 <        $self->lodgevalue($name,$value);
248 >        $self->_lodgevalue($name,$value);
249   }
250  
251   sub params {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines