<%@page language="java"%> <%@ page import="java.util.Vector" %> <%@ page import="java.util.Arrays" %> <%@ page import="java.util.Enumeration" %> <%@ page import="java.util.Hashtable" %> <%@ page import="java.util.Vector" %> <%@ page import="java.util.StringTokenizer" %> <%@ page import="java.net.URLEncoder" %> <%@ page import="ab.website.WebTools" %> <%@ page import="ab.website.Friends" %> www.AsoBrain.com

Friends - Search for Episode



<% WebTools wt = WebTools.get( request , pageContext ); String keywords = wt.getQuery( "keywords" ); if ( keywords == null ) keywords = ""; %>
Search for:

<% if ( keywords.length() > 0 ) { Hashtable found = new Hashtable(); Hashtable count = new Hashtable(); int maxCount = 0; Vector allkeywords = new Vector(); StringTokenizer tokenizer = new StringTokenizer( keywords , " " ); while( tokenizer.hasMoreTokens() ) { String token = tokenizer.nextToken(); if ( token.equalsIgnoreCase( "the" ) || token.equalsIgnoreCase( "in" ) || token.equalsIgnoreCase( "and" ) ) continue; allkeywords.addElement( token ); Friends[] matches = (Friends[])wt.query( Friends.class , "SELECT * FROM Friends WHERE name LIKE '%"+token+"%' OR content LIKE '%"+token+"%' OR keywords LIKE '%"+token+"%' ORDER BY episode ASC"); for ( int i = 0 ; i < matches.length ; i++ ) { String key = ""+matches[i].season+"."+matches[i].episode; int c = 0; if ( !found.containsKey( key ) ) { found.put( key , matches[i] ); count.put( key , new Integer( 1 ) ); c = 1; } else { c = ((Integer)count.get( key )).intValue()+1; count.remove( key ); count.put( key , new Integer( c ) ); } maxCount = Math.max( maxCount , c ); } } Vector resultVector = new Vector(); Enumeration e = found.keys(); while( e.hasMoreElements() ) { String key = (String)e.nextElement(); Friends f = (Friends)found.get( key ); int c = ((Integer)count.get( key )).intValue(); if ( c < maxCount ) continue; resultVector.addElement( f ); } if ( found.size() == 0 ) out.println( "No episodes found for that search string.

" ); else out.println( "Found " + resultVector.size() + " episode(s) in which " + maxCount + " of the keywords were found:

" ); Friends[] result = new Friends[ resultVector.size() ]; for ( int w = 0 ; w < result.length ; w++ ) result[w] = (Friends)resultVector.elementAt( w ); Arrays.sort( result ); int pagesize = 5; String pageString = wt.getQuery( "page" ); int p = pageString != null && pageString.length() > 0 ? new Integer( pageString ).intValue() : 0; int pageCount = (int)Math.min( Math.ceil( (float)result.length / (float)pagesize ) , 10 ); if ( pageCount > 1 ) { out.print( "" ); out.print( "" ); if ( p > 0 ) { out.print( "" ); } for ( int cp = 0 ; cp < pageCount ; cp++ ) { out.print( "" ); } if ( (p+1) < pageCount ) { out.print( "" ); } out.print( "
Page:
" ); out.print( "<
" ); out.print( ""+(cp+1)+"
" ); out.print( ">
" ); out.println( "
" ); } for ( int w = p*pagesize ; w < (p+1)*pagesize && w < result.length; w++ ) { Friends f = result[w]; out.println( "" ); String se = f.season+"."+f.episode; if ( se.length() < 4 ) se+="  "; if ( se.length() < 5 ) se+=" "; out.println( "" ); out.println( "



"+se+"
"+f.name+"
" ); String content = f.content; for ( int i = 0 ; i < allkeywords.size() ; i++ ) { String kw = (String)allkeywords.elementAt( i ); content = wt.hilite( content , kw ); } out.println( content ); if ( f.keywords != null && f.keywords.length() > 0 ) out.println( "

Keywords: " + f.keywords ); out.println( "


" ); } if ( pageCount > 1 ) { out.print( "" ); out.print( "" ); if ( p > 0 ) { out.print( "" ); } for ( int cp = 0 ; cp < pageCount ; cp++ ) { out.print( "" ); } if ( (p+1) < pageCount ) { out.print( "" ); } out.print( "
Page:
" ); out.print( "<
" ); out.print( ""+(cp+1)+"
" ); out.print( ">
" ); out.println( "
" ); } } %>