diff --git a/projects/samskivert/src/java/com/samskivert/servlet/IndiscriminateSiteIdentifier.java b/projects/samskivert/src/java/com/samskivert/servlet/IndiscriminateSiteIdentifier.java index 45b7b59c..05011131 100644 --- a/projects/samskivert/src/java/com/samskivert/servlet/IndiscriminateSiteIdentifier.java +++ b/projects/samskivert/src/java/com/samskivert/servlet/IndiscriminateSiteIdentifier.java @@ -1,5 +1,5 @@ // -// $Id: IndiscriminateSiteIdentifier.java,v 1.2 2001/11/06 04:48:08 mdb Exp $ +// $Id: IndiscriminateSiteIdentifier.java,v 1.3 2003/11/13 00:53:00 mdb Exp $ // // samskivert library - useful routines for java programs // Copyright (C) 2001 Michael Bayne @@ -20,6 +20,9 @@ package com.samskivert.servlet; +import java.util.ArrayList; +import java.util.Iterator; + import javax.servlet.http.HttpServletRequest; /** @@ -45,4 +48,24 @@ public class IndiscriminateSiteIdentifier implements SiteIdentifier { return DEFAULT_SITE_STRING; } + + /** + * Always returns {@link #DEFAULT_SITE_ID} regardless of the value of + * the supplied string. + */ + public int getSiteId (String siteString) + { + return DEFAULT_SITE_ID; + } + + // documented inherited from interface + public Iterator enumerateSites () + { + return _sites.iterator(); + } + + protected static ArrayList _sites = new ArrayList(); + static { + _sites.add(new Site(DEFAULT_SITE_ID, DEFAULT_SITE_STRING)); + } } diff --git a/projects/samskivert/src/java/com/samskivert/servlet/JDBCTableSiteIdentifier.java b/projects/samskivert/src/java/com/samskivert/servlet/JDBCTableSiteIdentifier.java index 8c9cfae2..f4a1016a 100644 --- a/projects/samskivert/src/java/com/samskivert/servlet/JDBCTableSiteIdentifier.java +++ b/projects/samskivert/src/java/com/samskivert/servlet/JDBCTableSiteIdentifier.java @@ -1,5 +1,5 @@ // -// $Id: JDBCTableSiteIdentifier.java,v 1.3 2003/07/04 20:34:34 mdb Exp $ +// $Id: JDBCTableSiteIdentifier.java,v 1.4 2003/11/13 00:53:00 mdb Exp $ // // samskivert library - useful routines for java programs // Copyright (C) 2001 Michael Bayne @@ -27,7 +27,11 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; + import javax.servlet.http.HttpServletRequest; + import com.samskivert.io.PersistenceException; import com.samskivert.jdbc.ConnectionProvider; @@ -94,8 +98,21 @@ public class JDBCTableSiteIdentifier implements SiteIdentifier // documentation inherited public String getSiteString (int siteId) { - String stringId = (String)_sites.get(siteId); - return (stringId == null) ? DEFAULT_SITE_STRING : stringId; + Site site = (Site)_sitesById.get(siteId); + return (site == null) ? DEFAULT_SITE_STRING : site.siteString; + } + + // documentation inherited + public int getSiteId (String siteString) + { + Site site = (Site)_sitesByString.get(siteString); + return (site == null) ? DEFAULT_SITE_ID : site.siteId; + } + + // documentation inherited from interface + public Iterator enumerateSites () + { + return _sitesById.values().iterator(); } /** @@ -125,10 +142,14 @@ public class JDBCTableSiteIdentifier implements SiteIdentifier String query = "select siteId, stringId from sites"; ResultSet rs = stmt.executeQuery(query); HashIntMap sites = new HashIntMap(); + HashMap strings = new HashMap(); while (rs.next()) { - sites.put(rs.getInt(1), rs.getString(2)); + Site site = new Site(rs.getInt(1), rs.getString(2)); + sites.put(site.siteId, site); + strings.put(site.siteString, site); } - _sites = sites; + _sitesById = sites; + _sitesByString = strings; // now load up the domain mappings query = "select domain, siteId from domains"; @@ -209,5 +230,9 @@ public class JDBCTableSiteIdentifier implements SiteIdentifier /** The mapping from integer site identifiers to string site * identifiers. */ - protected HashIntMap _sites = new HashIntMap(); + protected HashIntMap _sitesById = new HashIntMap(); + + /** The mapping from string site identifiers to integer site + * identifiers. */ + protected HashMap _sitesByString = new HashMap(); } diff --git a/projects/samskivert/src/java/com/samskivert/servlet/Site.java b/projects/samskivert/src/java/com/samskivert/servlet/Site.java index c14187df..9a680e01 100644 --- a/projects/samskivert/src/java/com/samskivert/servlet/Site.java +++ b/projects/samskivert/src/java/com/samskivert/servlet/Site.java @@ -1,42 +1,42 @@ // -// $Id: Site.java,v 1.1 2003/09/19 02:12:55 eric Exp $ +// $Id: Site.java,v 1.2 2003/11/13 00:53:00 mdb Exp $ -package com.samskivert.servlet.user; +package com.samskivert.servlet; import com.samskivert.util.StringUtil; /** - * A representation of a row in the sites table. + * Represents a site mapping known to a {@link SiteIdentifier}. + * + * @see SiteIdentifier#enumerateSites */ public class Site { - /** The sites unqiue identifier. */ + /** The site's unqiue identifier. */ public int siteId; - /** The sites human readable identifier (I.e., "Shockwave") */ - public String stringId; + /** The site's human readable identifier (i.e., "monkeybutter"). */ + public String siteString; - /** Construct a Site record with the specified siteId. */ - public Site (int siteId) + /** Constructs a site record with the specified id and string. */ + public Site (int siteId, String siteString) { this.siteId = siteId; - } - - /** Construct a Site record with the specified stringId. */ - public Site (String stringId) - { - this.stringId = stringId; + this.siteString = siteString; } /** - * Constructs a blank Site record for unserialization - * from the repository. + * Constructs a blank record for unserialization from the repository. */ public Site () { } - public String toString () { + /** + * Generates a string representation of this instance. + */ + public String toString () + { return StringUtil.fieldsToString(this); } } diff --git a/projects/samskivert/src/java/com/samskivert/servlet/SiteIdentifier.java b/projects/samskivert/src/java/com/samskivert/servlet/SiteIdentifier.java index 4f77b5dc..e091a295 100644 --- a/projects/samskivert/src/java/com/samskivert/servlet/SiteIdentifier.java +++ b/projects/samskivert/src/java/com/samskivert/servlet/SiteIdentifier.java @@ -1,5 +1,5 @@ // -// $Id: SiteIdentifier.java,v 1.2 2001/11/06 04:48:35 mdb Exp $ +// $Id: SiteIdentifier.java,v 1.3 2003/11/13 00:53:00 mdb Exp $ // // samskivert library - useful routines for java programs // Copyright (C) 2001 Michael Bayne @@ -20,6 +20,7 @@ package com.samskivert.servlet; +import java.util.Iterator; import javax.servlet.http.HttpServletRequest; /** @@ -56,11 +57,11 @@ public interface SiteIdentifier public int identifySite (HttpServletRequest req); /** - * Returns a string representation of the site identifier. The site - * identifier in use can map the site ids to strings however it likes - * as long as it consistently maps the same identifier to the same - * string. Presumably these strings would be human readable and - * meaningful. + * Returns a string representation of the site identifier. The + * SiteIdentifier in use can map the site ids to strings however it + * likes as long as it consistently maps the same identifier to the + * same string and vice versa. Presumably these strings would be human + * readable and meaningful. * * @param siteId the unique integer identifier for the site that we * wish to be identified by a string. @@ -68,4 +69,22 @@ public interface SiteIdentifier * @return the string identifier for this site. */ public String getSiteString (int siteId); + + /** + * Returns the site identifier for the site associated with the + * supplied site string. The SiteIdentifier in use can map the site + * ids to strings however it likes as long as it consistently maps the + * same string to the same identifier and vice versa. + * + * @param siteString the string to be converted into a site identifer. + * + * @return the integer identifier for this site. + */ + public int getSiteId (String siteString); + + /** + * Returns an enumerator over all {@link Site} mappings known to this + * SiteIdentifier. + */ + public Iterator enumerateSites (); } diff --git a/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java b/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java index 14f7cb4e..7b5821a7 100644 --- a/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java +++ b/projects/samskivert/src/java/com/samskivert/servlet/user/UserRepository.java @@ -1,5 +1,5 @@ // -// $Id: UserRepository.java,v 1.34 2003/10/29 19:41:52 eric Exp $ +// $Id: UserRepository.java,v 1.35 2003/11/13 00:53:00 mdb Exp $ // // samskivert library - useful routines for java programs // Copyright (C) 2001 Michael Bayne @@ -43,9 +43,11 @@ import com.samskivert.jdbc.jora.Cursor; import com.samskivert.jdbc.jora.FieldMask; import com.samskivert.jdbc.jora.Session; import com.samskivert.jdbc.jora.Table; -import com.samskivert.servlet.SiteIdentifier; import com.samskivert.util.HashIntMap; +import com.samskivert.servlet.Site; +import com.samskivert.servlet.SiteIdentifier; + /** * Interfaces with the RDBMS in which the user information is stored. The * user repository encapsulates the creating, loading and management of @@ -117,8 +119,8 @@ public class UserRepository extends JORARepository * * @return The userid of the newly created user. */ - public int createUser (String username, String password, - String realname, String email, int siteId) + public int createUser (String username, String password, String realname, + String email, int siteId) throws InvalidUsernameException, UserExistsException, PersistenceException { @@ -352,7 +354,7 @@ public class UserRepository extends JORARepository while (itr.hasNext()) { Site site = (Site)itr.next(); _siteIdToSite.put(site.siteId, site); - _siteNameToSite.put(site.stringId, site); + _siteNameToSite.put(site.siteString, site); } return null; } @@ -365,7 +367,6 @@ public class UserRepository extends JORARepository public int getSiteId (String stringId) { Site site = (Site)_siteNameToSite.get(stringId); - return (site == null) ? -1 : site.siteId; } @@ -375,8 +376,7 @@ public class UserRepository extends JORARepository public String getSiteName (int siteId) { Site site = (Site)_siteIdToSite.get(siteId); - - return (site == null) ? null : site.stringId; + return (site == null) ? null : site.siteString; } /**