View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.kfs.gl.web.struts;
20  
21  import javax.servlet.http.HttpServletRequest;
22  
23  import org.kuali.kfs.gl.GeneralLedgerConstants;
24  import org.kuali.kfs.gl.businessobject.Entry;
25  import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry;
26  import org.kuali.kfs.sys.businessobject.lookup.LookupableSpringContext;
27  import org.kuali.rice.kns.lookup.Lookupable;
28  import org.kuali.rice.kns.web.struts.form.MultipleValueLookupForm;
29  
30  /**
31   * Balance inquiries are pretty much just lookups already, but are not used in the traditional sense. In most cases, balance
32   * inquiries only show the end-user data, and allow the end-user to drill-down into inquiries. A traditional lookup allows the user
33   * to return data to a form. This class is for balance inquiries implemented in the sense of a traditional lookup for forms that
34   * pull data out of inquiries.<br/> <br/> One example of this is the
35   * <code>{@link org.kuali.kfs.module.ld.document.SalaryExpenseTransferDocument}</code> which creates source lines from a labor
36   * ledger balance inquiry screen.<br/> <br/> This is a <code>{@link KualiMultipleValueLookupAction}</code> which required some
37   * customization because requirements were not possible with displaytag. There are a number of properties/attributes that are used
38   * for pagination, formatting, etc...
39   * 
40   * @see org.kuali.kfs.module.ld.document.SalaryExpenseTransferDocument
41   * @see org.kuali.kfs.module.ld.document.web.struts.SalaryExpenseTransferAction;
42   * @see org.kuali.kfs.module.ld.document.web.struts.SalaryExpenseTransferForm;
43   */
44  public class BalanceInquiryLookupForm extends MultipleValueLookupForm {
45      private static final long serialVersionUID = 1L;
46  
47      private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BalanceInquiryForm.class);
48  
49      private Lookupable pendingEntryLookupable;
50      private LookupResultsSelectable selectable;
51      private boolean segmented;
52  
53      public BalanceInquiryLookupForm() {
54      }
55  
56      /**
57       * Picks out business object name from the request to get retrieve a lookupable and set properties.
58       * 
59       * @param request <code>{@link javax.servlet.http.HttpServletRequest}</code> instance for Struts
60       */
61      @Override
62      public void populate(HttpServletRequest request) {
63          Lookupable localPendingEntryLookupable = null;
64  
65          super.populate(request);
66  
67          if (Entry.class.getName().equals(getBusinessObjectClassName())) {
68              localPendingEntryLookupable = LookupableSpringContext.getLookupable(GeneralLedgerConstants.LookupableBeanKeys.PENDING_ENTRY);
69          }
70  
71          if (localPendingEntryLookupable != null) {
72              localPendingEntryLookupable.setBusinessObjectClass(GeneralLedgerPendingEntry.class);
73              localPendingEntryLookupable.setFieldConversions(getFieldConversions());
74          }
75          setPendingEntryLookupable(localPendingEntryLookupable);
76      }
77  
78  
79      /**
80       * @param pendingEntryLookupable
81       */
82      public void setPendingEntryLookupable(Lookupable pendingEntryLookupable) {
83          this.pendingEntryLookupable = pendingEntryLookupable;
84      }
85  
86  
87      /**
88       * @return Returns the pendingEntryLookupable.
89       */
90      public Lookupable getPendingEntryLookupable() {
91          return this.pendingEntryLookupable;
92      }
93  
94      /**
95       * Determines if the balance inquiry lookup should be segmented or not
96       * 
97       * @return boolean
98       */
99      public boolean isSegmented() {
100         return segmented;
101     }
102 
103     /**
104      * Tells the balance inquiry lookup whether to be segmented or not
105      * 
106      * @param seg
107      */
108     public void setSegmented(boolean seg) {
109         segmented = seg;
110     }
111 }