1   package tentti09;
2   
3   /**
4    * Käyttäjätunnusgeneraattori
5    * @author vesal
6    *
7    */
8   public class Kayttajatunnus {
9   
10      /**
11       * Muuttaa kirjaimen käyttäjätunnukseen kelpaavaksi.
12       * Kirjain muutetaan pieneksi ja skandeista poistetaan pisteet.
13       * Tuntemattomat kirjaimet ja mahdolliset välimerkit korvataan 
14       * 1-merkillä.
15       * @param c muutettava kirjain
16       * @return käyttäjätunnukseen kelpaava kirjain
17       * @example
18       * <pre name="test">
19       *   muutaKirjain(' ') === '1';
20       *   muutaKirjain('2') === '1';
21       *   muutaKirjain('A') === 'a';
22       *   muutaKirjain('B') === 'b';
23       *   muutaKirjain('a') === 'a';
24       *   muutaKirjain('Ä') === 'a';
25       *   muutaKirjain('Ö') === 'o';
26       *   muutaKirjain('ö') === 'o';
27       * </pre>
28       */
29      public static char muutaKirjain(char c) {
30          final String mitka = "åäö";
31          final String miksi = "aao";
32          char lc = Character.toLowerCase(c);
33          int i = mitka.indexOf(lc);
34          if ( i >= 0 ) return miksi.charAt(i);
35          if ( lc < 'a' ) return '1';
36          if ( lc > 'z' ) return '1';
37          return lc;
38      }
39      
40      /**
41       * Aliohjelma muuttaa nimen käyttäjätunnukseksi. 
42       * Käyttäjätunnus muodostetaan yhdistämällä käyttäjän 
43       * etunimen ensimmäinen kirjain ja sukunimen ensimmäiset 
44       * seitsemän merkkiä, jolloin käyttäjätunnuksesta tulee 8 merkkiä pitkä. 
45       * Jos sukunimessä ei ole seitsemää merkkiä, sukunimi otetaan mukaan 
46       * kokonaisuudessaan. 
47       * Kirjaimet ä, ö ja å korvataan kirjaimilla a, o ja a. 
48       * Käyttäjätunnus sisältää ainoastaan pieniä kirjaimia.
49       * @param etunimi muutettavan nimen etunimi
50       * @param sukunimi muutettvan nimen sukunimi
51       * @return nimien perusteella muodostettu käyttäjätunnus
52       * @example
53       * <pre name="test">
54       *   teeTunnus("Martta","Hänninen") === "mhannine"
55       *   teeTunnus("Åke","Ek") === "aek"
56       *   teeTunnus("Björn","Björnström") === "bbjornst"
57       * </pre>
58       */
59      public static String teeTunnus(String etunimi, String sukunimi) {
60          String alku = "";
61          if ( etunimi.length() > 0 ) alku = ""+muutaKirjain(etunimi.charAt(0));
62          int pituus = Math.min(8-alku.length(),sukunimi.length());
63          StringBuilder tunnus = new StringBuilder(alku);
64          for (int i=0; i<pituus; i++)
65              tunnus.append(muutaKirjain(sukunimi.charAt(i)));
66          return tunnus.toString();
67      }
68  
69      
70      
71      /**
72       * @param args
73       */
74      public static void main(String[] args) {
75          // TODO Auto-generated method stub
76  
77      }
78  
79  }
80