001: /**
002: * Copyright (c) 2003-2007, David A. Czarnecki
003: * All rights reserved.
004: *
005: * Redistribution and use in source and binary forms, with or without
006: * modification, are permitted provided that the following conditions are met:
007: *
008: * Redistributions of source code must retain the above copyright notice, this list of conditions and the
009: * following disclaimer.
010: * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
011: * following disclaimer in the documentation and/or other materials provided with the distribution.
012: * Neither the name of "David A. Czarnecki" and "blojsom" nor the names of its contributors may be used to
013: * endorse or promote products derived from this software without specific prior written permission.
014: * Products derived from this software may not be called "blojsom", nor may "blojsom" appear in their name,
015: * without prior written permission of David A. Czarnecki.
016: *
017: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
018: * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
019: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
020: * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
021: * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
022: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
023: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
025: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
026: * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
027: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
028: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
029: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
030: */package org.blojsom.plugin.common;
031:
032: import org.blojsom.blog.Blog;
033: import org.blojsom.blog.Entry;
034: import org.blojsom.plugin.Plugin;
035: import org.blojsom.plugin.PluginException;
036: import org.blojsom.util.BlojsomUtils;
037:
038: import javax.servlet.http.HttpServletRequest;
039: import javax.servlet.http.HttpServletResponse;
040: import java.util.Map;
041:
042: /**
043: * StringUtilities plugin
044: *
045: * @author David Czarnecki
046: * @version $Id: StringUtilitiesPlugin.java,v 1.3 2007/01/17 02:35:09 czarneckid Exp $
047: * @since blojsom 3.0
048: */
049: public class StringUtilitiesPlugin implements Plugin {
050:
051: private static final String BLOJSOM_PLUGIN_STRING_UTILITIES = "BLOJSOM_PLUGIN_STRING_UTILITIES";
052:
053: /**
054: * Construct a new StringUtilities plugin
055: */
056: public StringUtilitiesPlugin() {
057: }
058:
059: /**
060: * Initialize this plugin. This method only called when the plugin is instantiated.
061: *
062: * @throws org.blojsom.plugin.PluginException
063: * If there is an error initializing the plugin
064: */
065: public void init() throws PluginException {
066: }
067:
068: /**
069: * Process the blog entries
070: *
071: * @param httpServletRequest Request
072: * @param httpServletResponse Response
073: * @param blog {@link Blog} instance
074: * @param context Context
075: * @param entries Blog entries retrieved for the particular request
076: * @return Modified set of blog entries
077: * @throws PluginException If there is an error processing the blog entries
078: */
079: public Entry[] process(HttpServletRequest httpServletRequest,
080: HttpServletResponse httpServletResponse, Blog blog,
081: Map context, Entry[] entries) throws PluginException {
082: context.put(BLOJSOM_PLUGIN_STRING_UTILITIES,
083: new StringUtilities());
084:
085: return entries;
086: }
087:
088: /**
089: * Perform any cleanup for the plugin. Called after {@link #process}.
090: *
091: * @throws org.blojsom.plugin.PluginException
092: * If there is an error performing cleanup for this plugin
093: */
094: public void cleanup() throws PluginException {
095: }
096:
097: /**
098: * Called when BlojsomServlet is taken out of service
099: *
100: * @throws org.blojsom.plugin.PluginException
101: * If there is an error in finalizing this plugin
102: */
103: public void destroy() throws PluginException {
104: }
105:
106: /**
107: * Utility class for bundling string utility functions to make available to templates
108: */
109: public class StringUtilities {
110:
111: /**
112: * Construct a new instance of StringUtilities
113: */
114: public StringUtilities() {
115: }
116:
117: /**
118: * Return an escaped string where &, <, >, ", and ' are converted to their HTML equivalents
119: *
120: * @param input Unescaped string
121: * @return Escaped string containing HTML equivalents for &, <, >, ", and '
122: */
123: public String escapeString(String input) {
124: return BlojsomUtils.escapeString(input);
125: }
126:
127: /**
128: * Return an escaped string where &, <, > are converted to their HTML equivalents
129: *
130: * @param input Unescaped string
131: * @return Escaped string containing HTML equivalents for &, <, >
132: */
133: public String escapeStringSimple(String input) {
134: return BlojsomUtils.escapeStringSimple(input);
135: }
136:
137: /**
138: * Return an escaped string where <, > are converted to their HTML equivalents
139: *
140: * @param input Unescaped string
141: * @return Escaped string containing HTML equivalents for <, >
142: */
143: public String escapeBrackets(String input) {
144: return BlojsomUtils.escapeBrackets(input);
145: }
146:
147: /**
148: * Return a UTF-8 encoded string from the input
149: *
150: * @param input Input
151: * @return Input that has been encoded using UTF-8
152: */
153: public String encodeStringUTF8(String input) {
154: return BlojsomUtils.urlEncode(input);
155: }
156:
157: /**
158: * Decode a UTF-8 encoded string from the input
159: *
160: * @param input Input
161: * @return Input that has been decoded using UTF-8
162: */
163: public String decodeStringUTF8(String input) {
164: return BlojsomUtils.urlDecode(input);
165: }
166:
167: /**
168: * Parse a comma-separated list of values; also parses over internal spaces
169: *
170: * @param commaList Comma-separated list
171: * @return Individual strings from the comma-separated list
172: */
173: public String[] parseCommaList(String commaList) {
174: return BlojsomUtils.parseCommaList(commaList);
175: }
176:
177: /**
178: * Parse a comma-separated list of values
179: *
180: * @param commaList Comma-separated list
181: * @return Individual strings from the comma-separated list
182: */
183: public String[] parseOnlyCommaList(String commaList) {
184: return BlojsomUtils.parseOnlyCommaList(commaList);
185: }
186:
187: /**
188: * Parse a comma-separated list of values
189: *
190: * @param commaList Comma-separated list
191: * @param trim If the contents of the array should be trimmed
192: * @return Individual strings from the comma-separated list
193: */
194: public String[] parseOnlyCommaList(String commaList,
195: boolean trim) {
196: return BlojsomUtils.parseOnlyCommaList(commaList, trim);
197: }
198:
199: /**
200: * Parse a string into two separate strings based on the last comma in the input value
201: *
202: * @param value Input
203: * @return Parsed string
204: */
205: public String[] parseLastComma(String value) {
206: return BlojsomUtils.parseLastComma(value);
207: }
208:
209: /**
210: * Parse a delimited list of values
211: *
212: * @param delimitedList Delimited list
213: * @param delimiter Field Delimiter
214: * @return Individual strings from the comma-separated list
215: */
216: public String[] parseDelimitedList(String delimitedList,
217: String delimiter) {
218: return BlojsomUtils.parseDelimitedList(delimitedList,
219: delimiter);
220: }
221:
222: /**
223: * Parse a delimited list of values
224: *
225: * @param delimitedList Delimited list
226: * @param delimiter Field Delimiter
227: * @param trim If the contents of the array should be trimmed
228: * @return Individual strings from the comma-separated list
229: */
230: public String[] parseDelimitedList(String delimitedList,
231: String delimiter, boolean trim) {
232: return BlojsomUtils.parseDelimitedList(delimitedList,
233: delimiter, trim);
234: }
235:
236: }
237: }
|