ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/ActiveDoc/UserQuery.pm
Revision: 1.2
Committed: Mon Sep 20 16:27:58 1999 UTC (25 years, 7 months ago) by williamc
Content type: text/plain
Branch: MAIN
Changes since 1.1: +11 -0 lines
Log Message:
Basic Working Level

File Contents

# Content
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 # setifundef(name,value) : only set param to value if undefined
11 # getparam(name) : return value of named parameter
12 # clearquery() : remove all queries to be asked
13 # setquery($type,$parameter,@args) : register a query of type for $parameter
14 # askuser() : Ask user registered queries
15 # formatquery(args) : apply formatting information for display
16 # of the query . args dependent on implemtation
17 # query type etc.
18 # interface() : Return the interface object for the query
19
20 package ActiveDoc::UserQuery;
21 require 5.001;
22
23 sub new {
24 my $class=shift;
25 my $interface=shift;
26 $self={};
27 bless $self, $class;
28 $self->{params}={};
29 $self->{UserInterface}=$interface;
30 return $self;
31 }
32
33 sub setparam {
34 my $self=shift;
35 my $name=shift;
36 my $value=shift;
37
38 $self->{params}{$name}=$value;
39 }
40
41 sub setifundef {
42 my $self=shift;
43 my $name=shift;
44 my $value=shift;
45
46 if ( ! defined $self->getparam($name) ) {
47 $self->setparam($name, $value);
48 }
49 }
50
51 sub getparam {
52 my $self=shift;
53 my $name=shift;
54 return $self->{params}{$name};
55 }
56
57 sub clearquery {
58 my $self=shift;
59 undef %self->{querytype};
60 undef %self->{queryvars};
61 undef @{$self->{queries}};
62 undef %{$self->{queryformat}};
63 }
64
65 sub setquery {
66 my $self=shift;
67 my $type=shift;
68 my $name=shift;
69 my $string=shift;
70 my @vars=@_;
71
72 push @{$self->{queries}},$name;
73 $self->{querytype}{$name}=$type;
74 $self->{querystring}{$name}=$string;
75 for ( $i=0; $i<=$#vars; $i++ ) {
76 $self->{queryvars}{$name}[$i]=$vars[$i];
77 }
78 }
79
80 sub formatquery {
81 my $self=shift;
82
83 my $name=$self->{queries}[$#$self->{queries}];
84 $self->{queryformat}{$name}= @_;
85 }
86
87 sub askuser {
88 my $self=shift;
89 my $string=shift;
90
91 $self->{UserInterface}->startform();
92 foreach $query ( @{$self->{queries}} ) {
93 $self->{UserInterface}->runquery($self->{querytype}{$query},
94 $query, $self->{querystring}{$query},
95 $self->{queryvars}{$query}, $self->{queryformat}{$name});
96 }
97 $self->{UserInterface}->endform($self);
98 }
99
100 sub interface {
101 my $self=shift;
102 return $self->{UserInterface};
103 }