001: /*
002: * ====================================================================
003: * JAFFA - Java Application Framework For All
004: *
005: * Copyright (C) 2002 JAFFA Development Group
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation; either
010: * version 2.1 of the License, or (at your option) any later version.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this library; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: *
021: * Redistribution and use of this software and associated documentation ("Software"),
022: * with or without modification, are permitted provided that the following conditions are met:
023: * 1. Redistributions of source code must retain copyright statements and notices.
024: * Redistributions must also contain a copy of this document.
025: * 2. Redistributions in binary form must reproduce the above copyright notice,
026: * this list of conditions and the following disclaimer in the documentation
027: * and/or other materials provided with the distribution.
028: * 3. The name "JAFFA" must not be used to endorse or promote products derived from
029: * this Software without prior written permission. For written permission,
030: * please contact mail to: jaffagroup@yahoo.com.
031: * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA"
032: * appear in their names without prior written permission.
033: * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net).
034: *
035: * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
036: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
039: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
040: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
041: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
042: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
043: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
044: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
045: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
046: * SUCH DAMAGE.
047: * ====================================================================
048: */
049:
050: package org.jaffa.components.finder;
051:
052: import java.util.*;
053: import org.apache.log4j.Logger;
054: import org.jaffa.presentation.portlet.FormBase;
055: import org.jaffa.presentation.portlet.widgets.model.DropDownModel;
056: import org.jaffa.presentation.portlet.widgets.controller.DropDownController;
057: import org.jaffa.presentation.portlet.widgets.model.RadioButtonModel;
058: import org.jaffa.presentation.portlet.widgets.controller.RadioButtonController;
059: import javax.servlet.http.HttpServletRequest;
060:
061: /** This is the base class for all FinderComponent FormBeans.
062: * It has the following properties -
063: * 1- sortDropDown : The sort criteria to use for the inquiry
064: * 2- exportType : The export option to use for the inquiry (initialized to regular Web Pages)
065: * 3- maxRecords: The maximum number of records to retrieve. This will be initialized to the first value in the option list.
066: * @author GautamJ
067: * @deprecated This class is required by the object_finder_1_0 pattern. The object_finder_2_0 pattern has made this class redundant.
068: */
069: public abstract class FinderCriteriaForm extends FormBase {
070:
071: private static final Logger log = Logger
072: .getLogger(FinderCriteriaForm.class);
073: private DropDownModel w_sortDropDown;
074: private RadioButtonModel w_exportType;
075: private DropDownModel w_maxRecords;
076:
077: /** Getter for property sortDropDown.
078: * @return Value of property sortDropDown.
079: */
080: public String getSortDropDown() {
081: return ((FinderComponent) getComponent()).getSortDropDown();
082: }
083:
084: /** Setter for property sortDropDown.
085: * @param sortDropDown New value of property sortDropDown.
086: */
087: public void setSortDropDown(String sortDropDown) {
088: ((FinderComponent) getComponent())
089: .setSortDropDown(sortDropDown);
090: }
091:
092: /** Getter for DropDown property sortDropDown.
093: * @return Value of DropDown property sortDropDown.
094: */
095: public DropDownModel getSortDropDownWM() {
096: if (w_sortDropDown == null) {
097: w_sortDropDown = (DropDownModel) getWidgetCache().getModel(
098: "sortDropDown");
099: if (w_sortDropDown == null) {
100: String sortDropDown = getSortDropDown();
101: if (sortDropDown != null)
102: w_sortDropDown = new DropDownModel(sortDropDown);
103: else
104: w_sortDropDown = new DropDownModel("");
105: getWidgetCache().addModel("sortDropDown",
106: w_sortDropDown);
107: }
108: }
109: return w_sortDropDown;
110: }
111:
112: /** Setter for DropDown property sortDropDown. This is invoked by the servlet, when a post is done on the Criteria screen.
113: * @param value New value of DropDown property sortDropDown.
114: */
115: public void setSortDropDownWV(String value) {
116: DropDownController.updateModel(value, getSortDropDownWM());
117: }
118:
119: /** Getter for property exportType.
120: * @return Value of property exportType.
121: */
122: public String getExportType() {
123: return ((FinderComponent) getComponent()).getExportType();
124: }
125:
126: /** Setter for property exportType.
127: * @param exportType New value of property exportType.
128: */
129: public void setExportType(String exportType) {
130: ((FinderComponent) getComponent()).setExportType(exportType);
131: }
132:
133: /** Getter for property exportType.
134: * @return Value of property exportType.
135: */
136: public RadioButtonModel getExportTypeWM() {
137: if (w_exportType == null) {
138: w_exportType = (RadioButtonModel) getWidgetCache()
139: .getModel("exportType");
140: if (w_exportType == null) {
141: String exportType = getExportType();
142: if (exportType != null)
143: w_exportType = new RadioButtonModel(exportType);
144: else
145: w_exportType = new RadioButtonModel(
146: FinderComponent.EXPORT_TYPE_WEB_PAGE);
147: getWidgetCache().addModel("exportType", w_exportType);
148: }
149: }
150: return w_exportType;
151: }
152:
153: /** Setter for property exportType. This is invoked by the servlet, when a post is done on the Criteria screen.
154: * @param value New value of property exportType.
155: */
156: public void setExportTypeWV(String value) {
157: RadioButtonController.updateModel(value, getExportTypeWM());
158: }
159:
160: /** Getter for property maxRecords.
161: * @return Value of property maxRecords.
162: */
163: public Integer getMaxRecords() {
164: return ((FinderComponent) getComponent()).getMaxRecords();
165: }
166:
167: /** Setter for property maxRecords.
168: * @param maxRecords New value of property maxRecords.
169: */
170: public void setMaxRecords(Integer maxRecords) {
171: ((FinderComponent) getComponent()).setMaxRecords(maxRecords);
172: }
173:
174: /** Getter for DropDown property maxRecords.
175: * @return Value of DropDown property maxRecords.
176: */
177: public DropDownModel getMaxRecordsWM() {
178: if (w_maxRecords == null) {
179: w_maxRecords = (DropDownModel) getWidgetCache().getModel(
180: "maxRecords");
181: if (w_maxRecords == null) {
182: // create a list of valid values (Long objects) for the maxRecords dropdown
183: List maxRecordsList = new ArrayList();
184: Map maxRecordsDropDownOptions = CriteriaDropDownOptions
185: .getMaxRecordsDropDownOptions();
186: for (Iterator i = maxRecordsDropDownOptions.entrySet()
187: .iterator(); i.hasNext();) {
188: Map.Entry me = (Map.Entry) i.next();
189: maxRecordsList.add(me.getKey());
190: }
191:
192: // Now determine an initial value for the dropdown
193: Integer maxRecords = getMaxRecords();
194: Long initialValue = maxRecords != null ? new Long(
195: maxRecords.intValue()) : null;
196: if (initialValue == null
197: || !maxRecordsList.contains(initialValue))
198: initialValue = CriteriaDropDownOptions
199: .getDefaultMaxRecordsDropDownOption();
200:
201: // Now build the DropDownModel, adding the options
202: w_maxRecords = new DropDownModel(initialValue
203: .toString());
204: for (Iterator i = maxRecordsDropDownOptions.entrySet()
205: .iterator(); i.hasNext();) {
206: Map.Entry me = (Map.Entry) i.next();
207: w_maxRecords.addOption((String) me.getValue(), me
208: .getKey().toString());
209: }
210:
211: getWidgetCache().addModel("maxRecords", w_maxRecords);
212: }
213: }
214: return w_maxRecords;
215: }
216:
217: /** Setter for DropDown property maxRecords. This is invoked by the servlet, when a post is done on the Criteria screen.
218: * @param value New value of DropDown property maxRecords.
219: */
220: public void setMaxRecordsWV(String value) {
221: DropDownController.updateModel(value, getMaxRecordsWM());
222: }
223:
224: /** This method should be invoked to ensure a valid state of the FormBean. It will validate the data in the models and set the corresponding properties.
225: * Errors will be raised in the FormBean, if any validation fails.
226: * @param request The request stream
227: * @return A true indicates validations went through successfully. */
228: public boolean doValidate(HttpServletRequest request) {
229: String value = null;
230:
231: value = getSortDropDownWM().getValue();
232: if (value != null && value.trim().length() == 0)
233: value = null;
234: setSortDropDown(value);
235:
236: value = getExportTypeWM().getValue();
237: if (value != null && value.trim().length() == 0)
238: value = null;
239: setExportType(value);
240:
241: value = getMaxRecordsWM().getValue();
242: if (value != null && value.trim().length() == 0)
243: setMaxRecords(null);
244: else
245: setMaxRecords(Integer.valueOf(value));
246:
247: return true;
248: }
249:
250: }
|