1   package kanta;
2   
3   /**
4    * Tarkistaja joka tarkistaa että jono vastaa regexpiä
5    * Hyväksyy tyhjän jonon.
6    * @author vesal
7    *
8    */
9   public class RegExpTarkistaja implements Tarkistaja {
10  
11      private final String regexp;
12      private String viesti = null;
13  
14  
15      /**
16       * Luodaan tarkistaja joka hyväksyy sallitut merkit
17       * @param regexp hyväksyttävät merkit
18       */
19      public RegExpTarkistaja(String regexp) {
20          this(regexp,null);
21      }
22  
23  
24      /**
25       * Luodaan tarkistaja joka hyväksyy sallitut merkit
26       * @param regexp hyväksyttävät merkit
27       * @param viesti viesti joka näytetään jos jonon ehto ei täyty  
28       */
29      public RegExpTarkistaja(String regexp, String viesti) {
30          this.regexp = regexp;
31          if ( viesti != null ) this.viesti = viesti;
32          else this.viesti = "Ei vastaa maskia: " + regexp;
33      }
34  
35  
36      /**
37       * Tarkistaa että jono sisältää vain valittuja numeroita
38       * @param jono tutkittava jono
39       * @example
40       * <pre name="test">
41       *   RegExpTarkistaja tar = new RegExpTarkistaja("[1-4]*");
42       *   tar.tarkista("12") === null;
43       *   tar.tarkista("15") === "Ei vastaa maskia: [1-4]*";
44       *   tar.tarkista("")   === null;
45       *   tar = new RegExpTarkistaja("[1-4]+","Vain numeroita 1-4");
46       *   tar.tarkista("15") === "Vain numeroita 1-4";
47       *   tar.tarkista("") === "Vain numeroita 1-4";
48       *   tar.tarkista("1") === null;
49       * </pre>
50       */
51      @Override
52      public String tarkista(String jono) {
53          if ( jono.matches(regexp) ) return null;
54          return viesti;
55      }
56  
57  }
58