KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > gargoylesoftware > htmlunit > TextUtil


1 /*
2  * Copyright (c) 2002, 2005 Gargoyle Software Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice,
8  * this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright notice,
10  * this list of conditions and the following disclaimer in the documentation
11  * and/or other materials provided with the distribution.
12  * 3. The end-user documentation included with the redistribution, if any, must
13  * include the following acknowledgment:
14  *
15  * "This product includes software developed by Gargoyle Software Inc.
16  * (http://www.GargoyleSoftware.com/)."
17  *
18  * Alternately, this acknowledgment may appear in the software itself, if
19  * and wherever such third-party acknowledgments normally appear.
20  * 4. The name "Gargoyle Software" must not be used to endorse or promote
21  * products derived from this software without prior written permission.
22  * For written permission, please contact info@GargoyleSoftware.com.
23  * 5. Products derived from this software may not be called "HtmlUnit", nor may
24  * "HtmlUnit" appear in their name, without prior written permission of
25  * Gargoyle Software Inc.
26  *
27  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
28  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
29  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARGOYLE
30  * SOFTWARE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
33  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
36  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37  */

38 package com.gargoylesoftware.htmlunit;
39
40 import java.io.ByteArrayInputStream JavaDoc;
41 import java.io.ByteArrayOutputStream JavaDoc;
42 import java.io.IOException JavaDoc;
43 import java.io.InputStream JavaDoc;
44 import java.io.OutputStreamWriter JavaDoc;
45 import java.io.UnsupportedEncodingException JavaDoc;
46
47 /**
48  * Utility methods relating to text.
49  *
50  * @version $Revision: 100 $
51  * @author <a HREF="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
52  */

53 public final class TextUtil {
54     /** Private constructor to prevent instantiation */
55     private TextUtil() {}
56
57
58     /**
59      * Return true if the string starts with the specified prefix, irrespective of case.
60      * @param stringToCheck The string to check
61      * @param prefix The prefix
62      * @return true if the string starts with the prefix.
63      */

64     public static boolean startsWithIgnoreCase( final String JavaDoc stringToCheck, final String JavaDoc prefix ) {
65         Assert.notNull("stringToCheck", stringToCheck);
66         Assert.notNull("prefix", prefix);
67
68         if( prefix.length() == 0 ) {
69             throw new IllegalArgumentException JavaDoc("Prefix may not be empty");
70         }
71
72         final int prefixLength = prefix.length();
73         if( stringToCheck.length() < prefixLength ) {
74             return false;
75         }
76         else {
77             return stringToCheck.substring(0,prefixLength).toLowerCase().equals(prefix.toLowerCase());
78         }
79     }
80
81
82     /**
83      * Convert a string into an input stream.
84      * @param content The string
85      * @return The resulting input stream.
86      */

87     public static InputStream JavaDoc toInputStream( final String JavaDoc content ) {
88         try {
89             return toInputStream(content, "ISO-8859-1");
90         }
91         catch( final UnsupportedEncodingException JavaDoc e ) {
92             throw new IllegalStateException JavaDoc(
93                 "ISO-8859-1 is an unsupported encoding! You may have a corrupted installation of java.");
94         }
95     }
96
97     /**
98      * Convert a string into an input stream.
99      * @param content The string
100      * @param encoding The encoding to use when converting the string to a stream.
101      * @return The resulting input stream.
102      * @throws UnsupportedEncodingException If the encoding is not supported.
103      */

104     public static InputStream JavaDoc toInputStream(
105             final String JavaDoc content,
106             final String JavaDoc encoding )
107         throws
108             UnsupportedEncodingException JavaDoc {
109
110         try {
111             final ByteArrayOutputStream JavaDoc byteArrayOutputStream = new ByteArrayOutputStream JavaDoc(content.length()*2);
112             final OutputStreamWriter JavaDoc writer = new OutputStreamWriter JavaDoc(byteArrayOutputStream, encoding);
113             writer.write(content);
114             writer.flush();
115
116             final byte[] byteArray = byteArrayOutputStream.toByteArray();
117             return new ByteArrayInputStream JavaDoc(byteArray);
118         }
119         catch( final UnsupportedEncodingException JavaDoc e ) {
120             throw e;
121         }
122         catch( final IOException JavaDoc e ) {
123             // Theoretically impossible since all the "IO" is in memory but it's a
124
// checked exception so we have to catch it.
125
e.printStackTrace();
126             throw new IllegalStateException JavaDoc("Exception when converting a string to an input stream: "+e);
127         }
128     }
129 }
130
Popular Tags