KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > frontend > HtmlHelper


1 /*
2  * Copyright 2004 Outerthought bvba and Schaubroeck nv
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.outerj.daisy.frontend;
17
18 import java.util.regex.Pattern JavaDoc;
19 import java.util.regex.Matcher JavaDoc;
20
21 public class HtmlHelper {
22     private static Pattern JavaDoc emptyHtml1 = Pattern.compile(".*<body/>.*", Pattern.DOTALL);
23     private static Pattern JavaDoc emptyHtml2 = Pattern.compile(".*<body>\\s*?</body>.*", Pattern.DOTALL);
24
25     /**
26      * Returns true if the HTML given as a string parameter is empty.
27      *
28      * <p>This is needed to detect whether a field widget with HTMLArea rendering
29      * actually contains entered text, either for validating of required parts
30      * or for avoiding storing this "empty content". This method assumes the HTML is
31      * cleaned up with the {@link org.outerj.daisy.frontend.editor.HtmlCleaningConvertor} and that in case it is empty,
32      * it only contains the html and body elements, with no extra attributes.
33      *
34      * <p>Given a specific configuration of the HtmlCleaningConvertor, we could detect
35      * empty HTML simply by a string compare, but this method is a little bit more
36      * robust to changing configurations (ie changes in amount of whitespace or
37      * in the produced output of the html cleaner).
38      *
39      * <p>Practically speaking, it works as follows:
40      * <ul>
41      * <li>If the input is null or an empty string, it is empty
42      * <li>If the input text is longer then 50 characters, assume it is not empty.
43      * <li>If the input contains &lt;body/> or &lt;body>...whitespace...&lt;/body> in it, it is empty
44      * <li>else, it is not empty
45      * </ul>
46      */

47     public static boolean isEmpty(String JavaDoc html) {
48         if (html == null)
49             return true;
50
51         if (html.length() > 50)
52             return false;
53
54         html = html.trim();
55         if (html.equals(""))
56             return true;
57
58         Matcher JavaDoc matcher;
59
60         matcher = emptyHtml1.matcher(html);
61         if (matcher.matches())
62             return true;
63
64         matcher = emptyHtml2.matcher(html);
65         if (matcher.matches())
66             return true;
67
68         return false;
69     }
70 }
71
Popular Tags