source: trunk/gsdl/src/recpt/queryaction.h@ 4906

Last change on this file since 4906 was 4780, checked in by kjdon, 21 years ago

have a new level selection macro, gformselection, which is used only in form search forms, in place of gselection. gformselection defaults to gselection. if paragraph level is defined, this is not used for form searching, so its removed from the selection. if there is no paragraph level, the default is used - gselection.

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.6 KB
Line 
1/**********************************************************************
2 *
3 * queryaction.h --
4 * Copyright (C) 1999 The New Zealand Digital Library Project
5 *
6 * A component of the Greenstone digital library software
7 * from the New Zealand Digital Library Project at the
8 * University of Waikato, New Zealand.
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 *
24 *********************************************************************/
25
26
27#ifndef QUERYACTION_H
28#define QUERYACTION_H
29
30#include "gsdlconf.h"
31#include "action.h"
32#include "receptionist.h"
33
34struct colinfo_t {
35 void clear();
36 colinfo_t () {clear();}
37
38 format_t *formatlistptr;
39 browserclass *browserptr;
40};
41
42struct QueryResult_t {
43 void clear ();
44 QueryResult_t () {clear();}
45
46 ResultDocInfo_t doc;
47 text_t collection;
48};
49
50struct gteqQueryResult_t
51{
52 bool operator()(const QueryResult_t &t1, const QueryResult_t &t2) const
53 { return t1.doc.ranking >= t2.doc.ranking; }
54};
55
56typedef set<QueryResult_t, gteqQueryResult_t> QueryResult_tset;
57
58
59class queryaction : public action {
60
61protected:
62
63 receptionist *recpt;
64
65 text_t formatstring;
66 int num_phrases;
67
68 virtual void define_single_query_macros (cgiargsclass &args,
69 displayclass &disp,
70 const FilterResponse_t &response,
71 bool syntax_error);
72 virtual void define_query_macros (cgiargsclass &args, displayclass &disp,
73 int numDocs, isapprox isApprox);
74
75 void get_formatted_query_string (text_t &formattedstring, cgiargsclass &args,
76 displayclass &disp, ostream &logout);
77 void define_query_interface(displayclass &disp, cgiargsclass &args,
78 recptprotolistclass *protos, ostream &logout);
79
80 void define_form_macros (displayclass &disp, cgiargsclass &args,
81 recptprotolistclass *protos, ostream &logout);
82
83 void define_history_macros (displayclass &disp, cgiargsclass &args,
84 recptprotolistclass *protos, ostream &logout);
85
86 virtual void set_option_macro (const text_t &macroname, text_t current_value,
87 bool display_single,
88 const FilterOption_t &option, displayclass &disp);
89
90 void set_gformselection_macro (text_t current_value,
91 const FilterOption_t &option,
92 displayclass &disp);
93
94 void output_ccp (cgiargsclass &args, recptprotolistclass *protos,
95 displayclass &disp, outconvertclass &outconvert,
96 ostream &textout, ostream &logout);
97
98 bool search_multiple_collections (cgiargsclass &args,
99 recptprotolistclass *protos,
100 browsermapclass *browsers,
101 displayclass &disp,
102 outconvertclass &outconvert,
103 ostream &textout,
104 ostream &logout);
105
106 virtual bool search_single_collection (cgiargsclass &args,
107 const text_t &collection,
108 recptprotolistclass *protos,
109 browsermapclass *browsers,
110 displayclass &disp,
111 outconvertclass &outconvert,
112 ostream &textout, ostream &logout);
113
114
115 bool save_search_history(cgiargsclass &args, int numdocs, isapprox isApprox);
116
117public:
118 queryaction ();
119 virtual ~queryaction () {}
120
121 void set_receptionist (receptionist *therecpt) {recpt=therecpt;}
122
123 void configure (const text_t &key, const text_tarray &cfgline);
124 bool init (ostream &logout);
125
126 virtual text_t get_action_name () {return "q";}
127
128 virtual bool check_cgiargs (cgiargsinfoclass &argsinfo, cgiargsclass &args,
129 recptprotolistclass *protos, ostream &logout);
130
131 void get_cgihead_info (cgiargsclass &args, recptprotolistclass *protos,
132 response_t &response, text_t &response_data,
133 ostream &logout);
134
135 virtual void define_internal_macros (displayclass &disp, cgiargsclass &args,
136 recptprotolistclass *protos, ostream &logout);
137
138 virtual void define_external_macros (displayclass &disp, cgiargsclass &args,
139 recptprotolistclass *protos, ostream &logout);
140
141 virtual bool do_action (cgiargsclass &args, recptprotolistclass *protos,
142 browsermapclass *browsers, displayclass &disp,
143 outconvertclass &outconvert, ostream &textout,
144 ostream &logout);
145
146};
147
148#endif
Note: See TracBrowser for help on using the repository browser.