1 /*
2 * Copyright 2006 The Kuali Foundation
3 *
4 * Licensed under the Educational Community License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.opensource.org/licenses/ecl2.php
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.kuali.ole.gl.businessobject.inquiry;
17
18 import java.util.ArrayList;
19 import java.util.HashMap;
20 import java.util.List;
21 import java.util.Map;
22 import java.util.Properties;
23
24 import org.kuali.ole.gl.Constant;
25 import org.kuali.ole.gl.GeneralLedgerConstants;
26 import org.kuali.ole.gl.businessobject.AccountBalanceByLevel;
27 import org.kuali.ole.sys.OLEConstants;
28 import org.kuali.ole.sys.OLEPropertyConstants;
29 import org.kuali.rice.kns.service.BusinessObjectDictionaryService;
30 import org.kuali.rice.krad.service.LookupService;
31
32 /**
33 * This class is used to generate the URL for the user-defined attributes for the account balace by consolidation screen. It is
34 * entended the KualiInquirableImpl class, so it covers both the default implementation and customized implemetnation.
35 */
36 public class AccountBalanceByConsolidationInquirableImpl extends AbstractGeneralLedgerInquirableImpl {
37 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(AccountBalanceByConsolidationInquirableImpl.class);
38
39 private BusinessObjectDictionaryService dataDictionary;
40 private LookupService lookupService;
41 private Class businessObjectClass;
42
43 /**
44 * Builds a list of attributes for finding the values for this inquiry.
45 *
46 * @return a List of attribute keys to inquire on
47 * @see org.kuali.ole.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#buildUserDefinedAttributeKeyList()
48 */
49 protected List buildUserDefinedAttributeKeyList() {
50 List keys = new ArrayList();
51
52 keys.add(OLEPropertyConstants.UNIVERSITY_FISCAL_YEAR);
53 keys.add(OLEPropertyConstants.ACCOUNT_NUMBER);
54 keys.add(OLEPropertyConstants.CHART_OF_ACCOUNTS_CODE);
55 keys.add(OLEPropertyConstants.SUB_ACCOUNT_NUMBER);
56 keys.add("financialObject.financialObjectLevel.financialConsolidationObject.finConsolidationObjectCode");
57 keys.add(Constant.COST_SHARE_OPTION);
58 keys.add(Constant.CONSOLIDATION_OPTION);
59 keys.add(Constant.PENDING_ENTRY_OPTION);
60
61 return keys;
62 }
63
64 /**
65 * Generates an attribute map of fields created simply for this inquiry
66 *
67 * @return a Map with a link button attribute in it
68 * @see org.kuali.ole.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getUserDefinedAttributeMap()
69 */
70 protected Map getUserDefinedAttributeMap() {
71 Map userDefinedAttributeMap = new HashMap();
72 // userDefinedAttributeMap.put("financialObject.financialObjectLevel.financialConsolidationObject.financialConsolidationObjectCode",
73 // "");
74 userDefinedAttributeMap.put(GeneralLedgerConstants.DummyBusinessObject.LINK_BUTTON_OPTION, "");
75 return userDefinedAttributeMap;
76 }
77
78 /**
79 * Converts attribute names for the inquiry screen
80 *
81 * @return the converted name of the attribute
82 * @see org.kuali.ole.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getAttributeName(java.lang.String)
83 */
84 protected String getAttributeName(String attributeName) {
85 // if (attributeName.equals("dummyBusinessObject.linkButtonOption")) {
86 // attributeName = "financialObject.financialObjectLevel";
87 // }
88 return attributeName;
89 }
90
91 /**
92 * Overrides the key value with a blank string if it's an exclusive value
93 *
94 * @param keyName the keyName of the key to check
95 * @param keyValue the value of the key to check
96 * @return a new value
97 * @see org.kuali.ole.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getKeyValue(java.lang.String, java.lang.Object)
98 */
99 protected Object getKeyValue(String keyName, Object keyValue) {
100 if (isExclusiveField(keyName, keyValue)) {
101 keyValue = "";
102 }
103 return keyValue;
104 }
105
106 /**
107 * Given a key name, returns the key name; this implementation just passes back what it gets
108 *
109 * @return the key name passed in
110 * @see org.kuali.ole.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getKeyName(java.lang.String)
111 */
112 protected String getKeyName(String keyName) {
113 return keyName;
114 }
115
116 /**
117 * The name of this inquiry
118 *
119 * @return a String with this inquiry's name
120 * @see org.kuali.ole.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getLookupableImplAttributeName()
121 */
122 protected String getLookupableImplAttributeName() {
123 return Constant.GL_LOOKUPABLE_ACCOUNT_BALANCE_BY_LEVEL;
124 }
125
126 /**
127 * The base url that inquires of this type need to be sent to
128 *
129 * @return the base url
130 * @see org.kuali.ole.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getBaseUrl()
131 */
132 protected String getBaseUrl() {
133 return OLEConstants.GL_MODIFIED_INQUIRY_ACTION;
134 }
135
136 /**
137 * The business object class this inquiry should be returning for a given attribute - in this case, AccountBalanceByLevel for the LINK_BUTTON_OPTION
138 *
139 * @param attributeName the attribute to return a class for
140 * @return a class for the attribute
141 * @see org.kuali.ole.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#getInquiryBusinessObjectClass(String)
142 */
143 protected Class getInquiryBusinessObjectClass(String attributeName) {
144 Class c = null;
145 if (GeneralLedgerConstants.DummyBusinessObject.LINK_BUTTON_OPTION.equals(attributeName)) {
146 c = AccountBalanceByLevel.class;
147 }
148 return c;
149 }
150
151 /**
152 * For a given attribute, lets this inquiry add more parameters
153 * @param parameter the set of parameters for the inquiry
154 * @param attributeName the attributeName parameters are being set for
155 * @see org.kuali.ole.gl.businessobject.inquiry.AbstractGeneralLedgerInquirableImpl#addMoreParameters(java.util.Properties, java.lang.String)
156 */
157 protected void addMoreParameters(Properties parameter, String attributeName) {
158 parameter.put(OLEConstants.LOOKUPABLE_IMPL_ATTRIBUTE_NAME, getLookupableImplAttributeName());
159 }
160 }