60c476f8438dd1f5b4b03ddfe87a49bd94f7d814
[OpenSRF.git] / src / java / org / opensrf / util / Utils.java
1 package org.opensrf.util;
2
3 import java.io.*;
4 import java.util.*;
5
6 /**
7  * Collection of general, static utility methods
8  */
9 public class Utils {
10
11     /**
12      * Returns the string representation of a given file.
13      * @param filename The file to turn into a string
14      */
15     public static String fileToString(String filename) 
16             throws FileNotFoundException, IOException {
17
18         StringBuffer sb = new StringBuffer();
19         BufferedReader in = new BufferedReader(new FileReader(filename));
20         String str;
21         while ((str = in.readLine()) != null) 
22             sb.append(str);
23         in.close();
24         return sb.toString();
25     }
26
27
28     /**
29      * @see escape(String, StringBuffer)
30      */
31     public static String escape(String string) {
32         StringBuffer sb = new StringBuffer();
33         escape(string, sb);
34         return sb.toString();
35     }
36
37     /**
38      * Escapes a string.  Turns bare newlines into \n, etc.
39      * Escapes \n, \r, \t, ", \f
40      * Encodes non-ascii characters as UTF-8: \u0000
41      * @param string The string to escape
42      * @param sb The string buffer to write the escaped string into
43      */
44     public static void escape(String string, StringBuffer sb) {
45         int len = string.length();
46         String utf;
47         char c;
48         for( int i = 0; i < len; i++ ) {
49             c = string.charAt(i);
50             switch (c) {
51                 case '\\':
52                     sb.append("\\\\");
53                     break;
54                 case '"':
55                     sb.append("\\\"");
56                     break;
57                 case '\b':
58                     sb.append("\\b");
59                     break;
60                 case '\t':
61                     sb.append("\\t");
62                     break;
63                 case '\n':
64                     sb.append("\\n");
65                     break;
66                 case '\f':
67                     sb.append("\\f");
68                     break;
69                 case '\r':
70                     sb.append("\\r");
71                     break;
72                 default:
73                     if (c < 32 || c > 126 ) { 
74                         /* escape all non-ascii or control characters as UTF-8 */
75                         utf = "000" + Integer.toHexString(c);
76                         sb.append("\\u" + utf.substring(utf.length() - 4));
77                     } else {
78                         sb.append(c);
79                     }
80             }
81         }
82     }
83 }
84
85
86