ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/ActiveDoc/UserQuery.pm
Revision: 1.3
Committed: Thu Sep 23 10:35:02 1999 UTC (25 years, 7 months ago) by williamc
Content type: text/plain
Branch: MAIN
Changes since 1.2: +30 -5 lines
Log Message:
Added checked methods

File Contents

# User Rev Content
1 williamc 1.1 #
2     # UserQuery
3     #
4     # Set up and record Queries requested fromthe user
5     #
6     # Interface
7     # ---------
8     # new(UserInterface) : A new query object with a specific interface
9     # setparam(name,value) : set a parameter
10 williamc 1.2 # setifundef(name,value) : only set param to value if undefined
11 williamc 1.1 # getparam(name) : return value of named parameter
12     # clearquery() : remove all queries to be asked
13 williamc 1.3 # setquery($type,$parameter,$string,@args) : register a query of type for
14     # $parameter
15     # querycheck(name, checkobject) : Set a checksum to be made on each query
16     # addquerymessage(name,string) : Add an extra message to the query for name
17 williamc 1.1 # askuser() : Ask user registered queries
18     # formatquery(args) : apply formatting information for display
19     # of the query . args dependent on implemtation
20     # query type etc.
21     # interface() : Return the interface object for the query
22    
23     package ActiveDoc::UserQuery;
24     require 5.001;
25    
26     sub new {
27     my $class=shift;
28     my $interface=shift;
29     $self={};
30     bless $self, $class;
31     $self->{params}={};
32     $self->{UserInterface}=$interface;
33     return $self;
34     }
35    
36     sub setparam {
37     my $self=shift;
38     my $name=shift;
39     my $value=shift;
40    
41     $self->{params}{$name}=$value;
42 williamc 1.2 }
43    
44     sub setifundef {
45     my $self=shift;
46     my $name=shift;
47     my $value=shift;
48    
49     if ( ! defined $self->getparam($name) ) {
50     $self->setparam($name, $value);
51     }
52 williamc 1.1 }
53    
54     sub getparam {
55     my $self=shift;
56     my $name=shift;
57     return $self->{params}{$name};
58     }
59    
60     sub clearquery {
61     my $self=shift;
62     undef %self->{querytype};
63     undef %self->{queryvars};
64     undef @{$self->{queries}};
65     undef %{$self->{queryformat}};
66     }
67    
68     sub setquery {
69     my $self=shift;
70     my $type=shift;
71     my $name=shift;
72     my $string=shift;
73     my @vars=@_;
74    
75     push @{$self->{queries}},$name;
76     $self->{querytype}{$name}=$type;
77     $self->{querystring}{$name}=$string;
78     for ( $i=0; $i<=$#vars; $i++ ) {
79     $self->{queryvars}{$name}[$i]=$vars[$i];
80     }
81     }
82    
83 williamc 1.3 sub querycheck {
84     my $self=shift;
85     my $name=shift;
86     my $check=shift;
87    
88     $self->{querycheck}{$name}=$check;
89     }
90    
91     sub addquerymessage {
92     my $self=shift;
93     my $name=shift;
94     my $string=shift;
95     $self->{querystring}{$name}=$self->{querystring}{$name}.$string;
96     }
97    
98 williamc 1.1 sub formatquery {
99     my $self=shift;
100    
101     my $name=$self->{queries}[$#$self->{queries}];
102     $self->{queryformat}{$name}= @_;
103     }
104    
105     sub askuser {
106     my $self=shift;
107     my $string=shift;
108    
109 williamc 1.3 $self->{UserInterface}->startform($string);
110 williamc 1.1 foreach $query ( @{$self->{queries}} ) {
111 williamc 1.3 my @rqargs=($self->{querytype}{$query}, $query,
112     $self->{querystring}{$query},
113     $self->{queryvars}{$query}, $self->{queryformat}{$query});
114     if ( exists $self->{querycheck}{$query} ) {
115     $self->{UserInterface}->runcheckedquery(
116     $self->{querycheck}{$query}, @rqargs);
117     }
118     else {
119     $self->{UserInterface}->runquery(@rqargs);
120     }
121 williamc 1.1 }
122     $self->{UserInterface}->endform($self);
123     }
124    
125     sub interface {
126     my $self=shift;
127     return $self->{UserInterface};
128     }