001    import java.io.*;
002    import fi.jyu.mit.ohj2.*;
003    /**
004     * Kerhon jäsenen yksi kenttä
005     *
006     * Muutokset:  02.04.2003, kenttien indeksointi<br>
007     *
008     * @author Vesa Lappalainen
009     * @version 1.0, 22.02.2003
010     * @version 1.3, 02.04.2003
011     */
012    public class Kentta {
013      private String kysymys = "???";
014      protected Tarkistaja tarkistaja = null;
015    
016      public Kentta(String kysymys)  { this.kysymys = kysymys; }
017      public Kentta(String kysymys,Tarkistaja tarkistaja) {
018        this.kysymys = kysymys;
019        this.tarkistaja = tarkistaja;
020      }
021    
022      public String toString() { return ""; }
023      public String getKysymys() { return kysymys; }
024      public String aseta(String jono) { return null; }
025    
026      /**
027       * Testiohjelma jäsenelle.
028       * @param args ei käytössä
029       */
030      public static void main(String args[]) {
031      }
032    
033    }
034    
035    class JonoKentta extends Kentta {
036      String jono = "";
037    
038      public JonoKentta(String kysymys) { super(kysymys); }
039    
040      public JonoKentta(String kysymys,Tarkistaja tarkistaja) {
041        super(kysymys,tarkistaja);
042      }
043    
044      public String toString() { return jono; }
045    
046      public String aseta(String jono) {
047        if ( tarkistaja == null ) {
048          this.jono = jono; return null;
049        }
050        String virhe = tarkistaja.tarkista(jono);
051        if ( virhe == null ) {
052          this.jono = jono; return null;
053        }
054        return virhe;
055      }
056    
057    }
058    
059    class IntKentta extends Kentta {
060      int arvo;
061      public IntKentta(String kysymys) { super(kysymys); }
062    
063      public int getValue() { return arvo; }
064      public void setValue(int value) { arvo = value; }
065    
066      public String toString() { return ""+arvo; }
067      public String aseta(String jono) {
068        StringBuffer sb = new StringBuffer(jono);
069        try {
070          this.arvo = Mjonot.erotaEx(sb,' ',0);
071          return null;
072        }
073        catch (NumberFormatException ex) {
074        return "Virhe: " + ex.getMessage(); }
075      }
076    }
077    
078    class DoubleKentta extends Kentta {
079      double arvo;
080    
081      public DoubleKentta(String kysymys) { super(kysymys); }
082    
083      public double getValue() { return arvo; }
084      public void setValue(int value) { arvo = value; }
085    
086      public String toString() { return ""+arvo; }
087      public String aseta(String jono) {
088        this.arvo = Mjonot.erotaDouble(jono,0.0);
089    
090    //    StringBuffer s = new StringBuffer("1 3");
091    //    if ( s.equals("1 3") );
092    
093        return null;
094      }
095    
096    }
097    
098    class RahaKentta extends DoubleKentta {
099      public RahaKentta(String kysymys) { super(kysymys); }
100      public String toString() { return Mjonot.fmt(getValue(),4,2); }
101    }
102    
103    
104    interface Tarkistaja {
105      public String tarkista(String jono);
106    }
107    
108    class HetuTarkistus implements Tarkistaja {
109    
110      public String tarkista(String jono) {
111        if ( jono == null || jono.length() < 1 ) return "Hetu liian lyhyt";
112        if ( !Character.isDigit(jono.charAt(0)) ) return "Ei ala numerolla";
113        return null;
114      }
115    
116    }