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 = ""
+ "" + "";
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());
}
}