1 import java.io.*;
2 import fi.jyu.mit.ohj2.*;
3
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
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
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