001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.gl.web.struts;
017
018 import javax.servlet.http.HttpServletRequest;
019
020 import org.kuali.kfs.gl.GeneralLedgerConstants;
021 import org.kuali.kfs.gl.businessobject.Entry;
022 import org.kuali.kfs.sys.businessobject.GeneralLedgerPendingEntry;
023 import org.kuali.kfs.sys.businessobject.lookup.LookupableSpringContext;
024 import org.kuali.rice.kns.lookup.Lookupable;
025 import org.kuali.rice.kns.web.struts.form.MultipleValueLookupForm;
026
027 /**
028 * Balance inquiries are pretty much just lookups already, but are not used in the traditional sense. In most cases, balance
029 * inquiries only show the end-user data, and allow the end-user to drill-down into inquiries. A traditional lookup allows the user
030 * to return data to a form. This class is for balance inquiries implemented in the sense of a traditional lookup for forms that
031 * pull data out of inquiries.<br/> <br/> One example of this is the
032 * <code>{@link org.kuali.kfs.module.ld.document.SalaryExpenseTransferDocument}</code> which creates source lines from a labor
033 * ledger balance inquiry screen.<br/> <br/> This is a <code>{@link KualiMultipleValueLookupAction}</code> which required some
034 * customization because requirements were not possible with displaytag. There are a number of properties/attributes that are used
035 * for pagination, formatting, etc...
036 *
037 * @see org.kuali.kfs.module.ld.document.SalaryExpenseTransferDocument
038 * @see org.kuali.kfs.module.ld.document.web.struts.SalaryExpenseTransferAction;
039 * @see org.kuali.kfs.module.ld.document.web.struts.SalaryExpenseTransferForm;
040 */
041 public class BalanceInquiryLookupForm extends MultipleValueLookupForm {
042 private static final long serialVersionUID = 1L;
043
044 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BalanceInquiryForm.class);
045
046 private Lookupable pendingEntryLookupable;
047 private LookupResultsSelectable selectable;
048 private boolean segmented;
049
050 public BalanceInquiryLookupForm() {
051 }
052
053 /**
054 * Picks out business object name from the request to get retrieve a lookupable and set properties.
055 *
056 * @param request <code>{@link javax.servlet.http.HttpServletRequest}</code> instance for Struts
057 */
058 @Override
059 public void populate(HttpServletRequest request) {
060 Lookupable localPendingEntryLookupable = null;
061
062 super.populate(request);
063
064 if (Entry.class.getName().equals(getBusinessObjectClassName())) {
065 localPendingEntryLookupable = LookupableSpringContext.getLookupable(GeneralLedgerConstants.LookupableBeanKeys.PENDING_ENTRY);
066 }
067
068 if (localPendingEntryLookupable != null) {
069 localPendingEntryLookupable.setBusinessObjectClass(GeneralLedgerPendingEntry.class);
070 localPendingEntryLookupable.setFieldConversions(getFieldConversions());
071 }
072 setPendingEntryLookupable(localPendingEntryLookupable);
073 }
074
075
076 /**
077 * @param pendingEntryLookupable
078 */
079 public void setPendingEntryLookupable(Lookupable pendingEntryLookupable) {
080 this.pendingEntryLookupable = pendingEntryLookupable;
081 }
082
083
084 /**
085 * @return Returns the pendingEntryLookupable.
086 */
087 public Lookupable getPendingEntryLookupable() {
088 return this.pendingEntryLookupable;
089 }
090
091 /**
092 * Determines if the balance inquiry lookup should be segmented or not
093 *
094 * @return boolean
095 */
096 public boolean isSegmented() {
097 return segmented;
098 }
099
100 /**
101 * Tells the balance inquiry lookup whether to be segmented or not
102 *
103 * @param seg
104 */
105 public void setSegmented(boolean seg) {
106 segmented = seg;
107 }
108 }