package baf.guide; import java.util.*; import baf.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Author extends Item { String forename, surname; public static Author forName(String s) throws IOException { String path = "/authors/"+nameToUrl(s); return (Author)forPath(path); } public Author(String path) throws IOException { super(path); // Trim off periods sortString = ""; StringTokenizer st = new StringTokenizer(name, "."); while (st.hasMoreElements()) sortString += st.nextElement(); // Convert HTML special characters such as ö int amp, semi; while ((amp = sortString.indexOf('&')) != -1) { semi = sortString.indexOf(';', amp); if (semi < amp) break; // Should throw exception? sortString = sortString.substring(0, amp) + sortString.charAt(amp+1) + sortString.substring(semi+1); } // Convert to lower case and put the last name first sortString = sortString.toLowerCase(); int lastspace = sortString.lastIndexOf(' '); if (lastspace != -1) sortString = sortString.substring(lastspace+1) + ' ' + sortString.substring(0, lastspace); // Parse into surname and forename lastspace = name.lastIndexOf(' '); if (lastspace == -1) { surname = name; forename = null; } else { surname = name.substring(lastspace+1); forename = name.substring(0, lastspace); } } public String getListingString() { if (forename == null) return surname; else return surname+", "+forename; } public void body(ServletOutputStream out) throws IOException, NoGamesException { String email = attributes.getProperty(":e"); if (email != null) { out.print("Email: "); hotlink(out, "mailto:"+email, email); out.println("
"); } String www = attributes.getProperty(":w"); if (www != null) { out.print("WWW: "); hotlink(out, www, www); out.println("
"); } super.body(out); } public void listing(ServletOutputStream out, Game games[]) throws IOException { for (int i=0; i\n"); games[i].body(out); } } public String getRefString() { if (name.equals("Anonymous")) return null; else return name; } public String getTag() { return ":a"; } public String getDescription() { return "Adventure games by "+name; } }