source: main/trunk/greenstone2/runtime-src/src/recpt/browseactiontools.cpp@ 21808

Last change on this file since 21808 was 9620, checked in by kjdon, 19 years ago

added some x++ -> ++x changes submitted by Emanuel Dejanu

  • Property svn:keywords set to Author Date Id Revision
File size: 3.6 KB
Line 
1/**********************************************************************
2 *
3 * browseactiontools.cpp --
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#include "browseactiontools.h"
28#include <ctype.h>
29
30void format_browsestring(const text_t& orig, text_t& formatted, int and_or)
31{
32
33
34 text_t conj = g_EmptyText;
35
36 if(and_or == 0){ conj = " | "; }
37 else { conj = " & "; }
38 text_t::const_iterator here = orig.begin();
39 text_t::const_iterator end = orig.end();
40
41 //while not at the end of the filter string
42 while(here!=end){
43 //if seeing text, add it to the formatted string
44 if(!isspace(*here)){
45 formatted.push_back(*here);
46 ++here;
47 }
48 //else, if seeing spaces, check that there is following text and add
49 //the ncessary conjugation if there is.
50 else if(isspace(*here)){
51 while(isspace(*here) && here!=end) ++here;
52 if(here!=end) formatted += conj;
53 }
54 }
55
56}
57
58// this stuff is all copied from the queryoptions code - don't ask how it all
59// hangs in with the filters - those things are a mystery
60void set_browsefilter_options(FilterRequest_t &request, const text_t &browsestring,
61 cgiargsclass &args)
62{
63 request.filterName = "QueryFilter";
64
65 OptionValue_t option;
66
67 option.name = "Term";
68 option.value = browsestring;
69 request.filterOptions.push_back (option);
70
71 option.name = "QueryType";
72 option.value = "boolean";
73 request.filterOptions.push_back (option);
74
75 option.name = "MatchMode";
76 option.value = (args.getintarg("bt")) ? "some" : "all";
77 request.filterOptions.push_back (option);
78
79 option.name = "Casefold";
80 option.value = (args.getintarg("k")) ? "true" : "false";
81 request.filterOptions.push_back (option);
82
83 option.name = "Stem";
84 option.value = (args.getintarg("s")) ? "true" : "false";
85 request.filterOptions.push_back (option);
86
87 option.name = "Maxdocs";
88 option.value = -1;
89 request.filterOptions.push_back (option);
90
91 option.name = "Index";
92 option.value = "dtx";
93 request.filterOptions.push_back (option);
94
95
96}
97
98bool remove_no_meta_results(const text_t& metaname, FilterResponse_t &response,
99 outconvertclass &outconvert)
100{
101
102 ResultDocInfo_tarray::iterator check = response.docInfo.begin();
103 ResultDocInfo_tarray::iterator done = response.docInfo.end();
104 // look through all the returned documents
105 while(check != response.docInfo.end()){
106
107 //if the document doesn't have the metadata item classified on
108 //remove it.
109 text_t title = *((*check).metadata.find(metaname)->second).values.begin();
110 if(title == g_EmptyText)
111 {
112
113 response.docInfo.erase(check);
114
115 }
116 else {
117
118 ++check;
119
120 }
121
122 }
123 return true;
124}
125
126
127
128
129
Note: See TracBrowser for help on using the repository browser.