misc
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.wiki / src / net / sourceforge / phpeclipse / wiki / internal / Configuration.java
index b27800d..a8cf2e2 100644 (file)
@@ -15,11 +15,11 @@ import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin;
 /**
  *  
  */
-public class Configuration implements IConfiguration {
+public class Configuration implements IConfiguration, Comparable {
   private static final String MEMENTO_ID = "id";
 
   private static final String MEMENTO_NAME = "name";
-  
+
   private static final String MEMENTO_USER = "user";
 
   private static final String MEMENTO_URL = "url";
@@ -40,6 +40,24 @@ public class Configuration implements IConfiguration {
 
   protected String fType = "";
 
+  private static final char[] SCRAMBLING_TABLE=new char[] {
+       0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
+       16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
+       114,120,53,79,96,109,72,108,70,64,76,67,116,74,68,87,
+       111,52,75,119,49,34,82,81,95,65,112,86,118,110,122,105,
+       41,57,83,43,46,102,40,89,38,103,45,50,42,123,91,35,
+       125,55,54,66,124,126,59,47,92,71,115,78,88,107,106,56,
+       36,121,117,104,101,100,69,73,99,63,94,93,39,37,61,48,
+       58,113,32,90,44,98,60,51,33,97,62,77,84,80,85,223,
+       225,216,187,166,229,189,222,188,141,249,148,200,184,136,248,190,
+       199,170,181,204,138,232,218,183,255,234,220,247,213,203,226,193,
+       174,172,228,252,217,201,131,230,197,211,145,238,161,179,160,212,
+       207,221,254,173,202,146,224,151,140,196,205,130,135,133,143,246,
+       192,159,244,239,185,168,215,144,139,165,180,157,147,186,214,176,
+       227,231,219,169,175,156,206,198,129,164,150,210,154,177,134,127,
+       182,128,158,208,162,132,167,209,149,241,153,251,237,236,171,195,
+       243,233,253,240,194,250,191,155,142,137,245,235,163,242,178,152
+       };
   public Configuration() {
     this(WikiEditorPlugin.HTTP_QUERY); // default type
   }
@@ -51,7 +69,7 @@ public class Configuration implements IConfiguration {
   public String getId() {
     return fId;
   }
-  
+
   public String getName() {
     return fName;
   }
@@ -115,7 +133,8 @@ public class Configuration implements IConfiguration {
     memento.putString(MEMENTO_TYPE_ID, fType);
     memento.putString(MEMENTO_USER, fUser);
     memento.putString(MEMENTO_URL, fUrl);
-    memento.putString(MEMENTO_PASSWORD, fPassword);
+    String result = 'A'+scramblePassword(fPassword);
+    memento.putString(MEMENTO_PASSWORD, result);
   }
 
   protected void load(IMemento memento) {
@@ -139,9 +158,52 @@ public class Configuration implements IConfiguration {
     if (fUrl == null) {
       fUrl = "";
     }
-    fPassword = memento.getString(MEMENTO_PASSWORD);
-    if (fPassword == null) {
+    String result = memento.getString(MEMENTO_PASSWORD);
+    
+    if (result == null) {
       fPassword = "";
+    } else {
+      fPassword = scramblePassword(result.substring(1));
     }
   }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see java.lang.Object#toString()
+   */
+  public String toString() {
+    StringBuffer buffer = new StringBuffer();
+    buffer.append(fName);
+    buffer.append(" - ");
+    buffer.append(fUser);
+    buffer.append(" - ");
+    buffer.append(fUrl);
+    buffer.append(" - ");
+    buffer.append(fType);
+    return buffer.toString();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see java.lang.Comparable#compareTo(java.lang.Object)
+   */
+  public int compareTo(Object o) {
+    if (o instanceof IConfiguration) {
+      return fName.compareTo(((IConfiguration) o).getName());
+    }
+    return 1;
+  }
+
+  private static String scramblePassword(String password)  {
+    int length = password.length();
+    char[] out = new char[length];
+    for (int i = 0; i < length; i++) {
+      char value = password.charAt(i);
+      out[i] = SCRAMBLING_TABLE[value];
+    }
+    return new String(out);
+  }
+
 }
\ No newline at end of file