1   package kanta;
2   import fi.jyu.mit.ohj2.Mjonot;
3   
4   /**
5    * Kenttä kokonaislukujen tallentamiseksi
6    * @author vesal
7    * @version 31.3.2008
8    *
9    */
10  public class IntKentta extends PerusKentta  {
11      private int arvo;
12  
13      /**
14       * Alustetaan kenttä kysymyksellä.
15       * @param kysymys joka näytetään kenttää kysyttäessä.
16       */
17      public IntKentta(String kysymys) { super(kysymys); }
18  
19      /**
20       * @return kentän arvo kokonaislukuna
21       */
22      public int getValue() { return arvo; }
23  
24      /**
25       * Asetetaan kentän arvo kokonaislukuna
26       * @param value asetettava kokonaislukuarvo
27       */
28      public void setValue(int value) { arvo = value; }
29  
30      /** 
31       * @return Kentän arvo merkkijonona
32       * @see kanta.PerusKentta#toString()
33       */
34      @Override
35      public String toString() { return ""+arvo; }
36  
37  
38  
39      /**
40       * Asetetaan kentän arvo merkkijonosta.  Jos jono 
41       * kunnollinen, palautetaan null.  Jos jono ei
42       * kunnollinen int-syöte, palautetaan virheilmoitus ja
43       * kentän alkuperäinen arvo jää voimaan.
44       * @param jono kentään asetettava arvo mekrkijonona
45       * @return null jos hyvä arvo, muuten virhe.  
46       * @see kanta.PerusKentta#aseta(java.lang.String)
47       * 
48       * @example
49       * <pre name="test">
50       * IntKentta kentta = new IntKentta("määrä");
51       * kentta.aseta("12") === null; kentta.getValue() === 12;
52       * kentta.aseta("k") === "Virhe: jono = \"k\""; kentta.getValue() === 12;
53       * </pre>
54       */
55      @Override
56      public String aseta(String jono) {
57          StringBuffer sb = new StringBuffer(jono);
58          try {
59              this.arvo = Mjonot.erotaEx(sb,' ',0);
60              return null;
61          }
62          catch (NumberFormatException ex) {
63              return "Virhe: " + ex.getMessage(); }
64      }
65  
66      /**
67       * Palauttaa kentän tiedot veratiltavana merkkijonona
68       * @return vertailtava merkkijono kentästä
69       * @example
70       * <pre name="test">
71       * IntKentta kentta = new IntKentta("määrä");
72       * kentta.aseta("12");  kentta.getAvain() === "        12";
73       * kentta.aseta("1");   kentta.getAvain() === "         1";
74       * kentta.aseta("999"); kentta.getAvain() === "       999";
75       *   
76       * </pre>
77       */
78      @Override
79      public String getAvain() { 
80          return Mjonot.fmt(arvo, 10); 
81      }
82  
83      /**
84       * @return syväkopio oliosta
85       * @example
86       * <pre name="test">
87       *   #THROWS CloneNotSupportedException
88       *   IntKentta kentta = new IntKentta("määrä");
89       *   kentta.aseta("12");
90       *   IntKentta klooni = (IntKentta)kentta.clone();
91       *   kentta.getValue() === klooni.getValue();
92       *   kentta.aseta("13");
93       *   kentta.getValue() === 13;
94       *   klooni.getValue() === 12;
95       * </pre>
96       */
97      @Override
98      public Kentta clone() throws CloneNotSupportedException {
99          return super.clone();
100     }
101 
102 
103 }
104