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

# 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,$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 # 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 }
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 }
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 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 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 $self->{UserInterface}->startform($string);
110 foreach $query ( @{$self->{queries}} ) {
111 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 }
122 $self->{UserInterface}->endform($self);
123 }
124
125 sub interface {
126 my $self=shift;
127 return $self->{UserInterface};
128 }