From: <bra...@us...> - 2008-02-01 01:44:50
|
Revision: 2167 http://archive-access.svn.sourceforge.net/archive-access/?rev=2167&view=rev Author: bradtofel Date: 2008-01-31 17:44:53 -0800 (Thu, 31 Jan 2008) Log Message: ----------- FEATURE: now merges results from multiple search files, so output is sorted. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/flatfile/FlatFile.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/flatfile/FlatFile.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/flatfile/FlatFile.java 2008-02-01 00:10:36 UTC (rev 2166) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/util/flatfile/FlatFile.java 2008-02-01 01:44:53 UTC (rev 2167) @@ -30,9 +30,11 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.RandomAccessFile; +import java.util.Comparator; import java.util.Iterator; import org.archive.wayback.util.CloseableIterator; +import org.archive.wayback.util.CompositeSortedIterator; /** * Subclass of File, which allows binary searching, returning Iterators @@ -199,25 +201,36 @@ USAGE(); } String prefix = args[0]; - for(int i=1; i < args.length; i++) { - FlatFile ff = new FlatFile(args[i]); - RecordIterator ri; - try { - ri = (RecordIterator) ff.getRecordIterator(prefix); - while(ri.hasNext()) { - String line = (String) ri.next(); - if(!line.startsWith(prefix)) { - break; + CloseableIterator<String> itr; + try { + if(args.length == 2) { + FlatFile ff = new FlatFile(args[1]); + itr = (RecordIterator) ff.getRecordIterator(prefix); + } else { + Comparator<String> comp = new Comparator<String>() { + public int compare(String o1, String o2) { + return o1.compareTo(o2); } - if(args.length > 2) { - System.out.println(args[i] + " " + line); - } else { - System.out.println(line); - } + }; + CompositeSortedIterator<String> csi = + new CompositeSortedIterator<String>(comp); + RecordIterator fitr; + for(int i=1; i < args.length; i++) { + FlatFile ff = new FlatFile(args[i]); + fitr = (RecordIterator) ff.getRecordIterator(prefix); + csi.addComponent(fitr); } - } catch (IOException e) { - e.printStackTrace(); + itr = csi; } + while(itr.hasNext()) { + String line = (String) itr.next(); + if(!line.startsWith(prefix)) { + break; + } + System.out.println(line); + } + } catch (IOException e) { + e.printStackTrace(); } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |