com.ecyrd.jspwiki
Class TextUtil

java.lang.Object
  extended by com.ecyrd.jspwiki.TextUtil

public class TextUtil
extends Object

Contains a number of static utility methods.


Field Summary
static int PASSWORD_LENGTH
          Length of password.
 
Constructor Summary
TextUtil()
           
 
Method Summary
static String beautifyString(String s)
          Adds spaces in suitable locations of the input string.
static String beautifyString(String s, String space)
          Adds spaces in suitable locations of the input string.
static int countSections(String pagedata)
          Counts the number of sections (separated with "----") from the page.
static Properties createProperties(String[] values)
          Creates a Properties object based on an array which contains alternatively a key and a value.
static String generateRandomPassword()
          Generate a random String suitable for use as a temporary password.
static boolean getBooleanProperty(Properties props, String key, boolean defval)
          Gets a boolean property from a standard Properties list.
static int getIntegerProperty(Properties props, String key, int defVal)
          Gets an integer-valued property from a standard Properties list.
static String getSection(String pagedata, int section)
          Gets the given section (separated with "----") from the page text.
static String getStringProperty(Properties props, String key, String defval)
          Fetches a String property from the set of Properties.
static boolean isNumber(String s)
          Returns true, if the argument contains a number, otherwise false.
static boolean isPositive(String val)
          Returns true, if the string "val" denotes a positive string.
static String native2Ascii(String s)
          Converts a string from the Unicode representation into something that can be embedded in a java properties file.
static String normalizePostData(String postData)
          Makes sure that the POSTed data is conforms to certain rules.
static int parseIntParameter(String value, int defvalue)
          Parses an integer parameter, returning a default value if the value is null or a non-number.
static String repeatString(String what, int times)
          A simple routine which just repeates the arguments.
static String replaceEntities(String src)
          Replaces the relevant entities inside the String.
static String replaceString(String orig, int start, int end, String text)
          Replaces a part of a string with a new String.
static String replaceString(String orig, String src, String dest)
          Replaces a string with an other string.
static String toHexString(byte[] bytes)
          Generates a hexadecimal string from an array of bytes.
protected static String urlDecode(byte[] bytes, String encoding)
          URL encoder does not handle all characters correctly.
static String urlDecode(String data, String encoding)
          Provides decoded version of string depending on encoding.
static String urlDecodeUTF8(String utf8)
          As java.net.URLDecoder class, but for UTF-8 strings.
protected static String urlEncode(byte[] rs)
          java.net.URLEncoder.encode() method in JDK < 1.4 is buggy.
static String urlEncode(String data, String encoding)
          Provides encoded version of string depending on encoding.
static String urlEncodeUTF8(String text)
          As java.net.URLEncoder class, but this does it in UTF8 character set.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PASSWORD_LENGTH

public static final int PASSWORD_LENGTH
Length of password. @see #generateRandomPassword()

See Also:
Constant Field Values
Constructor Detail

TextUtil

public TextUtil()
Method Detail

urlEncode

protected static String urlEncode(byte[] rs)
java.net.URLEncoder.encode() method in JDK < 1.4 is buggy. This duplicates its functionality.


urlDecode

protected static String urlDecode(byte[] bytes,
                                  String encoding)
                           throws UnsupportedEncodingException,
                                  IllegalArgumentException
URL encoder does not handle all characters correctly. See Bug parade, bug #4257115 for more information.

Thanks to CJB for this fix.

Throws:
UnsupportedEncodingException
IllegalArgumentException

urlEncodeUTF8

public static String urlEncodeUTF8(String text)
As java.net.URLEncoder class, but this does it in UTF8 character set.


urlDecodeUTF8

public static String urlDecodeUTF8(String utf8)
As java.net.URLDecoder class, but for UTF-8 strings.


urlEncode

public static String urlEncode(String data,
                               String encoding)
Provides encoded version of string depending on encoding. Encoding may be UTF-8 or ISO-8859-1 (default).

This implementation is the same as in FileSystemProvider.mangleName().


urlDecode

public static String urlDecode(String data,
                               String encoding)
                        throws UnsupportedEncodingException,
                               IllegalArgumentException
Provides decoded version of string depending on encoding. Encoding may be UTF-8 or ISO-8859-1 (default).

This implementation is the same as in FileSystemProvider.unmangleName().

Throws:
UnsupportedEncodingException
IllegalArgumentException

replaceEntities

public static String replaceEntities(String src)
Replaces the relevant entities inside the String. All & >, <, and " are replaced by their respective names.

Since:
1.6.1

replaceString

public static String replaceString(String orig,
                                   String src,
                                   String dest)
Replaces a string with an other string.

Parameters:
orig - Original string. Null is safe.
src - The string to find.
dest - The string to replace src with.

replaceString

public static String replaceString(String orig,
                                   int start,
                                   int end,
                                   String text)
Replaces a part of a string with a new String.

Parameters:
start - Where in the original string the replacing should start.
end - Where the replacing should end.
orig - Original string. Null is safe.
text - The new text to insert into the string.

parseIntParameter

public static int parseIntParameter(String value,
                                    int defvalue)
Parses an integer parameter, returning a default value if the value is null or a non-number.


getIntegerProperty

public static int getIntegerProperty(Properties props,
                                     String key,
                                     int defVal)
Gets an integer-valued property from a standard Properties list. If the value does not exist, or is a non-integer, returns defVal.

Since:
2.1.48.

getBooleanProperty

public static boolean getBooleanProperty(Properties props,
                                         String key,
                                         boolean defval)
Gets a boolean property from a standard Properties list. Returns the default value, in case the key has not been set.

The possible values for the property are "true"/"false", "yes"/"no", or "on"/"off". Any value not recognized is always defined as "false".

Parameters:
props - A list of properties to search.
key - The property key.
defval - The default value to return.
Returns:
True, if the property "key" was set to "true", "on", or "yes".
Since:
2.0.11

getStringProperty

public static String getStringProperty(Properties props,
                                       String key,
                                       String defval)
Fetches a String property from the set of Properties. This differs from Properties.getProperty() in a couple of key respects: First, property value is trim()med (so no extra whitespace back and front), and well, that's it.

Parameters:
props - The Properties to search through
key - The property key
defval - A default value to return, if the property does not exist.
Returns:
The property value.
Since:
2.1.151

isPositive

public static boolean isPositive(String val)
Returns true, if the string "val" denotes a positive string. Allowed values are "yes", "on", and "true". Comparison is case-insignificant. Null values are safe.

Parameters:
val - Value to check.
Returns:
True, if val is "true", "on", or "yes"; otherwise false.
Since:
2.0.26

normalizePostData

public static String normalizePostData(String postData)
Makes sure that the POSTed data is conforms to certain rules. These rules are: The reason why we're using CRLF is that most browser already return CRLF since that is the closest thing to a HTTP standard.


beautifyString

public static String beautifyString(String s)
Adds spaces in suitable locations of the input string. This is used to transform a WikiName into a more readable format.

Parameters:
s - String to be beautified.
Returns:
A beautified string.

beautifyString

public static String beautifyString(String s,
                                    String space)
Adds spaces in suitable locations of the input string. This is used to transform a WikiName into a more readable format.

Parameters:
s - String to be beautified.
space - Use this string for the space character.
Returns:
A beautified string.
Since:
2.1.127

createProperties

public static Properties createProperties(String[] values)
                                   throws IllegalArgumentException
Creates a Properties object based on an array which contains alternatively a key and a value. It is useful for generating default mappings. For example:
     String[] properties = { "jspwiki.property1", "value1",
                             "jspwiki.property2", "value2 };

     Properties props = TextUtil.createPropertes( values );

     System.out.println( props.getProperty("jspwiki.property1") );
  
would output "value1".

Parameters:
values - Alternating key and value pairs.
Returns:
Property object
Throws:
IllegalArgumentException, - if the property array is missing a value for a key.
IllegalArgumentException
Since:
2.2.
See Also:
Properties

countSections

public static int countSections(String pagedata)
Counts the number of sections (separated with "----") from the page.

Parameters:
pagedata - The WikiText to parse.
Returns:
int Number of counted sections.
Since:
2.1.86.

getSection

public static String getSection(String pagedata,
                                int section)
                         throws IllegalArgumentException
Gets the given section (separated with "----") from the page text. Note that the first section is always #1. If a page has no section markers, them there is only a single section, #1.

Parameters:
pagedata - WikiText to parse.
section - Which section to get.
Returns:
String The section.
Throws:
IllegalArgumentException - If the page does not contain this many sections.
Since:
2.1.86.

repeatString

public static String repeatString(String what,
                                  int times)
A simple routine which just repeates the arguments. This is useful for creating something like a line or something.

Parameters:
what - String to repeat
times - How many times to repeat the string.
Returns:
Guess what?
Since:
2.1.98.

native2Ascii

public static String native2Ascii(String s)
Converts a string from the Unicode representation into something that can be embedded in a java properties file. All references outside the ASCII range are replaced with \\uXXXX.

Parameters:
s -
Returns:
the ASCII string

toHexString

public static String toHexString(byte[] bytes)
Generates a hexadecimal string from an array of bytes. For example, if the array contains { 0x01, 0x02, 0x3E }, the resulting string will be "01023E".

Parameters:
bytes - A Byte array
Returns:
A String representation
Since:
2.3.87

isNumber

public static boolean isNumber(String s)
Returns true, if the argument contains a number, otherwise false. In a quick test this is roughly the same speed as Integer.parseInt() if the argument is a number, and roughly ten times the speed, if the argument is NOT a number.

Since:
2.4

generateRandomPassword

public static String generateRandomPassword()
Generate a random String suitable for use as a temporary password.

Returns:
String suitable for use as a temporary password
Since:
2.4