KickJava   Java API By Example, From Geeks To Geeks.

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


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  * Rot13 implementation. Letter a-m are shifted 13 positions forward, n-z 13 backwards and other characters are untouched, which results in
19  * scrambled - but easily decoded - strings.
20  *
21  * @author Michiel Meeuwissen
22  * @since MMBase-1.8
23  */

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

58     public Writer JavaDoc transformBack(Reader JavaDoc r, Writer JavaDoc w) {
59         return rot13(r, w);
60     }
61
62     public String JavaDoc toString() {
63         return "ROT-13";
64     }
65 }
66
Popular Tags