KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jdom > contrib > helpers > TextHelper


1 /*--
2
3  $Id: TextHelper.java,v 1.2 2004/02/06 09:57:48 jhunter Exp $
4
5  Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin.
6  All rights reserved.
7
8  Redistribution and use in source and binary forms, with or without
9  modification, are permitted provided that the following conditions
10  are met:
11
12  1. Redistributions of source code must retain the above copyright
13     notice, this list of conditions, and the following disclaimer.
14
15  2. Redistributions in binary form must reproduce the above copyright
16     notice, this list of conditions, and the disclaimer that follows
17     these conditions in the documentation and/or other materials
18     provided with the distribution.
19
20  3. The name "JDOM" must not be used to endorse or promote products
21     derived from this software without prior written permission. For
22     written permission, please contact <request_AT_jdom_DOT_org>.
23
24  4. Products derived from this software may not be called "JDOM", nor
25     may "JDOM" appear in their name, without prior written permission
26     from the JDOM Project Management <request_AT_jdom_DOT_org>.
27
28  In addition, we request (but do not require) that you include in the
29  end-user documentation provided with the redistribution and/or in the
30  software itself an acknowledgement equivalent to the following:
31      "This product includes software developed by the
32       JDOM Project (http://www.jdom.org/)."
33  Alternatively, the acknowledgment may be graphical using the logos
34  available at http://www.jdom.org/images/logos.
35
36  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT
40  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  SUCH DAMAGE.
48
49  This software consists of voluntary contributions made by many
50  individuals on behalf of the JDOM Project and was originally
51  created by Jason Hunter <jhunter_AT_jdom_DOT_org> and
52  Brett McLaughlin <brett_AT_jdom_DOT_org>. For more information
53  on the JDOM Project, please see <http://www.jdom.org/>.
54
55  */

56
57 package org.jdom.contrib.helpers;
58
59 import org.jdom.*;
60
61 /** <p>
62  * This class contains static helper methods.
63  * </p>
64  * @author Alex Rosen
65  */

66 public class TextHelper {
67     /**
68      * <p>
69      * This returns the text with surrounding whitespace removed and
70      * internal whitespace normalized to a single space.
71      * </p>
72      */

73     public static String JavaDoc normalize(String JavaDoc text) {
74         char[] chars = text.toCharArray();
75         char[] newChars = new char[chars.length];
76         boolean white = true;
77         int pos = 0;
78         for (int i = 0; i < chars.length; i++) {
79             char c = chars[i];
80             if (c == ' ' || c == '\r' || c == '\n' || c == '\t') {
81                 if (!white) {
82                     newChars[pos++] = ' ';
83                     white = true;
84                 }
85             }
86             else {
87                 newChars[pos++] = c;
88                 white = false;
89             }
90         }
91         if (white && pos > 0) {
92             pos--;
93         }
94         return new String JavaDoc(newChars, 0, pos);
95     }
96
97     /**
98      * <p>
99      * This convenience method returns the textual content of the named
100      * child element, or returns an empty <code>String</code> ("")
101      * if the child has no textual content. However, if the child does
102      * not exist, <code>null</code> is returned.
103      * </p>
104      *
105      * @param parent the parent element
106      * @param name the name of the child
107      * @return text content for the named child, or null if no
108      * such child exists
109      */

110     public static String JavaDoc getChildText(Element parent, String JavaDoc name) {
111         Element child = parent.getChild(name);
112         if (child == null) {
113             return null;
114         }
115         return child.getText();
116     }
117
118     /**
119      * <p>
120      * This convenience method returns the textual content of the named
121      * child element, or returns an empty <code>String</code> ("")
122      * if the child has no textual content. However, if the child does
123      * not exist, <code>null</code> is returned.
124      * </p>
125      *
126      * @param parent the parent element
127      * @param name the name of the child
128      * @param ns the namespace of the child
129      * @return text content for the named child, or null if no
130      * such child exists
131      */

132     public static String JavaDoc getChildText(Element parent, String JavaDoc name, Namespace ns) {
133         Element child = parent.getChild(name, ns);
134         if (child == null) {
135             return null;
136         }
137         return child.getText();
138     }
139
140     /**
141      * <p>
142      * This convenience method returns the trimmed textual content of the
143      * named child element, or returns null if there's no such child.
144      * See <code>String.trim()</code> for details of text trimming.
145      * </p>
146      *
147      * @param parent the parent element
148      * @param name the name of the child
149      * @return trimmed text content for the named child, or null if no
150      * such child exists
151      */

152     public static String JavaDoc getChildTextTrim(Element parent, String JavaDoc name) {
153         Element child = parent.getChild(name);
154         if (child == null) {
155             return null;
156         } else {
157             return child.getText().trim();
158         }
159     }
160
161     /**
162      * <p>
163      * This convenience method returns the trimmed textual content of the
164      * named child element, or returns null if there's no such child.
165      * See <code>String.trim()</code> for
166      * details of text trimming.
167      * </p>
168      *
169      * @param parent the parent element
170      * @param name the name of the child
171      * @param ns the namespace of the child
172      * @return trimmed text content for the named child, or null if no
173      * such child exists
174      */

175     public static String JavaDoc getChildTextTrim(Element parent, String JavaDoc name, Namespace ns) {
176         Element child = parent.getChild(name, ns);
177         if (child == null) {
178             return null;
179         } else {
180             return child.getText().trim();
181         }
182     }
183
184     /**
185      * <p>
186      * This convenience method returns the normalized textual content of the
187      * named child element, or returns null if there's no such child.
188      * See <code>{@link #normalize}</code> for details of text normalization.
189      * </p>
190      *
191      * @param parent the parent element
192      * @param name the name of the child
193      * @return normalized text content for the named child, or null if no
194      * such child exists
195      */

196     public static String JavaDoc getChildTextNormalize(Element parent, String JavaDoc name) {
197         Element child = parent.getChild(name);
198         if (child == null) {
199             return null;
200         } else {
201             return normalize(child.getText());
202         }
203     }
204
205     /**
206      * <p>
207      * This convenience method returns the normalized textual content of the
208      * named child element, or returns null if there's no such child.
209      * See <code>{@link #normalize}</code> for
210      * details of text normalization.
211      * </p>
212      *
213      * @param parent the parent element
214      * @param name the name of the child
215      * @param ns the namespace of the child
216      * @return normalized text content for the named child, or null if no
217      * such child exists
218      */

219     public static String JavaDoc getChildTextNormalize(Element parent, String JavaDoc name, Namespace ns) {
220         Element child = parent.getChild(name, ns);
221         if (child == null) {
222             return null;
223         } else {
224             return normalize(child.getText());
225         }
226     }
227 }
228
229
Popular Tags