1 package net.sourceforge.blogentis.feed;
2
3 //-----------------------------------------------------------------------
4 //Blogentis - a blog publishing platform.
5 //Copyright (C) 2004 Tassos Bassoukos <abassouk@gmail.com>
6 //
7 //This library is free software; you can redistribute it and/or
8 //modify it under the terms of the GNU Lesser General Public
9 //License as published by the Free Software Foundation; either
10 //version 2.1 of the License, or (at your option) any later version.
11 //
12 //This library is distributed in the hope that it will be useful,
13 //but WITHOUT ANY WARRANTY; without even the implied warranty of
14 //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 //Lesser General Public License for more details.
16 //
17 //You should have received a copy of the GNU Lesser General Public
18 //License along with this library; if not, write to the Free Software
19 //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 //-----------------------------------------------------------------------
21 //
22 //$Id: PostSearchModifier.java,v 1.1 2004/10/22 17:34:05 tassos Exp $
23 //
24
25 import java.util.Map;
26
27 import net.sourceforge.blogentis.utils.AbsoluteLinkURL;
28
29 import org.apache.torque.util.Criteria;
30 import org.apache.torque.util.HackHack;
31 import org.apache.turbine.util.RunData;
32
33 public class PostSearchModifier implements FeedModifier {
34 public static final String SEARCH_PARAMETER_NAME = "searchTerm";
35
36 private String term = null;
37
38 private String searchTerm = null;
39
40 private String[] columnNames = null;
41
42 public PostSearchModifier(RunData data, String[] columnNames) {
43 String string = data.getParameters().getString(SEARCH_PARAMETER_NAME);
44 if (string == null)
45 return;
46 searchTerm = string;
47 term = '%' + string + '%';
48 this.columnNames = columnNames;
49 }
50
51 public void modify(Criteria c) {
52 if (term == null)
53 return;
54 Criteria.Criterion cc = null;
55 for(int i = 0; i < columnNames.length; i++) {
56 if (cc == null) {
57 c.add(columnNames[i], (Object)term, HackHack.ILIKE);
58 cc = c.getCriterion(columnNames[i]);
59 } else {
60 cc.or(c.getNewCriterion(columnNames[i], term, HackHack.ILIKE));
61 }
62 }
63 }
64
65 public void modify(AbsoluteLinkURL link) {
66 if (term != null)
67 link.addQueryData(SEARCH_PARAMETER_NAME, searchTerm);
68 }
69
70 public void modify(Map map) {
71 // TODO Must add search description to title ?
72 }
73 }