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

# 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     # 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 williamc 1.2 }
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 williamc 1.1 }
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     }