To make something Comparable implies that you could do something like stick it

into a collection that keeps things sorted. Doing so without implementing
hashCode() and equals() is a recipe for breakage. Instead we'll just define a
comparator that does the one sorting we need, and use that, rather than give
the wrong impression.


git-svn-id: https://samskivert.googlecode.com/svn/trunk@2719 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
samskivert
2010-02-09 20:32:45 +00:00
parent cf7f3a582c
commit add2871199
@@ -28,6 +28,7 @@ import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
@@ -231,7 +232,7 @@ public class JDBCTableSiteIdentifier implements SiteIdentifier
} }
// sort the mappings in order of specificity // sort the mappings in order of specificity
Collections.sort(mappings); Collections.sort(mappings, SiteMapping.BY_SPECIFICITY);
_mappings = mappings; _mappings = mappings;
// Log.info("Loaded site mappings " + StringUtil.toString(_mappings) + "."); // Log.info("Loaded site mappings " + StringUtil.toString(_mappings) + ".");
@@ -275,16 +276,24 @@ public class JDBCTableSiteIdentifier implements SiteIdentifier
/** /**
* Used to track domain to site identifier mappings. * Used to track domain to site identifier mappings.
*/ */
protected static class SiteMapping implements Comparable<SiteMapping> protected static class SiteMapping
{ {
/**
* Sorts site mappings from most specific (www.yahoo.com) to least specific (yahoo.com).
*/
public static final Comparator<SiteMapping> BY_SPECIFICITY = new Comparator<SiteMapping>() {
public int compare (SiteMapping one, SiteMapping two) {
return one._rdomain.compareTo(two._rdomain);
}
};
/** The domain to match. */ /** The domain to match. */
public String domain; public String domain;
/** The site identifier for the associated domain. */ /** The site identifier for the associated domain. */
public int siteId; public int siteId;
public SiteMapping (int siteId, String domain) public SiteMapping (int siteId, String domain) {
{
this.siteId = siteId; this.siteId = siteId;
this.domain = domain; this.domain = domain;
byte[] bytes = domain.getBytes(); byte[] bytes = domain.getBytes();
@@ -292,17 +301,8 @@ public class JDBCTableSiteIdentifier implements SiteIdentifier
_rdomain = new String(bytes); _rdomain = new String(bytes);
} }
/**
* Site mappings sort from most specific (www.yahoo.com) to least specific (yahoo.com).
*/
public int compareTo (SiteMapping other)
{
return other._rdomain.compareTo(_rdomain);
}
@Override // from Object @Override // from Object
public String toString () public String toString () {
{
return "[" + domain + " => " + siteId + "]"; return "[" + domain + " => " + siteId + "]";
} }