import java.net.*; import java.util.*; import java.io.*; /** * Classe que mantem informacao sobre varios chat room e gera paginas HTML para apresentacao * dos mesmos */ public class ChatUtilities { private static final byte[] errorPage = ("Not Found") .getBytes(); private static final String formPagePrefix = "" + "
" + "
" + "Nick: " + "" + "
" + ""; private static final String mainPagePrefix = "" + "" + "" + ""; protected Map> chatMessages; protected int serverPort; public ChatUtilities( int serverPort) { this.serverPort = serverPort; chatMessages = new HashMap>(); } /** * Adiciona a mensagem message, enviada pelo utilicador nickName, ano chat * room chatName */ public void addChatMessage( String chatName, String nickName, String message) { List msgs = chatMessages.get( chatName); if( msgs == null) { msgs = new LinkedList(); chatMessages.put( chatName, msgs); } msgs.add( nickName + " > " + message); } /** * Devolve um input stream com o conteudo HTML que pode ser usado como * resposta em caso de erro. */ public InputStream getErrorPageInputStream() { return new ByteArrayInputStream( errorPage); } /** * Devolve um input stream com o conteudo HTML da pagina do form */ public InputStream getFormPageInputStream( String chatName, String nickName) throws IOException { StringBuffer buffer = new StringBuffer(); buffer.append( formPagePrefix); buffer.append( "http://"); buffer.append( InetAddress.getLocalHost().getHostAddress()); buffer.append( ":"); buffer.append( "" + serverPort); buffer.append( chatName); buffer.append( formPageMiddle); buffer.append( nickName); buffer.append( formPageSuffix); return new ByteArrayInputStream( buffer.toString().getBytes()); } /** * Devolve um input stream com o conteudo HTML da pagina principal */ public InputStream getMainPageInputStream( String chatName) throws IOException { StringBuffer buffer = new StringBuffer(); buffer.append( mainPagePrefix); buffer.append( "http://"); buffer.append( InetAddress.getLocalHost().getHostAddress()); buffer.append( ":"); buffer.append( "" + serverPort); buffer.append( chatName); buffer.append( mainPageMiddle); List msgs = chatMessages.get( chatName); if( msgs != null) { Iterator it = msgs.iterator(); while( it.hasNext()) { buffer.append( it.next()); buffer.append( "\r\n"); } } buffer.append( mainPageSuffix); return new ByteArrayInputStream( buffer.toString().getBytes()); } }