import com.google.soap.search.GoogleSearchResult; import com.google.soap.search.GoogleSearchResultElement; import java.util.ArrayList; import java.util.Iterator; /* * Created on Mar 24, 2005 * * @author jbergin * */ /** * @author jbergin * */ public class GoogleSearchCollector { private static final int delta = 10; private String key; private String search; private GoogleAgent agent; private ArrayList allResults; public GoogleSearchCollector( String key, String search, int maxResults ) { this.key = key; this.search = search; allResults = new ArrayList(); agent = new DemoGoogleAgent( this.key ); agent.setSearchSize ( delta ); agent.setStartResult( 0 ); int quotient = maxResults / delta; int remainder = maxResults % delta; int nextIndex = 0; boolean allDone = false; for ( int i = 0; i <= quotient; i++ ) { if( !allDone ) { GoogleSearchResult result = agent.search( search ); GoogleSearchResultElement[] elements = result.getResultElements(); int fetched = result.getEndIndex() - i*delta; if ( i == quotient && fetched > remainder ) fetched = remainder; for ( int j = 0; j < fetched; j++ ) allResults.add( elements[j] ); if ( fetched != delta ) allDone = true; nextIndex += delta; agent.setStartResult( nextIndex ); } } } public Iterator iterator() { return allResults.iterator(); } public int size() { return allResults.size(); } public String search() { return search; } public GoogleSearchResultElement[] toArray() { int length = allResults.size(); return (GoogleSearchResultElement[]) allResults.toArray( new GoogleSearchResultElement[length] ); // GoogleSearchResultElement[] result = // new GoogleSearchResultElement[length]; // Iterator iter = allResults.iterator(); // int i = 0; // while(iter.hasNext()) // { // result[i] = (GoogleSearchResultElement)iter.next(); // i++; // } // // return result; } }