import java.awt.*; import java.awt.event.*; import java.applet.*; import java.util.*; import omaTabbed.*; import java.io.*; import java.net.*; /** * Title: * Description: * Copyright: Copyright (c) 2002 * Company: * @author * @version 1.0 */ public class OLiveResults extends Applet { boolean isStandalone = false; static String version = "OLiveResults 0.97c socket version"; Etusivu etusivu; TabbedPanel tb = new TabbedPanel(); BorderLayout borderLayout = new BorderLayout(); BorderLayout borderLayout1 = new BorderLayout(); Button button1 = new Button(); TextArea textArea1= new TextArea(); Vector kisat = new Vector(); Vector kisaidt = new Vector(); Image logo; DataReader dr; int demowait; /**Get a parameter value*/ public String getParameter(String key, String def) { return (getParameter(key) != null ? getParameter(key) : def); } /**Construct the applet*/ public OLiveResults() { } /**Initialize the applet*/ public void init() { try {demowait = Integer.parseInt(getParameter("demowait","0"));} catch (Exception e) {demowait=0;} try {logo = getImage(getDocumentBase(),"logo.gif");}catch (Exception e) {} etusivu = new Etusivu(this,logo); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } /**Component initialization*/ private void jbInit() throws Exception { this.setLayout(borderLayout1); //etusivu.setLayout(borderLayout); //etusivu.setBackground(new java.awt.Color(200,200,200)); //etusivu.add(button1, BorderLayout.SOUTH); //etusivu.add(textArea1, BorderLayout.CENTER); button1.setLabel("Aloita"); textArea1.setText("Appletti demonstroi online tulosten näyttämiseen käytettävää luokkaa.\n\nDemoon tiedot tulevat valmiista tekstitiedostosta"); this.add(tb,BorderLayout.CENTER); tb.setTitle(version); tb.add("Valikko",etusivu); } /**Start the applet*/ public void start() { } /**Stop the applet*/ public void stop() { if(dr!=null) dr.interrupt(); } /**Destroy the applet*/ public void destroy() { if(dr!=null) dr.interrupt(); } void aloitusbutton_actionPerformed(ActionEvent e) { if(!checkEmail(etusivu.maili.getText())) {etusivu.maili.setText("VÄÄRÄNLAINEN OSOITE"); etusivu.maili.selectAll(); etusivu.maili.requestFocus(); return; } try {Integer.parseInt(etusivu.gesmi.getText());} catch (Exception ex) {etusivu.gesmi.setText("VÄÄRÄNLAINEN NUMERO"); etusivu.gesmi.selectAll(); etusivu.gesmi.requestFocus(); return;} if(etusivu.gesmi.getText().length()<8) {etusivu.gesmi.setText("VÄÄRÄNLAINEN NUMERO"); etusivu.gesmi.selectAll(); etusivu.gesmi.requestFocus(); return;} Kilpailu kilp = new Kilpailu(etusivu.list1.getSelectedItem()); if(dr!=null) { try{ dr.suljeSoketti(); dr.interrupt(); } catch (Exception ex) {ex.printStackTrace();} } dr = new DataReader(kilp, (String)kisaidt.elementAt(etusivu.list1.getSelectedIndex()),etusivu.maili.getText(),etusivu.gesmi.getText(),this,demowait); dr.start(); tb.add("Tulostaulu",kilp); tb.show("Tulostaulu"); } void etusivubutton1_actionPerformed(ActionEvent e) { kisat.removeAllElements(); kisaidt.removeAllElements(); InputStream in = null; Reader reader = null; BufferedReader breader = null; boolean onnistuiko = true; try { etusivu.list1.removeAll(); //luodaan binäärivirta tiedostosta lukemista varten in = (new URL("http://www.suunnistus.info/cgi-bin/textdb/pirila/showqueuelist").openStream()); //in = (new URL("http://www.suunnistus.net/pekkavaris/scoreboard/apu.php").openStream()); //luodaan merkkivirta, joka lukee merkit binäärivirrasta käyttäen //annettua merkistöä. reader = new InputStreamReader(in); //puskuroidaan virta breader = new BufferedReader(reader); String rivi = null; //BufferedReader-luokalla on metodi rivien lukemiseen while((rivi=breader.readLine()) != null){ if(!rivi.startsWith("#") && rivi.indexOf(";")>1) { kisaidt.addElement(rivi.substring(0,rivi.indexOf(";"))); kisat.addElement(rivi.substring(rivi.indexOf(";"),rivi.length()-1)); etusivu.list1.add(rivi.substring(rivi.indexOf(";")+1,rivi.length()-1)); } } if(etusivu.list1.getItemCount()==0) etusivu.list1.add("Kisalista tyhjä"); } catch ( IOException ioe ) { etusivu.list1.removeAll(); etusivu.list1.add("Listan haku epäonnistui"); } finally { //suljetaan virta try { if (breader != null) breader.close(); } catch(IOException ioe) {} } } private boolean checkEmail(String emailAddr) { // this function checks for a well-formed e-mail address // in the format: // user@domain.com int i; if (emailAddr.equals("pv")) { emailAddr="pekka.varis@suunnistus.info"; etusivu.maili.setText(emailAddr); etusivu.gesmi.setText("0505669742"); etusivu.maili.selectAll(); etusivu.maili.requestFocus(); } if (emailAddr.equals("ji")) { emailAddr="jukka.inkeri@suunnistus.info"; etusivu.maili.setText(emailAddr); etusivu.gesmi.setText("0400572324"); etusivu.maili.selectAll(); etusivu.maili.requestFocus(); } // check for @ i = emailAddr.indexOf("@"); if (i == -1) { return false; } // separate the user name and domain String username = emailAddr.substring(0, i); String domain = emailAddr.substring(i + 1, emailAddr.length()); // look for spaces at the beginning of the username i = 0; while ((username.substring(i, i + 1).equals(" ")) && (i < username.length())) { i++; } // remove any found if (i > 0) { username = username.substring(i, username.length()); } // look for spaces at the end of the domain i = domain.length() - 1; while ((domain.substring(i, i + 1).equals(" ")) && (i >= 0)) { i--; } // remove any found if (i < (domain.length() - 1)) { domain = domain.substring(0, i + 1); } // make sure neither the username nor domain is blank if ((username.equals("")) || (domain.equals(""))) { return false; } // check for bad characters in the username char ch; for (i = 0; i < username.length(); i++) { ch = (username.toLowerCase()).charAt(i); if (!(((ch >= 'a') && (ch <= 'z')) || ((ch >= '0') && (ch <= '9')) || (ch == '_') || (ch == '-') || (ch == '.'))) { return false; } } // check for bad characters in the domain for (i = 0; i < domain.length(); i++) { ch = (domain.toLowerCase()).charAt(i); if (!(((ch >= 'a') && (ch <= 'z')) || ((ch >= '0') && (ch <= '9')) || (ch == '_') || (ch == '-') || (ch == '.'))) { return false; } } if (domain.indexOf(".")<0 || domain.indexOf(".")==0 || domain.indexOf(".")==domain.length()-1) return false; return true; } }