1   import java.io.*;
2   import fi.jyu.mit.ohj2.*;
3   /**
4    * Kerhon jäsenen yksi kenttä
5    *
6    * Muutokset:  02.04.2003, kenttien indeksointi<br>
7    *
8    * @author Vesa Lappalainen
9    * @version 1.0, 22.02.2003
10   * @version 1.3, 02.04.2003
11   */
12  public class Kentta {
13    private String kysymys = "???";
14    protected Tarkistaja tarkistaja = null;
15  
16    public Kentta(String kysymys)  { this.kysymys = kysymys; }
17    public Kentta(String kysymys,Tarkistaja tarkistaja) {
18      this.kysymys = kysymys;
19      this.tarkistaja = tarkistaja;
20    }
21  
22    public String toString() { return ""; }
23    public String getKysymys() { return kysymys; }
24    public String aseta(String jono) { return null; }
25  
26    /**
27     * Testiohjelma jäsenelle.
28     * @param args ei käytössä
29     */
30    public static void main(String args[]) {
31    }
32  
33  }
34  
35  class JonoKentta extends Kentta {
36    String jono = "";
37  
38    public JonoKentta(String kysymys) { super(kysymys); }
39  
40    public JonoKentta(String kysymys,Tarkistaja tarkistaja) {
41      super(kysymys,tarkistaja);
42    }
43  
44    public String toString() { return jono; }
45  
46    public String aseta(String jono) {
47      if ( tarkistaja == null ) {
48        this.jono = jono; return null;
49      }
50      String virhe = tarkistaja.tarkista(jono);
51      if ( virhe == null ) {
52        this.jono = jono; return null;
53      }
54      return virhe;
55    }
56  
57  }
58  
59  class IntKentta extends Kentta {
60    int arvo;
61    public IntKentta(String kysymys) { super(kysymys); }
62  
63    public int getValue() { return arvo; }
64    public void setValue(int value) { arvo = value; }
65  
66    public String toString() { return ""+arvo; }
67    public String aseta(String jono) {
68      StringBuffer sb = new StringBuffer(jono);
69      try {
70        this.arvo = Mjonot.erotaEx(sb,' ',0);
71        return null;
72      }
73      catch (NumberFormatException ex) {
74      return "Virhe: " + ex.getMessage(); }
75    }
76  }
77  
78  class DoubleKentta extends Kentta {
79    double arvo;
80  
81    public DoubleKentta(String kysymys) { super(kysymys); }
82  
83    public double getValue() { return arvo; }
84    public void setValue(int value) { arvo = value; }
85  
86    public String toString() { return ""+arvo; }
87    public String aseta(String jono) {
88      this.arvo = Mjonot.erotaDouble(jono,0.0);
89  
90  //    StringBuffer s = new StringBuffer("1 3");
91  //    if ( s.equals("1 3") );
92  
93      return null;
94    }
95  
96  }
97  
98  class RahaKentta extends DoubleKentta {
99    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 }
117