From: <ga...@us...> - 2003-10-31 23:24:21
|
Update of /cvsroot/jaffa/JaffaCore/source/java/org/jaffa/components/lookup In directory sc8-pr-cvs1:/tmp/cvs-serv25636/source/java/org/jaffa/components/lookup Added Files: LookupAction.java LookupComponent2.java LookupForm.java Log Message: New base class used by the object_lookup_2_0 pattern --- NEW FILE: LookupAction.java --- /* * ==================================================================== * JAFFA - Java Application Framework For All * * Copyright (C) 2002 JAFFA Development Group * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Redistribution and use of this software and associated documentation ("Software"), * with or without modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain copyright statements and notices. * Redistributions must also contain a copy of this document. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. The name "JAFFA" must not be used to endorse or promote products derived from * this Software without prior written permission. For written permission, * please contact mail to: jaf...@ya.... * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA" * appear in their names without prior written permission. * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net). * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== */ package org.jaffa.components.lookup; import org.apache.log4j.Logger; import org.jaffa.components.finder.FinderAction; import org.jaffa.presentation.portlet.FormKey; import org.jaffa.presentation.portlet.widgets.model.GridModel; import org.jaffa.presentation.portlet.widgets.model.GridModelRow; /** This is the base class for all LookupComponent Actions. It extends the FinderAction. * @author GautamJ */ public class LookupAction extends FinderAction { private static final Logger log = Logger.getLogger(LookupAction.class); /** Quits the component and closes the browser window. * This method overrides the 'Close' handler of the base class. * @return The FormKey object for the generic lookup jsp. */ public FormKey do_Close_Clicked() { LookupForm myForm = (LookupForm) form; LookupComponent2 myComp = (LookupComponent2) myForm.getComponent(); return myComp.quitLookup(request); } /** Invokes the do_Rows_Select_Clicked() method. * @param rowNum The selected row on the Results screen. * @return The FormKey for the generic lookup jsp. */ public FormKey do_Rows_Clicked(String rowNum) { return do_Rows_Select_Clicked(rowNum); } /** This will add the 'lookup' attribute on the request stream, with a Map containing the fieldnames (from the targetFields property) and values (from the selectedRow). * It will then invoke the quit() method on the component. * Finally it will return a FormKey object for the generic lookup jsp. * @param rowNum The selected row on the Results screen. * @return The FormKey for the generic lookup jsp. */ public FormKey do_Rows_Select_Clicked(String rowNum) { LookupForm myForm = (LookupForm) form; LookupComponent2 myComp = (LookupComponent2) myForm.getComponent(); GridModel model = myForm.getRowsWM(); GridModelRow selectedRow = model.getRow(Integer.parseInt(rowNum)); return myComp.performLookup(request, selectedRow); } } --- NEW FILE: LookupComponent2.java --- /* * ==================================================================== * JAFFA - Java Application Framework For All * * Copyright (C) 2002 JAFFA Development Group * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Redistribution and use of this software and associated documentation ("Software"), * with or without modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain copyright statements and notices. * Redistributions must also contain a copy of this document. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. The name "JAFFA" must not be used to endorse or promote products derived from * this Software without prior written permission. For written permission, * please contact mail to: jaf...@ya.... * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA" * appear in their names without prior written permission. * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net). * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== */ package org.jaffa.components.lookup; import java.util.*; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.jaffa.datatypes.Formatter; import org.jaffa.components.finder.FinderComponent2; import org.jaffa.presentation.portlet.FormKey; import org.jaffa.presentation.portlet.widgets.model.IModelMap; /** This is the base class for all Lookup components. * It inherits the properties from FinderComponent. * Additionally it has the following properties - * 1- targetFields : This will have the target-fields to be set based on the selected values from the Lookup. * It has a convenience method, which should be called by the component's Action class to forward to the generic lookup jsp. * @author GautamJ */ public abstract class LookupComponent2 extends FinderComponent2 { private static final Logger log = Logger.getLogger(LookupComponent2.class); /** A constant used to pass the selected values to the Http Request stream.*/ public static final String LOOKUP_ATTRIBUTE = "org.jaffa.components.lookup.LookupComponent.Lookup"; private static final String LOOKUP_JSP_NAME = "jaffa_lookup"; /** Holds value of property targetFields. */ private String m_targetFields; // ************************************************************** // Component Properties // ************************************************************** /** Getter for property targetFields. * @return Value of property targetFields. */ public String getTargetFields() { return m_targetFields; } /** Setter for property targetFields. * @param targetFields New value of property targetFields. */ public void setTargetFields(String targetFields) { m_targetFields = targetFields; } // ************************************************************** // Additional methods // ************************************************************** /** This returns a null, since the Lookup components are not expected to serve up Excel content. * @return null. */ protected String getExcelFormName() { return null; } /** This returns a null, since the Lookup components are not expected to serve up XML content. * @return null. */ protected String getXmlFormName() { return null; } /** This will remove the 'lookup' attribute from the request stream. * It will then invoke the quit() method on itself. * Finally it will return a FormKey object for the generic lookup jsp, which will close the browser. * @param request The HTTP request we are processing * @return a FormKey object for the generic lookup jsp. */ public FormKey quitLookup(HttpServletRequest request) { request.removeAttribute(LOOKUP_ATTRIBUTE); // Quit this component super.quit(); // forward to the jsp return new FormKey(LOOKUP_JSP_NAME, null); } /** This will add the 'lookup' attribute on the request stream, with a Map containing the fieldnames (from the targetFields property) and values (from the input selectedRow). * It will then invoke the quit() method on itself. * Finally it will return a FormKey object for the generic lookup jsp. * @param request The HTTP request we are processing * @param selectedRow The row that gets selected on the Results screen. * @return a FormKey object for the generic lookup jsp. */ public FormKey performLookup(HttpServletRequest request, IModelMap selectedRow) { return perform(request, selectedRow); } /** This will add the 'lookup' attribute on the request stream, with a Map containing the fieldnames (from the targetFields property) and values (from the input selectedRow). * It will then invoke the quit() method on itself. * Finally it will return a FormKey object for the generic lookup jsp. * @param request The HTTP request we are processing * @param selectedRow The row that gets selected on the Results screen. * @return a FormKey object for the generic lookup jsp. */ public FormKey performLookup(HttpServletRequest request, Map selectedRow) { return perform(request, selectedRow); } /** This will add the 'lookup' attribute on the request stream, with a Map containing the fieldnames (from the targetFields property) and values (from the input selectedRow). * It will then invoke the quit() method on itself. * Finally it will return a FormKey object for the generic lookup jsp. * @param request The HTTP request we are processing * @param selectedRow The row that gets selected on the Results screen. * @return a FormKey object for the generic lookup jsp. */ private FormKey perform(HttpServletRequest request, Object selectedRow) { Map lookupMap = new HashMap(); if (selectedRow != null && getTargetFields() != null && getTargetFields().length() > 0) { StringTokenizer tokenizer = new StringTokenizer(getTargetFields(), ";"); while (tokenizer.hasMoreTokens()) { String key = tokenizer.nextToken(); if (tokenizer.hasMoreTokens()) { String valueField = tokenizer.nextToken(); Object value = null; if (selectedRow instanceof Map) value = ((Map) selectedRow).get(valueField); else if (selectedRow instanceof IModelMap) value = ((IModelMap) selectedRow).get(valueField); value = Formatter.format(value); lookupMap.put(key, (value == null ? "" : value)); } } } if (lookupMap.size() > 0) request.setAttribute(LOOKUP_ATTRIBUTE, lookupMap); else request.removeAttribute(LOOKUP_ATTRIBUTE); // Quit this component super.quit(); // forward to the jsp return new FormKey(LOOKUP_JSP_NAME, null); } } --- NEW FILE: LookupForm.java --- /* * ==================================================================== * JAFFA - Java Application Framework For All * * Copyright (C) 2002 JAFFA Development Group * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Redistribution and use of this software and associated documentation ("Software"), * with or without modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain copyright statements and notices. * Redistributions must also contain a copy of this document. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. The name "JAFFA" must not be used to endorse or promote products derived from * this Software without prior written permission. For written permission, * please contact mail to: jaf...@ya.... * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA" * appear in their names without prior written permission. * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net). * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== */ package org.jaffa.components.lookup; import org.apache.log4j.Logger; import org.jaffa.components.finder.FinderForm; /** This is the base class for all LookupComponent FormBeans. It extends the FinderForm. * Currently it adds nothing to the base class. * @author GautamJ */ public abstract class LookupForm extends FinderForm { private static final Logger log = Logger.getLogger(LookupForm.class); } |