001: /*
002: * $Header: /export/home/cvsroot/MyPersonalizerRepository/MyPersonalizer/Subsystems/Portal/Sources/es/udc/mypersonalizer/portal/view/taglib/html/WizardTag.java,v 1.1.1.1 2004/03/25 12:08:41 fbellas Exp $
003: * $Revision: 1.1.1.1 $
004: * $Date: 2004/03/25 12:08:41 $
005: *
006: * =============================================================================
007: *
008: * Copyright (c) 2003, The MyPersonalizer Development Group
009: * (http://www.tic.udc.es/~fbellas/mypersonalizer/index.html) at
010: * University Of A Coruna
011: * All rights reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions are met:
015: *
016: * - Redistributions of source code must retain the above copyright notice,
017: * this list of conditions and the following disclaimer.
018: *
019: * - Redistributions in binary form must reproduce the above copyright notice,
020: * this list of conditions and the following disclaimer in the documentation
021: * and/or other materials provided with the distribution.
022: *
023: * - Neither the name of the University Of A Coruna nor the names of its
024: * contributors may be used to endorse or promote products derived from
025: * this software without specific prior written permission.
026: *
027: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
028: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
029: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
030: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
031: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
032: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
033: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
034: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
035: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
036: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
037: * POSSIBILITY OF SUCH DAMAGE.
038: *
039: */
040:
041: package es.udc.mypersonalizer.portal.view.taglib.html;
042:
043: import es.udc.mypersonalizer.portal.conventions.RequestParameterConventions;
044: import java.util.*;
045: import javax.servlet.jsp.JspException;
046: import javax.servlet.jsp.JspTagException;
047: import javax.servlet.jsp.tagext.TagSupport;
048:
049: /**
050: * This is the JSP tag intended to be used in jsp pages with forms
051: * which data will be converted into a <tt>WizardEvent</tt> to be treated.
052: * For example, the user registration or profile modification form or
053: * a wizard.<p>
054: *
055: * Its use, in addition to {@link WizardFieldTag} is usally similar to this:<p>
056: * <tt>
057: * <myper:wizard propertyUpdaterName="addSimpleProperty"&mt;
058: * <myper:wizard-field name="loginName"%mt;
059: * <myper:wizard-field name="address"%mt;
060: * </myper:wizard&mt;
061: * </tt><p>
062: *
063: * This tag takes care of the following parameters directly:
064: * <ul>
065: * <li><tt>serviceIdentifier</tt></li>
066: * <li><tt>propertyIdentifier</tt></li>
067: * <li><tt>propertyStructureName</tt></li>
068: * <li><tt>previousPropertyStructureNames</tt></li>
069: * <li><tt>propertyUpdaterName</tt> (default value:
070: * <tt>updateSimpleProperties</tt>)</li>
071: * </ul>
072: *
073: * ...and, with the help of the <tt>WizardFieldTag</tt> tag, can also
074: * build the following muti-valued parameters:
075: * <ul>
076: * <li><tt>simplePropertyNames</tt></li>
077: * <li><tt>simplePropertyNamesNotToTrim</tt></li>
078: * </ul>
079: *
080: * @author Daniel Fernandez
081: * @since 1.0
082: */
083: public class WizardTag extends TagSupport {
084:
085: private String serviceIdentifier = null;
086: private String propertyUpdaterName = "updateSimpleProperties";
087: private String propertyStructureName = null;
088: private String previousPropertyStructureNames = null;
089: private List simplePropertyNames = null;
090: private List simplePropertyNamesNotToTrim = null;
091: private String propertyIdentifier = null;
092:
093: public int doStartTag() throws JspException {
094:
095: simplePropertyNames = new ArrayList();
096: simplePropertyNamesNotToTrim = new ArrayList();
097:
098: serviceIdentifier = pageContext.getRequest().getParameter(
099: RequestParameterConventions.SERVICE_IDENTIFIER);
100:
101: propertyIdentifier = pageContext.getRequest().getParameter(
102: RequestParameterConventions.PROPERTY_IDENTIFIER);
103:
104: propertyStructureName = (String) pageContext
105: .getRequest()
106: .getParameter(
107: RequestParameterConventions.PROPERTY_STRUCTURE_NAME);
108: if (propertyStructureName == null) {
109: propertyStructureName = "0";
110: }
111: previousPropertyStructureNames = (String) pageContext
112: .getRequest()
113: .getParameter(
114: RequestParameterConventions.PREVIOUS_PROPERTY_STRUCTURE_NAMES);
115: if (previousPropertyStructureNames == null) {
116: previousPropertyStructureNames = "";
117: }
118:
119: return EVAL_BODY_INCLUDE;
120: }
121:
122: public int doEndTag() throws JspException {
123:
124: try {
125:
126: printTags();
127:
128: } catch (Exception e) {
129: throw new JspTagException("WizardTag: " + e.getMessage());
130: }
131:
132: return EVAL_PAGE;
133: }
134:
135: public String getServiceIdentifier() {
136: return serviceIdentifier;
137: }
138:
139: public void setServiceIdentifier(String serviceIdentifier) {
140: this .serviceIdentifier = serviceIdentifier;
141: }
142:
143: public String getPropertyStructureName() {
144: return propertyStructureName;
145: }
146:
147: public void setPropertyStructureName(String propertyStructureName) {
148: this .propertyStructureName = propertyStructureName;
149: }
150:
151: public String getPropertyUpdaterName() {
152: return propertyUpdaterName;
153: }
154:
155: public void setPropertyUpdaterName(String propertyUpdaterName) {
156: this .propertyUpdaterName = propertyUpdaterName;
157: }
158:
159: public void addSimplePropertyName(String simplePropertyName) {
160:
161: if (!simplePropertyName.equals("")) {
162: simplePropertyNames.add(new String(simplePropertyName));
163: }
164:
165: }
166:
167: public void addSimplePropertyNameNotToTrim(
168: String simplePropertyNameNotToTrim) {
169:
170: if (!simplePropertyNameNotToTrim.equals("")) {
171: simplePropertyNamesNotToTrim.add(new String(
172: simplePropertyNameNotToTrim));
173: }
174:
175: }
176:
177: private void printTags() throws Exception {
178:
179: if (serviceIdentifier != null) {
180: pageContext
181: .getOut()
182: .println(
183: "<input type=\"hidden\" name=\""
184: + RequestParameterConventions.SERVICE_IDENTIFIER
185: + "\" value=\"" + serviceIdentifier
186: + "\">");
187: }
188:
189: if (propertyIdentifier != null) {
190: pageContext
191: .getOut()
192: .println(
193: "<input type=\"hidden\" name=\""
194: + RequestParameterConventions.PROPERTY_IDENTIFIER
195: + "\" value=\""
196: + propertyIdentifier + "\">");
197: }
198:
199: if (propertyUpdaterName != null) {
200: pageContext
201: .getOut()
202: .println(
203: "<input type=\"hidden\" name=\""
204: + RequestParameterConventions.PROPERTY_UPDATER_NAME
205: + "\" value=\""
206: + propertyUpdaterName + "\">");
207: }
208:
209: if (propertyStructureName != null) {
210: pageContext
211: .getOut()
212: .println(
213: "<input type=\"hidden\" name=\""
214: + RequestParameterConventions.PROPERTY_STRUCTURE_NAME
215: + "\" value=\""
216: + propertyStructureName + "\">");
217: }
218:
219: if (previousPropertyStructureNames != null) {
220: pageContext
221: .getOut()
222: .println(
223: "<input type=\"hidden\" name=\""
224: + RequestParameterConventions.PREVIOUS_PROPERTY_STRUCTURE_NAMES
225: + "\" value=\""
226: + previousPropertyStructureNames
227: + "\">");
228: }
229:
230: if (simplePropertyNames.isEmpty()) {
231: pageContext
232: .getOut()
233: .println(
234: "<input type=\"hidden\" name=\""
235: + RequestParameterConventions.SIMPLE_PROPERTY_NAMES
236: + "\" value=\"\">");
237: } else {
238: Iterator namesIter = simplePropertyNames.iterator();
239: while (namesIter.hasNext()) {
240: String simplePropertyName = (String) namesIter.next();
241: pageContext
242: .getOut()
243: .println(
244: "<input type=\"hidden\" name=\""
245: + RequestParameterConventions.SIMPLE_PROPERTY_NAMES
246: + "\" value=\""
247: + simplePropertyName + "\">");
248: }
249: }
250:
251: if (simplePropertyNamesNotToTrim.isEmpty()) {
252: pageContext
253: .getOut()
254: .println(
255: "<input type=\"hidden\" name=\""
256: + RequestParameterConventions.SIMPLE_PROPERTY_NAMES_NOT_TO_TRIM
257: + "\" value=\"\">");
258: } else {
259: Iterator namesIter = simplePropertyNamesNotToTrim
260: .iterator();
261: while (namesIter.hasNext()) {
262: String simplePropertyNameNotToTrim = (String) namesIter
263: .next();
264: pageContext
265: .getOut()
266: .println(
267: "<input type=\"hidden\" name=\""
268: + RequestParameterConventions.SIMPLE_PROPERTY_NAMES_NOT_TO_TRIM
269: + "\" value=\""
270: + simplePropertyNameNotToTrim
271: + "\">");
272: }
273: }
274:
275: }
276:
277: }
|