/* * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.modules.actions.portlets; import java.util.List; import org.apache.turbine.util.RunData; import org.apache.velocity.context.Context; import org.apache.jetspeed.portal.Portlet; import org.apache.jetspeed.util.PortletSessionState; import org.apache.jetspeed.services.search.Search; import org.apache.jetspeed.services.search.ParsedObject; import org.apache.jetspeed.services.search.SearchResults; /** * Search Actions built here * * @author <a href="mailto:taylor@apache.org">David Sean taylor</a> * @version $Id: SearchAction.java,v 1.3 2004/02/23 02:56:58 jford Exp $ */ public class SearchAction extends GenericMVCAction { public final static String SEARCH_STRING = "search"; public final static String SEARCH_RESULTS = "search_results"; public final static String SEARCH_RESULTSIZE = "search_resultsize"; /** * Subclasses must override this method to provide default behavior * for the portlet action */ public void buildNormalContext(Portlet portlet, Context context, RunData rundata) throws Exception { List results = (List)rundata.getRequest().getAttribute(SEARCH_RESULTS); if (null == results) { results = (List)PortletSessionState.getAttribute(rundata, SEARCH_RESULTS); //System.out.println("session results = " + results); } else { //System.out.println("qp results = " + results); PortletSessionState.setAttribute(rundata, SEARCH_RESULTS, results); } if (null != results) { context.put(SEARCH_RESULTS, results); } String searchString = (String)rundata.getParameters().getString(SEARCH_STRING); if (searchString == null || searchString.trim().length() == 0) { searchString = (String)PortletSessionState.getAttribute(rundata, SEARCH_STRING); } else { PortletSessionState.setAttribute(rundata, SEARCH_STRING, searchString); } context.put(SEARCH_STRING, searchString); if (results != null) { //System.out.println("size = " + results.size()); context.put(SEARCH_RESULTSIZE, new Integer(results.size())); } } public void doSearch(RunData rundata, Context context) { // get posted new target String searchString = (String)rundata.getParameters().getString(SEARCH_STRING); if (searchString == null || searchString.trim().length() == 0) { return; } // // execute the query // ParsedObject result = null; SearchResults results = Search.search(searchString); //System.out.println("Query hits = " + results.size()); rundata.getRequest().setAttribute(SEARCH_RESULTS, results.getResults()); } }