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 }