KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > util > transformers > Rot5


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.util.transformers;
11
12 import java.io.Reader JavaDoc;
13 import java.io.Writer JavaDoc;
14
15 import org.mmbase.util.logging.*;
16
17 /**
18  * Rot5 implementation. Digits 0-4 are shifted 5 positions forward, digits 5-9 are shifted 5
19  * backwards and other characters are untouched, which results in scrambled - but easily decoded -
20  * strings. You would want this to combine with {@link Rot13} for the letters.
21  *
22  * @author Michiel Meeuwissen
23  * @since MMBase-1.8
24  */

25
26 public class Rot5 extends ReaderTransformer implements CharTransformer {
27
28     private static final Logger log = Logging.getLoggerInstance(Rot5.class);
29
30     protected Writer JavaDoc rot5(Reader JavaDoc r, Writer JavaDoc w) {
31         try {
32             int c = r.read();
33             while (c != -1) {
34                 if (c >= '0' && c <= '4') {
35                     c += 5;
36                 } else if (c >= '5' && c <= '9') {
37                     c -= 5;
38                 }
39                 w.write(c);
40                 c = r.read();
41             }
42         } catch (java.io.IOException JavaDoc ioe) {
43             log.error(ioe);
44         }
45         return w;
46     }
47
48     public Writer JavaDoc transform(Reader JavaDoc r, Writer JavaDoc w) {
49         return rot5(r, w);
50     }
51
52     /**
53      * For Rot13, transformBack does the same as {@link #transform}
54      **/

55     public Writer JavaDoc transformBack(Reader JavaDoc r, Writer JavaDoc w) {
56         return rot5(r, w);
57     }
58
59     public String JavaDoc toString() {
60         return "ROT-5";
61     }
62 }
63
Popular Tags