package org.openedit.entermedia.modules;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openedit.data.Searcher;
import org.openedit.data.SearcherManager;
import org.openedit.entermedia.search.RelatedKeywordSearcher;
import com.openedit.OpenEditException;
import com.openedit.WebPageRequest;
import com.openedit.hittracker.HitTracker;
import com.openedit.modules.BaseModule;
public class RelatedKeywordModule extends BaseModule
{
private static final Log log = LogFactory.getLog(RelatedKeywordModule.class);
protected SearcherManager getSearcherManager()
{
return (SearcherManager) getBeanFactory().getBean("searcherManager");
}
public RelatedKeywordSearcher getSuggestionsSearcher(WebPageRequest inReq)
{
return getSuggestionsSearcher(inReq, true);
}
public RelatedKeywordSearcher getSuggestionsSearcher(WebPageRequest inReq, boolean inPutPageValue) throws OpenEditException
{
String catalogid = inReq.findValue("catalogid");
String searchType = inReq.findValue("searchtype");
if( searchType == null)
{
searchType = "asset";
}
String type = searchType + "RelatedKeyword";
RelatedKeywordSearcher searcher = (RelatedKeywordSearcher) getSearcherManager().getSearcher(catalogid, type); // e.g.
// "assetThesaurusSearcher"
if (searcher == null)
{
log.warn("Could not find a searcher for type '" + type + "' in catalog " + catalogid);
}
else if (inPutPageValue)
{
inReq.putPageValue("searcher", searcher);
}
return searcher;
}
public Map<String, String> getSuggestions(WebPageRequest inReq) throws Exception
{
String searchType = inReq.findValue("searchtype");
if( !"asset".equals(searchType))
{
return null;
}
String catalogid = inReq.findValue("catalogid");
//searcher = (Searcher) inReq.getPageValue("searcher");
Searcher searcher = getSearcherManager().getSearcher(catalogid, searchType);
HitTracker tracker = searcher.loadHits(inReq);
if (tracker == null)
{
tracker = (HitTracker) inReq.getPageValue("hits");
}
//saves the values to the search
if( tracker != null)
{
inReq.putPageValue("query", tracker.getSearchQuery());
getSuggestionsSearcher(inReq).getSuggestions(tracker, searcher);
}
return null;
}
/*
public HitTracker getSynonyms(WebPageRequest inReq) throws Exception
{
SearchQuery query = getSuggestionsSearcher(inReq).createSearchQuery();
String searchString = inReq.getRequestParameter("description.value");
query.addMatches("synonyms", searchString);
HitTracker wordsHits = getSuggestionsSearcher(inReq).cachedSearch(inReq, query);
return wordsHits;
}
*/
}