From: <bra...@us...> - 2007-07-25 00:51:36
|
Revision: 1889 http://archive-access.svn.sourceforge.net/archive-access/?rev=1889&view=rev Author: bradtofel Date: 2007-07-24 17:51:38 -0700 (Tue, 24 Jul 2007) Log Message: ----------- TWEAK: type safety Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBIndex.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBIndexUpdater.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBRecordToSearchResultAdapter.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/cdx/CDXIndex.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/cdx/CDXLineToSearchResultAdapter.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/indexer/ArcIndexer.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/indexer/SearchResultToBDBRecordAdapter.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBIndex.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBIndex.java 2007-07-25 00:50:55 UTC (rev 1888) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBIndex.java 2007-07-25 00:51:38 UTC (rev 1889) @@ -32,6 +32,7 @@ import java.util.Iterator; import org.archive.wayback.WaybackConstants; +import org.archive.wayback.bdb.BDBRecord; import org.archive.wayback.bdb.BDBRecordSet; import org.archive.wayback.core.CaptureSearchResults; import org.archive.wayback.core.SearchResult; @@ -66,8 +67,9 @@ } } - private CloseableIterator adaptIterator(Iterator itr) { - return new AdaptedIterator(itr,new BDBRecordToSearchResultAdapter()); + private CloseableIterator<SearchResult> adaptIterator( + Iterator<BDBRecord> itr) { + return new AdaptedIterator<BDBRecord,SearchResult>(itr,new BDBRecordToSearchResultAdapter()); } /* @@ -75,7 +77,7 @@ * * @see org.archive.wayback.resourceindex.SearchResultSource#getPrefixIterator(java.lang.String) */ - public CloseableIterator getPrefixIterator(String prefix) + public CloseableIterator<SearchResult> getPrefixIterator(String prefix) throws ResourceIndexNotAvailableException { try { @@ -90,7 +92,7 @@ * * @see org.archive.wayback.resourceindex.SearchResultSource#getPrefixReverseIterator(java.lang.String) */ - public CloseableIterator getPrefixReverseIterator(String prefix) + public CloseableIterator<SearchResult> getPrefixReverseIterator(String prefix) throws ResourceIndexNotAvailableException { try { return adaptIterator(recordIterator(prefix,false)); @@ -102,7 +104,7 @@ /* (non-Javadoc) * @see org.archive.wayback.resourceindex.SearchResultSource#cleanup(org.archive.wayback.util.CleanableIterator) */ - public void cleanup(CloseableIterator c) throws IOException { + public void cleanup(CloseableIterator<SearchResult> c) throws IOException { c.close(); } @@ -146,7 +148,7 @@ CaptureSearchResults results = new CaptureSearchResults(); if(args.length == 4) { String prefix = args[3]; - CloseableIterator itr = null; + CloseableIterator<SearchResult> itr = null; try { itr = index.getPrefixIterator(prefix); } catch (ResourceIndexNotAvailableException e) { @@ -179,7 +181,7 @@ } } } else { - CloseableIterator itr = null; + CloseableIterator<SearchResult> itr = null; try { itr = index.getPrefixIterator(" "); } catch (ResourceIndexNotAvailableException e) { Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBIndexUpdater.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBIndexUpdater.java 2007-07-25 00:50:55 UTC (rev 1888) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBIndexUpdater.java 2007-07-25 00:51:38 UTC (rev 1889) @@ -29,6 +29,7 @@ import java.util.Iterator; import java.util.logging.Logger; +import org.archive.wayback.bdb.BDBRecord; import org.archive.wayback.exception.ConfigurationException; import org.archive.wayback.resourceindex.indexer.ArcIndexer; @@ -146,7 +147,7 @@ private boolean mergeFile(File cdxFile) { boolean added = false; try { - Iterator it = indexer.getCDXFileBDBRecordIterator(cdxFile); + Iterator<BDBRecord> it = indexer.getCDXFileBDBRecordIterator(cdxFile); index.insertRecords(it); added = true; } catch (IOException e) { Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBRecordToSearchResultAdapter.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBRecordToSearchResultAdapter.java 2007-07-25 00:50:55 UTC (rev 1888) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/bdb/BDBRecordToSearchResultAdapter.java 2007-07-25 00:51:38 UTC (rev 1889) @@ -27,7 +27,9 @@ import java.io.UnsupportedEncodingException; import org.archive.wayback.bdb.BDBRecord; +import org.archive.wayback.core.SearchResult; import org.archive.wayback.resourceindex.cdx.CDXLineToSearchResultAdapter; +import org.archive.wayback.util.Adapter; /** * Adapter that converts a BDBRecord into a SearchResult @@ -36,7 +38,7 @@ * @version $Date$, $Revision$ */ public class BDBRecordToSearchResultAdapter - extends CDXLineToSearchResultAdapter { + implements Adapter<BDBRecord,SearchResult> { private static int DEFAULT_SB_SIZE = 100; private StringBuilder sb; @@ -47,14 +49,11 @@ sb = new StringBuilder(DEFAULT_SB_SIZE); } - /* (non-Javadoc) - * @see org.archive.wayback.util.Adapter#adapt(java.lang.Object) + /** + * @param record + * @return SearchResult representation of input BDBRecord */ - public Object adapt(Object o) { - if(!(o instanceof BDBRecord)) { - throw new IllegalArgumentException("Argument is not a BDBRecord"); - } - BDBRecord record = (BDBRecord) o; + public SearchResult adapt(BDBRecord record) { sb.setLength(0); try { String key = new String(record.getKey().getData(),"UTF-8"); @@ -68,6 +67,6 @@ // should not happen with UTF-8 hard-coded.. e.printStackTrace(); } - return super.adapt(sb.toString()); + return CDXLineToSearchResultAdapter.doAdapt(sb.toString()); } } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/cdx/CDXIndex.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/cdx/CDXIndex.java 2007-07-25 00:50:55 UTC (rev 1888) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/cdx/CDXIndex.java 2007-07-25 00:51:38 UTC (rev 1889) @@ -50,14 +50,15 @@ */ private static final long serialVersionUID = 1L; - private CloseableIterator adaptIterator(Iterator itr) { - return new AdaptedIterator(itr,new CDXLineToSearchResultAdapter()); + private CloseableIterator<SearchResult> adaptIterator(Iterator<String> itr) { + return new AdaptedIterator<String,SearchResult>(itr, + new CDXLineToSearchResultAdapter()); } /* (non-Javadoc) * @see org.archive.wayback.resourceindex.SearchResultSource#getPrefixIterator(java.lang.String) */ - public CloseableIterator getPrefixIterator(String prefix) + public CloseableIterator<SearchResult> getPrefixIterator(String prefix) throws ResourceIndexNotAvailableException { try { return adaptIterator(getRecordIterator(prefix)); @@ -69,7 +70,7 @@ /* (non-Javadoc) * @see org.archive.wayback.resourceindex.SearchResultSource#getPrefixReverseIterator(java.lang.String) */ - public CloseableIterator getPrefixReverseIterator(String prefix) + public CloseableIterator<SearchResult> getPrefixReverseIterator(String prefix) throws ResourceIndexNotAvailableException { try { return adaptIterator(getReverseRecordIterator(prefix)); @@ -84,7 +85,7 @@ * @return Iterator of SearchResults of records starting with prefix * @throws IOException */ - public Iterator getUrlIterator(final String prefix) throws IOException { + public Iterator<SearchResult> getUrlIterator(final String prefix) throws IOException { return adaptIterator(getRecordIterator(prefix)); } @@ -94,19 +95,20 @@ * @return Iterator of results in closest order to wantTS * @throws IOException */ - public Iterator getClosestIterator(final String prefix, + public Iterator<SearchResult> getClosestIterator(final String prefix, final Timestamp wantTS) throws IOException { - Iterator forwardItr = adaptIterator(getRecordIterator(prefix)); - Iterator reverseItr = adaptIterator(getReverseRecordIterator(prefix)); - TimestampComparator comparator = new TimestampComparator(wantTS); - CompositeSortedIterator itr = new CompositeSortedIterator(comparator); + Iterator<SearchResult> forwardItr = adaptIterator(getRecordIterator(prefix)); + Iterator<SearchResult> reverseItr = adaptIterator(getReverseRecordIterator(prefix)); + Comparator<SearchResult> comparator = new TimestampComparator(wantTS); + CompositeSortedIterator<SearchResult> itr = + new CompositeSortedIterator<SearchResult>(comparator); itr.addComponent(forwardItr); itr.addComponent(reverseItr); return itr; } - private class TimestampComparator implements Comparator<Object> { + private class TimestampComparator implements Comparator<SearchResult> { private int wantedSSE; /** * @param wanted @@ -114,11 +116,7 @@ public TimestampComparator(Timestamp wanted) { wantedSSE = wanted.sse(); } - private int searchResultToDistance(Object o) { - if(!(o instanceof SearchResult)) { - throw new IllegalArgumentException("Need SearchResult objects"); - } - SearchResult sr = (SearchResult) o; + private int searchResultToDistance(SearchResult sr) { String dateStr = sr.get(WaybackConstants.RESULT_CAPTURE_DATE); Timestamp ts = new Timestamp(dateStr); return Math.abs(wantedSSE - ts.sse()); @@ -126,7 +124,7 @@ /* (non-Javadoc) * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ - public int compare(Object o1, Object o2) { + public int compare(SearchResult o1, SearchResult o2) { int d1 = searchResultToDistance(o1); int d2 = searchResultToDistance(o2); if(d1 < d2) { @@ -141,7 +139,7 @@ /* (non-Javadoc) * @see org.archive.wayback.resourceindex.SearchResultSource#cleanup(org.archive.wayback.util.CleanableIterator) */ - public void cleanup(CloseableIterator c) throws IOException { + public void cleanup(CloseableIterator<SearchResult> c) throws IOException { c.close(); } } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/cdx/CDXLineToSearchResultAdapter.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/cdx/CDXLineToSearchResultAdapter.java 2007-07-25 00:50:55 UTC (rev 1888) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/cdx/CDXLineToSearchResultAdapter.java 2007-07-25 00:51:38 UTC (rev 1889) @@ -38,14 +38,17 @@ * @author brad * @version $Date$, $Revision$ */ -public class CDXLineToSearchResultAdapter implements Adapter { +public class CDXLineToSearchResultAdapter implements Adapter<String,SearchResult> { - public Object adapt(Object o) { + public SearchResult adapt(String line) { + return doAdapt(line); + } + /** + * @param line + * @return SearchResult representation of input line + */ + public static SearchResult doAdapt(String line) { SearchResult result = new SearchResult(); - if(!(o instanceof String)) { - throw new IllegalArgumentException("Argument is not a String"); - } - String line = (String) o; String[] tokens = line.split(" "); if (tokens.length != 9) { return null; Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/indexer/ArcIndexer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/indexer/ArcIndexer.java 2007-07-25 00:50:55 UTC (rev 1888) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/indexer/ArcIndexer.java 2007-07-25 00:51:38 UTC (rev 1889) @@ -43,6 +43,7 @@ import org.archive.net.UURI; import org.archive.net.UURIFactory; import org.archive.wayback.WaybackConstants; +import org.archive.wayback.bdb.BDBRecord; import org.archive.wayback.core.CaptureSearchResults; import org.archive.wayback.core.SearchResult; import org.archive.wayback.core.SearchResults; @@ -370,12 +371,13 @@ * cdxFile argument * @throws IOException */ - public Iterator getCDXFileBDBRecordIterator(File cdxFile) throws IOException { + public Iterator<BDBRecord> getCDXFileBDBRecordIterator(File cdxFile) throws IOException { FlatFile ffile = new FlatFile(cdxFile.getAbsolutePath()); - AdaptedIterator searchResultItr = new AdaptedIterator( - ffile.getSequentialIterator(), + AdaptedIterator<String,SearchResult> searchResultItr = + new AdaptedIterator<String,SearchResult>( + ffile.getSequentialIterator(), new CDXLineToSearchResultAdapter()); - return new AdaptedIterator(searchResultItr, + return new AdaptedIterator<SearchResult,BDBRecord>(searchResultItr, new SearchResultToBDBRecordAdapter()); } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/indexer/SearchResultToBDBRecordAdapter.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/indexer/SearchResultToBDBRecordAdapter.java 2007-07-25 00:50:55 UTC (rev 1888) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/indexer/SearchResultToBDBRecordAdapter.java 2007-07-25 00:51:38 UTC (rev 1889) @@ -37,7 +37,8 @@ * @author brad * @version $Date$, $Revision$ */ -public class SearchResultToBDBRecordAdapter implements Adapter { +public class SearchResultToBDBRecordAdapter implements + Adapter<SearchResult,BDBRecord> { DatabaseEntry key = new DatabaseEntry(); @@ -50,12 +51,7 @@ * * @see org.archive.wayback.util.Adapter#adapt(java.lang.Object) */ - public Object adapt(Object o) { - if (!(o instanceof SearchResult)) { - throw new IllegalArgumentException( - "Argument is not a SearchResult"); - } - SearchResult result = (SearchResult) o; + public BDBRecord adapt(SearchResult result) { key.setData(BDBRecordSet.stringToBytes(ArcIndexer .searchResultToString(result, ArcIndexer.TYPE_CDX_KEY))); value.setData(BDBRecordSet.stringToBytes(ArcIndexer This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |