import java.applet.*;
import java.awt.*;
import java.io.*;
import java.net.*;

public class AccessCountApplet extends Applet implements Runnable {

private Label countLabel = null;

public void init()
{ try { setBackground(Color.white); setLayout(new BorderLayout()); countLabel = new Label(); countLabel.setFont(new Font("TimesRoman", Font.ITALIC, 14)); add(countLabel); setCountLabel(getNewCountConnection()); Thread thread = new Thread(this); thread.start(); } catch (Exception e) {}

}

public void run()
{ while (true) { pause(60); setCountLabel(getCountConnection()); }

}

private URLConnection getNewCountConnection() {

return getConnection("/accesscount/servlet/AccessCount?action=getNewCount"); }

private URLConnection getCountConnection() {

return getConnection("/accesscount/servlet/AccessCount?action=getCount"); }

private URLConnection getConnection(String file) { URLConnection connection = null; try { URL url = getCodeBase(); String protocol = url.getProtocol(); String host = url.getHost(); int port = url.getPort(); URL servletUrl = new URL(protocol, host, port, file); connection = servletUrl.openConnection(); connection.setUseCaches(false); } catch (Exception e) {} return connection;

}

private void pause(double seconds)
{ try { Thread.sleep((long)(seconds*1000)); } catch (InterruptedException ie) {}

}

private void setCountLabel(URLConnection connection) { try { BufferedReader reader = new BufferedReader (new InputStreamReader(connection.getInputStream())); String countString = null; if ((countString = reader.readLine()) != null) { if (!countString.equals(countLabel.getText())); { countLabel.setText(countString); } } } catch (Exception e) {}

}
}