View Javadoc

1   // Copyright (C) 2004, Brian Enigma <enigma at netninja.com>
2   // This file is part of MagicCodes.
3   //
4   // MagicCodes is free software; you can redistribute it and/or modify
5   // it under the terms of the GNU General Public License as published by
6   // the Free Software Foundation; either version 2 of the License, or
7   // (at your option) any later version.
8   //
9   // MagicCodes is distributed in the hope that it will be useful,
10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  // GNU General Public License for more details.
13  //
14  // You should have received a copy of the GNU General Public License
15  // along with Foobar; if not, write to the Free Software
16  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  package org.ninjasoft.magiccodes.plugins;
18  
19  import java.text.DecimalFormat;
20  
21  /***
22   * Plugin for performing ROT-N on text
23   * @author enigma
24   */
25  public class RotN implements Plugin {
26      private DecimalFormat format = new DecimalFormat("00");
27      public String getName() {
28          return "ROT-N";
29      }
30      public String getDescription() {
31          return "Performs ROT-N text rotations";
32      }
33      public boolean usesKey() {
34          return false;
35      }
36      public boolean isInformational() {
37          return true;
38      }
39      public int[] doAction(int[] in, int[] key) {
40          StringBuffer result = new StringBuffer();
41          for (int rot=0; rot<=26; rot++) {
42              result.append("ROT-");
43              result.append(format.format(rot));
44              result.append(": ");
45              for (int i=0; i<in.length; i++) {
46                  int c = in[i];
47                  if ((c >= 'a') && (c <= 'z'))
48                      c = (c - 'a' + rot) % 26 + 'a';
49                  else if ((c >= 'A') && (c <= 'Z'))
50                      c = (c - 'A' + rot) % 26 + 'A';
51                  else if ((c >= ' ') && (c <= '~'))
52                      ;
53                  else
54                      c = 0;
55                  result.append((char) c);
56              }
57              result.append("\n");
58          }
59          int[] resultArray = new int[result.length()];
60          for (int i=0; i<resultArray.length; i++)
61              resultArray[i] = result.charAt(i);
62          return resultArray;
63      }
64  
65  }