Author: jflesch
Date: 2006-10-22 18:57:58 +0000 (Sun, 22 Oct 2006)
New Revision: 10689

Added:
   trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java
Log:
Add missing class

Added: trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java 2006-10-22 18:56:56 UTC 
(rev 10688)
+++ trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java 2006-10-22 18:57:58 UTC 
(rev 10689)
@@ -0,0 +1,182 @@
+package thaw.core;
+
+import thaw.core.Logger;
+
+public class FreenetURIHelper {
+
+       public FreenetURIHelper() {
+
+       }
+
+       public static String cleanURI(String uri) {
+               if (uri == null)
+                       return uri;
+
+               uri = uri.replaceFirst("http://127.0.0.1:8888/";, "");
+               uri = uri.replaceFirst("http://localhost/";, "");
+
+               try {
+                               uri = java.net.URLDecoder.decode(uri, "UTF-8");
+               } catch (java.io.UnsupportedEncodingException e) {
+                       Logger.warning(new FreenetURIHelper(), 
"UnsupportedEncodingException (UTF-8): "+e.toString());
+               }
+
+               return uri;
+       }
+
+
+       public static String getFilenameFromKey(String key) {
+               String filename;
+               String cutcut[] = key.split("/");
+       
+               if (key == null)
+                       return null;
+       
+               if(!key.endsWith("/")) {
+                       filename = cutcut[cutcut.length-1];
+               } else {
+                       filename = "index.html";
+               }
+
+               return filename;
+       }
+
+
+       public static String convertSSKtoUSK(String SSK) {
+               if (SSK == null || SSK.startsWith("USK@"))
+                       return SSK;
+
+               SSK.replaceFirst("SSK@", "USK@");
+
+               String[] split = SSK.split("/");
+
+               SSK = "";
+
+               for (int i = 0 ; i < split.length ; i++) {
+                       switch (i) {
+                       case(0):
+                               SSK = split[i];
+                               break;
+                       case(1):
+                               String subsplit[] = split[i].split("-");
+
+                               SSK = SSK + "/";
+
+                               for (int j = 0 ; j < subsplit.length-1 ; j++) {
+                                       if (j == 0)
+                                               SSK = SSK + subsplit[j];
+                                       else
+                                               SSK = SSK + "-" + subsplit[j];
+                               }
+
+                               SSK = SSK + "/" + subsplit[subsplit.length-1];
+
+                               break;
+                       default:
+                               SSK = SSK + "/" + split[i];
+                       }
+               }
+
+               return SSK;
+       }
+
+
+       public static String abs(String val) {
+               java.math.BigDecimal bd = new java.math.BigDecimal(val);
+
+               return bd.abs().toString();
+       }
+
+
+       public static String convertUSKtoSSK(String USK) {
+               if (USK == null || USK.startsWith("SSK@"))
+                       return USK;
+
+               USK = USK.replaceFirst("USK@", "SSK@");
+
+               String[] split = USK.split("/");
+
+               USK = "";
+               
+               for (int i = 0 ; i < split.length ; i++) {
+                       switch (i) {
+                       case(0):
+                               USK = split[i];
+                               break;
+                       case(2):
+                               USK = USK + "-" + abs(split[i]);
+                               break;
+                       default:
+                               USK = USK + "/" + split[i];
+                               break;
+                       }
+               }
+
+               return USK;
+       }
+
+
+       public static String getPublicInsertionSSK(String key) {
+               key = convertUSKtoSSK(key);
+
+               String split[] = key.split("/");
+
+               key = "";
+
+               for (int i = 0 ; i < split.length-1 ; i++) {
+                       if (i == 0)
+                               key = key + split[i];
+                       else
+                               key = key + "/" + split[i];
+               }
+
+               return key;
+       }
+
+
+       protected static String changeRev(String revStr, int rev, int offset) {
+               if (rev >= 0)
+                       return Integer.toString(rev);
+
+               return Integer.toString(Integer.parseInt(revStr) + offset);
+       }
+
+       /**
+        * @param rev if < 0, then rev is changed according to the given offset
+        */
+       public static String changeSSKRevision(String key, int rev, int offset) 
{
+
+               if (key == null)
+                       return null;
+
+               String[] split = key.split("/");
+
+               key = "";
+
+               for (int i = 0 ; i < split.length ; i++) {
+                       switch(i) {
+                       case(0):
+                               key = key + split[i];
+                               break;
+                       case(1):
+                               String[] subsplit = split[i].split("-");
+
+                               for (int j = 0 ; j < subsplit.length-1 ; j++) {
+                                       if (j == 0)
+                                               key = key + subsplit[j];
+                                       else
+                                               key = key + "-" + subsplit[j];
+                               }
+
+                               key = key + "-" + 
changeRev(subsplit[subsplit.length-1], rev, offset);
+                               break;
+                       default:
+                               key = key + "/" + split[i];                     
        
+                       }
+               }
+
+               return key;
+       }
+
+}
+


Reply via email to