Version 2.0.0 (small API change)
[nikiroo-utils.git] / src / be / nikiroo / utils / StringUtils.java
index cd9a46307202860ded01ec73054973e97f9eec3a..a50ec28f19481363c9c09af476507b4cc5901826 100644 (file)
@@ -1,12 +1,7 @@
 package be.nikiroo.utils;
 
-import java.awt.Image;
-import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.IOException;
-import java.io.InputStream;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.text.Normalizer;
@@ -14,10 +9,9 @@ import java.text.Normalizer.Form;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Scanner;
 import java.util.regex.Pattern;
 
-import javax.imageio.ImageIO;
-
 import org.unbescape.html.HtmlEscape;
 import org.unbescape.html.HtmlEscapeLevel;
 import org.unbescape.html.HtmlEscapeType;
@@ -186,95 +180,20 @@ public class StringUtils {
         * Convert between time as a {@link String} to milliseconds in a "static"
         * way (to exchange data over the wire, for instance).
         * 
-        * @param time
+        * @param displayTime
         *            the time as a {@link String}
         * 
         * @return the time in milliseconds
         */
-       static public long toTime(String display) {
+       static public long toTime(String displayTime) {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                try {
-                       return sdf.parse(display).getTime();
+                       return sdf.parse(displayTime).getTime();
                } catch (ParseException e) {
                        return -1;
                }
        }
 
-       /**
-        * Convert the given {@link Image} object into a Base64 representation of
-        * the same {@link Image}. object.
-        * 
-        * @param image
-        *            the {@link Image} object to convert
-        * 
-        * @return the Base64 representation
-        * 
-        * @throws IOException
-        *             in case of IO error
-        */
-       static public String fromImage(BufferedImage image) throws IOException {
-               String imageString = null;
-               ByteArrayOutputStream out = new ByteArrayOutputStream();
-
-               ImageIO.write(image, "jpeg", out);
-               byte[] imageBytes = out.toByteArray();
-
-               imageString = new String(Base64.encodeBytes(imageBytes));
-
-               out.close();
-
-               return imageString;
-       }
-
-       /**
-        * Convert the given {@link File} image into a Base64 representation of the
-        * same {@link File}.
-        * 
-        * @param file
-        *            the {@link File} image to convert
-        * 
-        * @return the Base64 representation
-        * 
-        * @throws IOException
-        *             in case of IO error
-        */
-       static public String fromStream(InputStream in) throws IOException {
-               String fileString = null;
-               ByteArrayOutputStream out = new ByteArrayOutputStream();
-
-               byte[] buf = new byte[8192];
-
-               int c = 0;
-               while ((c = in.read(buf, 0, buf.length)) > 0) {
-                       out.write(buf, 0, c);
-               }
-               out.flush();
-               in.close();
-
-               fileString = new String(Base64.encodeBytes(out.toByteArray()));
-               out.close();
-
-               return fileString;
-       }
-
-       /**
-        * Convert the given Base64 representation of an image into an {@link Image}
-        * object.
-        * 
-        * @param b64data
-        *            the {@link Image} in Base64 format
-        * 
-        * @return the {@link Image} object
-        * 
-        * @throws IOException
-        *             in case of IO error
-        */
-       static public BufferedImage toImage(String b64data) throws IOException {
-               ByteArrayInputStream in = new ByteArrayInputStream(
-                               Base64.decode(b64data));
-               return IOUtils.toImage(in);
-       }
-
        /**
         * Return a hash of the given {@link String}.
         * 
@@ -283,7 +202,7 @@ public class StringUtils {
         * 
         * @return the hash
         */
-       static public String getHash(String input) {
+       static public String getMd5Hash(String input) {
                try {
                        MessageDigest md = MessageDigest.getInstance("MD5");
                        md.update(input.getBytes());
@@ -325,7 +244,9 @@ public class StringUtils {
                        }
                }
 
-               return HtmlEscape.unescapeHtml(builder.toString());
+               char nbsp = ' '; // non-breakable space (a special char)
+               char space = ' ';
+               return HtmlEscape.unescapeHtml(builder.toString()).replace(nbsp, space);
        }
 
        /**
@@ -364,4 +285,26 @@ public class StringUtils {
                                HtmlEscapeType.HTML4_NAMED_REFERENCES_DEFAULT_TO_HEXA,
                                HtmlEscapeLevel.LEVEL_1_ONLY_MARKUP_SIGNIFICANT);
        }
+
+       public static String zip64(String data) {
+               try {
+                       return Base64.encodeBytes(data.getBytes(), Base64.GZIP);
+               } catch (IOException e) {
+                       e.printStackTrace();
+                       return null;
+               }
+       }
+
+       public static String unzip64(String data) throws IOException {
+               ByteArrayInputStream in = new ByteArrayInputStream(Base64.decode(data,
+                               Base64.GZIP));
+
+               Scanner scan = new Scanner(in);
+               scan.useDelimiter("\\A");
+               try {
+                       return scan.next();
+               } finally {
+                       scan.close();
+               }
+       }
 }