/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.sys.document.web.struts; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.businessobject.FinancialSystemDocumentHeader; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.core.api.config.property.ConfigurationService; import org.kuali.rice.kew.api.WorkflowDocument; import org.kuali.rice.kns.web.struts.form.KualiTransactionalDocumentFormBase; import org.kuali.rice.kns.web.ui.ExtraButton; import org.kuali.rice.kns.web.ui.HeaderField; /** * This class is a Financial System specific transactional document form base */ public class FinancialSystemTransactionalDocumentFormBase extends KualiTransactionalDocumentFormBase { /** * Constructs a FinancialSystemTransactionalDocumentFormBase.java. */ public FinancialSystemTransactionalDocumentFormBase() { super(); } /** * @see org.kuali.rice.kns.web.struts.form.KualiDocumentFormBase#populateHeaderFields(org.kuali.rice.kew.api.WorkflowDocument) * KRAD Conversion: Customizing the header fields - Uses data dictionary */ @Override public void populateHeaderFields(WorkflowDocument workflowDocument) { super.populateHeaderFields(workflowDocument); if (getDocument().getDocumentHeader() instanceof FinancialSystemDocumentHeader) { FinancialSystemDocumentHeader documentHeader = (FinancialSystemDocumentHeader)getDocument().getDocumentHeader(); if (StringUtils.isNotBlank(documentHeader.getFinancialDocumentInErrorNumber())) { extendDocInfoToThreeColumns(); int insertIndex = 2; getDocInfo().remove(insertIndex); getDocInfo().add(insertIndex, new HeaderField("DataDictionary.FinancialSystemDocumentHeader.attributes.financialDocumentInErrorNumber", documentHeader.getFinancialDocumentInErrorNumber(), buildHtmlLink(getDocumentHandlerUrl(documentHeader.getFinancialDocumentInErrorNumber()), documentHeader.getFinancialDocumentInErrorNumber()))); } if (StringUtils.isNotBlank(documentHeader.getCorrectedByDocumentId())) { extendDocInfoToThreeColumns(); int insertIndex = getNumColumns() + 2; getDocInfo().remove(insertIndex); getDocInfo().add(insertIndex, new HeaderField("DataDictionary.FinancialSystemDocumentHeader.attributes.correctedByDocumentId", documentHeader.getCorrectedByDocumentId(), buildHtmlLink(getDocumentHandlerUrl(documentHeader.getCorrectedByDocumentId()), documentHeader.getCorrectedByDocumentId()))); } } } /** * Extends the DocInfo on the form to 3 columns if it currently has less than 3 columns. * If it has exactly 3 or more columns, no action will be taken. */ protected void extendDocInfoToThreeColumns() { List<HeaderField> newDocInfo = new ArrayList<HeaderField>(); int currentColumns = getNumColumns(); int targetColumns = 3; if (getNumColumns() < targetColumns) { int column = 0; for (HeaderField headerField : getDocInfo()) { if (column + 1 > currentColumns) { newDocInfo.add(HeaderField.EMPTY_FIELD); column = (column + 1) % targetColumns; } newDocInfo.add(headerField); column = (column + 1) % targetColumns; } // fill out the final row with empty columns while (newDocInfo.size() % targetColumns != 0) { newDocInfo.add(HeaderField.EMPTY_FIELD); } setDocInfo(newDocInfo); setNumColumns(3); } } /** * @see org.kuali.rice.kns.web.struts.form.KualiForm#getExtraButtons() * * KRAD Conversion: Customizing the addition of extra buttons */ @Override public List<ExtraButton> getExtraButtons() { List<ExtraButton> buttons = super.getExtraButtons(); if (getDocumentActions().containsKey(KFSConstants.KFS_ACTION_CAN_ERROR_CORRECT)) { buttons.add(generateErrorCorrectionButton()); } return buttons; } private ExtraButton errorCorrectionButton; /** * Generates an ExtraButton which represents the error correction button * * @return an ExtraButton representing an ErrorCorrection button * * KRAD Conversion: Customizing the error correction button */ protected ExtraButton generateErrorCorrectionButton() { if ( errorCorrectionButton == null ) { ExtraButton button = new ExtraButton(); button.setExtraButtonAltText("Create error correction document from current document"); button.setExtraButtonProperty("methodToCall.correct"); button.setExtraButtonSource(SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString("kr.externalizable.images.url")+"buttonsmall_errcorr.gif"); errorCorrectionButton = button; } return errorCorrectionButton; } }