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.module.bc.document.web.struts; 017 018 import java.util.Arrays; 019 import java.util.Collections; 020 import java.util.Iterator; 021 import java.util.List; 022 023 import javax.servlet.http.HttpServletRequest; 024 025 import org.apache.struts.action.ActionMapping; 026 import org.kuali.kfs.module.bc.businessobject.BudgetConstructionOrganizationReports; 027 import org.kuali.kfs.module.bc.businessobject.BudgetConstructionPullup; 028 import org.kuali.kfs.sys.context.SpringContext; 029 import org.kuali.rice.kns.service.PersistenceService; 030 import org.kuali.rice.kns.util.TypedArrayList; 031 import org.kuali.rice.core.util.KeyLabelPair; 032 033 /** 034 * ActionForm that supports the Organization Selection Tree page 035 */ 036 public class OrganizationSelectionTreeForm extends BudgetExpansionForm { 037 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(OrganizationSelectionTreeForm.class); 038 039 private BudgetConstructionOrganizationReports pointOfViewOrg; 040 private List<BudgetConstructionPullup> selectionSubTreeOrgs; 041 private List<BudgetConstructionPullup> previousBranchOrgs; 042 private boolean hideDetails = false; 043 private String operatingModeTitle; 044 private String operatingModePullFlagLabel; 045 046 private String currentPointOfViewKeyCode; 047 private String previousPointOfViewKeyCode; 048 private List<KeyLabelPair> pullFlagKeyLabels; 049 050 // passed parms 051 private String operatingMode; 052 053 private boolean accountSummaryConsolidation; 054 private boolean accountObjectDetailConsolidation; 055 private boolean monthObjectSummaryConsolidation; 056 057 private String reportMode; 058 059 // used to flag reset() not to reset check box values when returning from child expansion screen 060 private boolean noResetOnReturn = false; 061 062 /** 063 * Constructs a OrganizationSelectionTreeForm.java. 064 */ 065 public OrganizationSelectionTreeForm() { 066 super(); 067 this.setPointOfViewOrg(new BudgetConstructionOrganizationReports()); 068 this.setSelectionSubTreeOrgs(new TypedArrayList(BudgetConstructionPullup.class)); 069 this.setPreviousBranchOrgs(new TypedArrayList(BudgetConstructionPullup.class)); 070 this.setPullFlagKeyLabels(new TypedArrayList(KeyLabelPair.class)); 071 072 } 073 074 /** 075 * @see org.kuali.rice.kns.web.struts.form.KualiForm#populate(javax.servlet.http.HttpServletRequest) 076 */ 077 @Override 078 public void populate(HttpServletRequest request) { 079 080 super.populate(request); 081 populatePreviousBranchOrgs(); 082 populateSelectionSubTreeOrgs(); 083 084 } 085 086 public void populateSelectionSubTreeOrgs() { 087 088 Iterator<BudgetConstructionPullup> selectionOrgs = getSelectionSubTreeOrgs().iterator(); 089 while (selectionOrgs.hasNext()) { 090 BudgetConstructionPullup selectionOrg = (BudgetConstructionPullup) selectionOrgs.next(); 091 092 final List<String> REFRESH_FIELDS = Collections.unmodifiableList(Arrays.asList(new String[] { "organization" })); 093 SpringContext.getBean(PersistenceService.class).retrieveReferenceObjects(selectionOrg, REFRESH_FIELDS); 094 } 095 096 } 097 098 public void populatePreviousBranchOrgs() { 099 100 Iterator<BudgetConstructionPullup> previousBranchOrgs = getPreviousBranchOrgs().iterator(); 101 while (previousBranchOrgs.hasNext()) { 102 BudgetConstructionPullup previousBranchOrg = (BudgetConstructionPullup) previousBranchOrgs.next(); 103 final List<String> REFRESH_FIELDS = Collections.unmodifiableList(Arrays.asList(new String[] { "organization" })); 104 SpringContext.getBean(PersistenceService.class).retrieveReferenceObjects(previousBranchOrg, REFRESH_FIELDS); 105 } 106 107 } 108 109 /** 110 * Gets the pointOfViewOrg attribute. 111 * 112 * @return Returns the pointOfViewOrg. 113 */ 114 public BudgetConstructionOrganizationReports getPointOfViewOrg() { 115 return pointOfViewOrg; 116 } 117 118 /** 119 * Sets the pointOfViewOrg attribute value. 120 * 121 * @param pointOfViewOrg The pointOfViewOrg to set. 122 */ 123 public void setPointOfViewOrg(BudgetConstructionOrganizationReports pointOfViewOrg) { 124 this.pointOfViewOrg = pointOfViewOrg; 125 } 126 127 /** 128 * Gets the hideDetails attribute. 129 * 130 * @return Returns the hideDetails. 131 */ 132 public boolean isHideDetails() { 133 return hideDetails; 134 } 135 136 /** 137 * Sets the hideDetails attribute value. 138 * 139 * @param hideDetails The hideDetails to set. 140 */ 141 public void setHideDetails(boolean hideDetails) { 142 this.hideDetails = hideDetails; 143 } 144 145 /** 146 * Gets the operatingMode attribute. 147 * 148 * @return Returns the operatingMode. 149 */ 150 public String getOperatingMode() { 151 return operatingMode; 152 } 153 154 /** 155 * Sets the operatingMode attribute value. 156 * 157 * @param operatingMode The operatingMode to set. 158 */ 159 public void setOperatingMode(String operatingMode) { 160 this.operatingMode = operatingMode; 161 } 162 163 /** 164 * Gets the operatingModeTitle attribute. 165 * 166 * @return Returns the operatingModeTitle. 167 */ 168 public String getOperatingModeTitle() { 169 return operatingModeTitle; 170 } 171 172 /** 173 * Sets the operatingModeTitle attribute value. 174 * 175 * @param operatingModeTitle The operatingModeTitle to set. 176 */ 177 public void setOperatingModeTitle(String operatingModeTitle) { 178 this.operatingModeTitle = operatingModeTitle; 179 } 180 181 /** 182 * Gets the currentPointOfViewKeyCode attribute. 183 * 184 * @return Returns the currentPointOfViewKeyCode. 185 */ 186 public String getCurrentPointOfViewKeyCode() { 187 return currentPointOfViewKeyCode; 188 } 189 190 /** 191 * Sets the currentPointOfViewKeyCode attribute value. 192 * 193 * @param currentPointOfViewKeyCode The currentPointOfViewKeyCode to set. 194 */ 195 public void setCurrentPointOfViewKeyCode(String currentPointOfViewKeyCode) { 196 this.currentPointOfViewKeyCode = currentPointOfViewKeyCode; 197 } 198 199 /** 200 * Gets the previousPointOfViewKeyCode attribute. 201 * 202 * @return Returns the previousPointOfViewKeyCode. 203 */ 204 public String getPreviousPointOfViewKeyCode() { 205 return previousPointOfViewKeyCode; 206 } 207 208 /** 209 * Sets the previousPointOfViewKeyCode attribute value. 210 * 211 * @param previousPointOfViewKeyCode The previousPointOfViewKeyCode to set. 212 */ 213 public void setPreviousPointOfViewKeyCode(String previousPointOfViewKeyCode) { 214 this.previousPointOfViewKeyCode = previousPointOfViewKeyCode; 215 } 216 217 /** 218 * Gets the selectionSubTree attribute. 219 * 220 * @return Returns the selectionSubTree. 221 */ 222 public List<BudgetConstructionPullup> getSelectionSubTreeOrgs() { 223 return selectionSubTreeOrgs; 224 } 225 226 /** 227 * Sets the selectionSubTree attribute value. 228 * 229 * @param selectionSubTree The selectionSubTree to set. 230 */ 231 public void setSelectionSubTreeOrgs(List<BudgetConstructionPullup> selectionSubTree) { 232 this.selectionSubTreeOrgs = selectionSubTree; 233 } 234 235 /** 236 * Gets the previousBranchOrgs attribute. 237 * 238 * @return Returns the previousBranchOrgs. 239 */ 240 public List<BudgetConstructionPullup> getPreviousBranchOrgs() { 241 return previousBranchOrgs; 242 } 243 244 /** 245 * Sets the previousBranchOrgs attribute value. 246 * 247 * @param previousBranchOrgs The previousBranchOrgs to set. 248 */ 249 public void setPreviousBranchOrgs(List<BudgetConstructionPullup> previousBranchOrgs) { 250 this.previousBranchOrgs = previousBranchOrgs; 251 } 252 253 /** 254 * Gets the pullFlagKeyLabels attribute. 255 * 256 * @return Returns the pullFlagKeyLabels. 257 */ 258 public List<KeyLabelPair> getPullFlagKeyLabels() { 259 return pullFlagKeyLabels; 260 } 261 262 /** 263 * Sets the pullFlagKeyLabels attribute value. 264 * 265 * @param pullFlagKeyLabels The pullFlagKeyLabels to set. 266 */ 267 public void setPullFlagKeyLabels(List<KeyLabelPair> pullFlagKeyLabels) { 268 this.pullFlagKeyLabels = pullFlagKeyLabels; 269 } 270 271 /** 272 * Gets the operatingModePullFlagLabel attribute. 273 * 274 * @return Returns the operatingModePullFlagLabel. 275 */ 276 public String getOperatingModePullFlagLabel() { 277 return operatingModePullFlagLabel; 278 } 279 280 /** 281 * Sets the operatingModePullFlagLabel attribute value. 282 * 283 * @param operatingModePullFlagLabel The operatingModePullFlagLabel to set. 284 */ 285 public void setOperatingModePullFlagLabel(String operatingModePullFlagLabel) { 286 this.operatingModePullFlagLabel = operatingModePullFlagLabel; 287 } 288 289 public boolean isAccountSummaryConsolidation() { 290 return accountSummaryConsolidation; 291 } 292 293 public void setAccountSummaryConsolidation(boolean accountSummaryConsolidation) { 294 this.accountSummaryConsolidation = accountSummaryConsolidation; 295 } 296 297 public String getReportMode() { 298 return reportMode; 299 } 300 301 public void setReportMode(String reportMode) { 302 this.reportMode = reportMode; 303 } 304 305 public boolean isAccountObjectDetailConsolidation() { 306 return accountObjectDetailConsolidation; 307 } 308 309 public void setAccountObjectDetailConsolidation(boolean accountObjectDetailConsolidation) { 310 this.accountObjectDetailConsolidation = accountObjectDetailConsolidation; 311 } 312 313 public boolean isMonthObjectSummaryConsolidation() { 314 return monthObjectSummaryConsolidation; 315 } 316 317 public void setMonthObjectSummaryConsolidation(boolean monthObjectSummaryConsolidation) { 318 this.monthObjectSummaryConsolidation = monthObjectSummaryConsolidation; 319 } 320 321 /** 322 * @see org.kuali.rice.kns.web.struts.form.KualiForm#shouldMethodToCallParameterBeUsed(java.lang.String, java.lang.String, 323 * javax.servlet.http.HttpServletRequest) 324 */ 325 @Override 326 public boolean shouldMethodToCallParameterBeUsed(String methodToCallParameterName, String methodToCallParameterValue, HttpServletRequest request) { 327 328 if (methodToCallParameterValue.equalsIgnoreCase("performBuildPointOfView")) { 329 return true; 330 } 331 return super.shouldMethodToCallParameterBeUsed(methodToCallParameterName, methodToCallParameterValue, request); 332 } 333 334 /** 335 * @see org.kuali.rice.kns.web.struts.form.KualiForm#reset(org.apache.struts.action.ActionMapping, 336 * javax.servlet.http.HttpServletRequest) resets check box fields if not returning from a child expansion screen 337 */ 338 @Override 339 public void reset(ActionMapping mapping, HttpServletRequest request) { 340 341 if (this.isNoResetOnReturn()) { 342 this.setNoResetOnReturn(false); 343 } 344 else { 345 super.reset(mapping, request); 346 for (BudgetConstructionPullup selectionSubTreeOrg : selectionSubTreeOrgs) { 347 selectionSubTreeOrg.setPullFlag(0); 348 } 349 this.setAccountSummaryConsolidation(false); 350 this.setAccountObjectDetailConsolidation(false); 351 this.setMonthObjectSummaryConsolidation(false); 352 } 353 354 this.getMessages().clear(); 355 } 356 357 /** 358 * Gets the noResetOnReturn attribute. 359 * 360 * @return Returns the noResetOnReturn. 361 */ 362 public boolean isNoResetOnReturn() { 363 return noResetOnReturn; 364 } 365 366 /** 367 * Sets the noResetOnReturn attribute value. 368 * 369 * @param noResetOnReturn The noResetOnReturn to set. 370 */ 371 public void setNoResetOnReturn(boolean noResetOnReturn) { 372 this.noResetOnReturn = noResetOnReturn; 373 } 374 375 }