KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > mlw > vlh > web > tag > ValueListRetriever


1 /**
2  * Copyright (c) 2003 held jointly by the individual authors.
3  *
4  * This library is free software; you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License as published
6  * by the Free Software Foundation; either version 2.1 of the License, or
7  * (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; with out even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this library; if not, write to the Free Software Foundation,
16  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
17  *
18  * > http://www.gnu.org/copyleft/lesser.html
19  * > http://www.opensource.org/licenses/lgpl-license.php
20  */

21 package net.mlw.vlh.web.tag;
22
23 import javax.servlet.http.HttpServletRequest JavaDoc;
24 import javax.servlet.jsp.JspException JavaDoc;
25
26 import net.mlw.vlh.ValueList;
27 import net.mlw.vlh.ValueListHandler;
28 import net.mlw.vlh.ValueListInfo;
29 import net.mlw.vlh.web.ValueListRequestUtil;
30 import net.mlw.vlh.web.util.JspUtils;
31
32 import org.apache.commons.logging.Log;
33 import org.apache.commons.logging.LogFactory;
34 import org.springframework.web.context.WebApplicationContext;
35 import org.springframework.web.context.support.WebApplicationContextUtils;
36
37 //import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager
38

39 /** This tag is used if the pull pattern is used.
40  *
41  * @todo Document this tag.
42  *
43  * @author Matthew L. Wilson, A.Zachar
44  * @version $Revision: 1.18 $ $Date: 2005/11/23 14:51:53 $
45  */

46 public class ValueListRetriever extends ConfigurableTag
47 {
48    private static final long serialVersionUID = 8975676126886164801L;
49
50    /**
51     * Logger for this class
52     */

53    private static final Log LOGGER = LogFactory.getLog(ValueListRetriever.class);
54
55    private String JavaDoc valueListName = null;
56
57    private String JavaDoc focusProperty = null;
58
59    private String JavaDoc focusValue = null;
60
61    /**
62     * @see javax.servlet.jsp.tagext.Tag#doStartTag()
63     */

64    public int doStartTag() throws JspException JavaDoc
65    {
66       getCellAttributes().getMap().clear();
67       return super.doStartTag();
68    }
69
70    /**
71     * @see javax.servlet.jsp.tagext.Tag#doEndTag()
72     */

73    public int doEndTag() throws JspException JavaDoc
74    {
75       ValueListSpaceTag rootTag = (ValueListSpaceTag) JspUtils.getParent(this, ValueListSpaceTag.class);
76
77       ValueListInfo info = ValueListRequestUtil.buildValueListInfo((HttpServletRequest JavaDoc) pageContext.getRequest(), rootTag.getTableInfo()
78             .getId());
79       info.getFilters().putAll(getCellAttributes().getMap());
80
81       WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(pageContext.getServletContext());
82
83       if (context == null)
84       {
85          final String JavaDoc message = "Cannot locate the spring WebApplicationContext. Is it configured in your web.xml?";
86          LOGGER.error(message);
87          throw new JspException JavaDoc(message);
88       }
89
90       ValueListHandler vlh = (ValueListHandler) context.getBean(ValueListHandler.DEFAULT_SERVICE_NAME, ValueListHandler.class);
91       if (vlh == null)
92       {
93          final String JavaDoc message = "Cannot locate the ValueListHanlder in the WebApplicationContext, under the name: \""
94                + ValueListHandler.DEFAULT_SERVICE_NAME + "\"";
95          LOGGER.error(message);
96          throw new JspException JavaDoc(message);
97       }
98
99       info.setFocusValue(focusValue);
100       info.setFocusProperty(focusProperty);
101
102       if (LOGGER.isDebugEnabled())
103       {
104          LOGGER.debug("Focus settings was setted up. Focus property '" + focusProperty + "', focus value '" + focusValue + "'");
105       }
106
107       ValueList list = vlh.getValueList(valueListName, info);
108       pageContext.getRequest().setAttribute(rootTag.getTableInfo().getName(), list);
109       rootTag.setValueList(list);
110
111       if (LOGGER.isDebugEnabled())
112       {
113          LOGGER.debug("ValueList was retrieved from adapter inside of the jsp.");
114       }
115
116       release();
117
118       return EVAL_PAGE;
119    }
120
121    /**
122     * @param valueListName
123     * The valueListName to set.
124     */

125    public void setName(String JavaDoc valueListName)
126    {
127       this.valueListName = valueListName;
128    }
129
130    /**
131     * @return Returns the valueListName.
132     */

133    public String JavaDoc getName()
134    {
135       return valueListName;
136    }
137
138    /**
139     * @param focusProperty
140     * The focusProperty set usually name of column used to be id in
141     * table.
142     */

143    public void setFocusProperty(String JavaDoc focusProperty)
144    {
145       this.focusProperty = focusProperty;
146    }
147
148    /**
149     * @param focusValue
150     * The focusValue set value on which will be occured in the
151     * generated table.
152     */

153    public void setFocusValue(String JavaDoc focusValue)
154    {
155       this.focusValue = focusValue;
156    }
157
158    private void reset()
159    {
160       this.focusProperty = null;
161       this.focusValue = null;
162       this.valueListName = null;
163    }
164
165    /**
166     * Called on a Tag handler to release state.
167     * The page compiler guarantees that JSP page implementation
168     * objects will invoke this method on all tag handlers,
169     * but there may be multiple invocations on doStartTag and doEndTag in between.
170     *
171     * @see javax.servlet.jsp.tagext.Tag#release()
172     */

173    public void release()
174    {
175       super.release();
176       reset();
177    }
178 }
Popular Tags