import java.io.*;
import fi.jyu.mit.ohj2.*;
public class Kentta {
private String kysymys = "???";
protected Tarkistaja tarkistaja = null;
public Kentta(String kysymys) { this.kysymys = kysymys; }
public Kentta(String kysymys,Tarkistaja tarkistaja) {
this.kysymys = kysymys;
this.tarkistaja = tarkistaja;
}
public String toString() { return ""; }
public String getKysymys() { return kysymys; }
public String aseta(String jono) { return null; }
public static void main(String args[]) {
}
}
class JonoKentta extends Kentta {
String jono = "";
public JonoKentta(String kysymys) { super(kysymys); }
public JonoKentta(String kysymys,Tarkistaja tarkistaja) {
super(kysymys,tarkistaja);
}
public String toString() { return jono; }
public String aseta(String jono) {
if ( tarkistaja == null ) {
this.jono = jono; return null;
}
String virhe = tarkistaja.tarkista(jono);
if ( virhe == null ) {
this.jono = jono; return null;
}
return virhe;
}
}
class IntKentta extends Kentta {
int arvo;
public IntKentta(String kysymys) { super(kysymys); }
public int getValue() { return arvo; }
public void setValue(int value) { arvo = value; }
public String toString() { return ""+arvo; }
public String aseta(String jono) {
StringBuffer sb = new StringBuffer(jono);
try {
this.arvo = Mjonot.erotaEx(sb,' ',0);
return null;
}
catch (NumberFormatException ex) {
return "Virhe: " + ex.getMessage(); }
}
}
class DoubleKentta extends Kentta {
double arvo;
public DoubleKentta(String kysymys) { super(kysymys); }
public double getValue() { return arvo; }
public void setValue(int value) { arvo = value; }
public String toString() { return ""+arvo; }
public String aseta(String jono) {
this.arvo = Mjonot.erotaDouble(jono,0.0);
return null;
}
}
class RahaKentta extends DoubleKentta {
public RahaKentta(String kysymys) { super(kysymys); }
public String toString() { return Mjonot.fmt(getValue(),4,2); }
}
interface Tarkistaja {
public String tarkista(String jono);
}
class HetuTarkistus implements Tarkistaja {
public String tarkista(String jono) {
if ( jono == null || jono.length() < 1 ) return "Hetu liian lyhyt";
if ( !Character.isDigit(jono.charAt(0)) ) return "Ei ala numerolla";
return null;
}
}