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 org.apache.log4j.Logger;
053: import org.apache.struts.action.ActionErrors;
054: import org.jaffa.presentation.portlet.ActionBase;
055: import org.jaffa.presentation.portlet.FormKey;
056: import org.jaffa.exceptions.FrameworkException;
057: import org.jaffa.exceptions.ApplicationExceptions;
058: import org.jaffa.exceptions.ApplicationException;
059: import org.jaffa.components.finder.*;
060:
061: /** This is the base class for all FinderComponent Actions.
062: * @author GautamJ
063: */
064: public class FinderAction extends ActionBase {
065:
066: private static final Logger log = Logger
067: .getLogger(FinderAction.class);
068:
069: /** Quits the component and returns the FormKey for the calling screen.
070: * @return The FormKey for the caling screen. A null will be returned, if no calling screen was specified.
071: */
072: public FormKey do_Close_Clicked() {
073: return ((FinderForm) form).getComponent()
074: .quitAndReturnToCallingScreen();
075: }
076:
077: /** Invokes the doValidate() method and then the displayResults() method on the component.
078: * @return The FormKey for the Results screen.
079: */
080: public FormKey do_Search_Clicked() {
081: FormKey fk = null;
082: FinderForm myForm = (FinderForm) form;
083: FinderComponent2 myComp = (FinderComponent2) myForm
084: .getComponent();
085:
086: if (myForm.doValidate(request)) {
087: try {
088: fk = myComp.displayResults();
089: if (FinderComponent2.EXPORT_TYPE_XML.equals(myComp
090: .getExportType())) {
091: Object dto = myComp.getFinderOutDto();
092: if (dto == null)
093: dto = "";
094: else
095: dto = dto.toString();
096: request.setAttribute(
097: FinderComponent2.ATTRIBUTE_EXPORT_TYPE_XML,
098: dto);
099: } else
100: request
101: .removeAttribute(FinderComponent2.ATTRIBUTE_EXPORT_TYPE_XML);
102: } catch (ApplicationExceptions e) {
103: if (log.isDebugEnabled())
104: log.debug("Search Failed");
105: myForm
106: .raiseError(request, ActionErrors.GLOBAL_ERROR,
107: e);
108: } catch (FrameworkException e) {
109: log.error(null, e);
110: myForm.raiseError(request, ActionErrors.GLOBAL_ERROR,
111: "error.framework.general");
112: }
113: }
114:
115: try {
116: if (fk == null)
117: fk = myComp.displayCriteria();
118: } catch (ApplicationExceptions e) {
119: if (log.isDebugEnabled())
120: log.debug("Search Failed");
121: myForm.raiseError(request, ActionErrors.GLOBAL_ERROR, e);
122: } catch (FrameworkException e) {
123: log.error(null, e);
124: myForm.raiseError(request, ActionErrors.GLOBAL_ERROR,
125: "error.framework.general");
126: }
127:
128: if (fk == null)
129: fk = myComp.getCriteriaFormKey();
130:
131: return fk;
132: }
133:
134: /** Start a new search. This invokes the displayCriteria() method on the component.
135: * @return The FormKey for the Criteria screen.
136: */
137: public FormKey do_ModifySearch_Clicked() {
138: FormKey fk = null;
139: FinderForm myForm = (FinderForm) form;
140: FinderComponent2 myComp = (FinderComponent2) myForm
141: .getComponent();
142:
143: try {
144: fk = myComp.displayCriteria();
145: } catch (ApplicationExceptions e) {
146: if (log.isDebugEnabled())
147: log.debug("ModifySearch Failed");
148: myForm.raiseError(request, ActionErrors.GLOBAL_ERROR, e);
149: } catch (FrameworkException e) {
150: log.error(null, e);
151: myForm.raiseError(request, ActionErrors.GLOBAL_ERROR,
152: "error.framework.general");
153: }
154:
155: // Direct User back to current form
156: if (fk == null)
157: fk = myComp.getResultsFormKey();
158: return fk;
159: }
160:
161: /** Re-executes the search, using the same criteria as used before. It invokes the displayResults() method on the component.
162: * @return The FormKey for the Results screen.
163: */
164: public FormKey do_Refresh_Clicked() {
165: FormKey fk = null;
166: FinderForm myForm = (FinderForm) form;
167: FinderComponent2 myComp = (FinderComponent2) myForm
168: .getComponent();
169:
170: try {
171: fk = myComp.displayResults();
172: } catch (ApplicationExceptions e) {
173: if (log.isDebugEnabled())
174: log.debug("Refresh Failed");
175: myForm.raiseError(request, ActionErrors.GLOBAL_ERROR, e);
176: } catch (FrameworkException e) {
177: log.error(null, e);
178: myForm.raiseError(request, ActionErrors.GLOBAL_ERROR,
179: "error.framework.general");
180: }
181:
182: // Direct User back to current form
183: if (fk == null)
184: fk = myComp.getResultsFormKey();
185: return fk;
186: }
187:
188: /** This will increment the value of the property MaxRecords. It then re-executes the search, using the same criteria as used before.
189: * @return The FormKey for the Results screen.
190: */
191: public FormKey do_MoreRecords_Clicked() {
192: FormKey fk = null;
193: FinderForm myForm = (FinderForm) form;
194: FinderComponent2 myComp = (FinderComponent2) myForm
195: .getComponent();
196: myComp.incrementMaxRecords();
197:
198: try {
199: fk = myComp.displayResults();
200: } catch (ApplicationExceptions e) {
201: if (log.isDebugEnabled())
202: log.debug("Search for More Records Failed");
203: myForm.raiseError(request, ActionErrors.GLOBAL_ERROR, e);
204: } catch (FrameworkException e) {
205: log.error(null, e);
206: myForm.raiseError(request, ActionErrors.GLOBAL_ERROR,
207: "error.framework.general");
208: }
209:
210: // Direct User back to current form
211: if (fk == null)
212: fk = myComp.getResultsFormKey();
213: return fk;
214: }
215:
216: /** Determines the currentFormKey
217: * This event is invoked when a user changes the settings of the UserGrid in the Results screen.
218: * @return The FormKey for the Results screen.
219: */
220: public FormKey do_refresh() {
221: FinderForm myForm = (FinderForm) form;
222: FinderComponent2 myComp = (FinderComponent2) myForm
223: .getComponent();
224: return myComp.getResultsFormKey();
225: }
226:
227: }
|