/*
* 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.datadictionary;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.kuali.kfs.sys.document.web.renderers.DebitCreditTotalRenderer;
import org.kuali.kfs.sys.document.web.renderers.Renderer;
import org.kuali.rice.krad.datadictionary.exception.AttributeValidationException;
/**
* Metadata that instructs the accounting line tags how to render debit/credit totals used in voucher documents
*/
public class DebitCreditTotalDefinition extends TotalDefinition {
private static Logger LOG = Logger.getLogger(DebitCreditTotalDefinition.class);
private String debitTotalProperty;
private String creditTotalProperty;
private boolean nestedProperty;
private String containingPropertyName;
private String representedProperty;
private String debitTotalLabelProperty = "accounting.line.group.debitTotal.label";
private String creditTotalLabelProperty = "accounting.line.group.creditTotal.label";
/**
* @see org.kuali.kfs.sys.document.datadictionary.TotalDefinition#getTotalRenderer()
*/
@Override
public Renderer getTotalRenderer() {
DebitCreditTotalRenderer renderer = new DebitCreditTotalRenderer();
String actualCreditTotalProperty = this.getActualPropertyName(containingPropertyName, creditTotalProperty);
renderer.setCreditTotalProperty(actualCreditTotalProperty);
String actualDebitTotalProperty = this.getActualPropertyName(containingPropertyName, debitTotalProperty);
renderer.setDebitTotalProperty(actualDebitTotalProperty);
renderer.setRepresentedCellPropertyName(representedProperty);
renderer.setCreditTotalLabelProperty(creditTotalLabelProperty);
renderer.setDebitTotalLabelProperty(debitTotalLabelProperty);
return renderer;
}
/**
* Validates that total properties have been added
*
* @see org.kuali.rice.krad.datadictionary.DataDictionaryDefinition#completeValidation(java.lang.Class, java.lang.Class)
*/
public void completeValidation(Class rootBusinessObjectClass, Class otherBusinessObjectClass) {
if (StringUtils.isBlank(debitTotalProperty) || StringUtils.isBlank(creditTotalProperty)) {
throw new AttributeValidationException("Please specify both debitTotalProperty and creditTotalProperty for the AccountingLineGroupTotalRenderer");
}
}
/**
* Gets the debitTotalProperty attribute.
*
* @return Returns the debitTotalProperty.
*/
public String getDebitTotalProperty() {
return debitTotalProperty;
}
/**
* Sets the debitTotalProperty attribute value.
*
* @param debitTotalProperty The debitTotalProperty to set.
*/
public void setDebitTotalProperty(String debitTotalProperty) {
this.debitTotalProperty = debitTotalProperty;
}
/**
* Gets the creditTotalProperty attribute.
*
* @return Returns the creditTotalProperty.
*/
public String getCreditTotalProperty() {
return creditTotalProperty;
}
/**
* Sets the creditTotalProperty attribute value.
*
* @param creditTotalProperty The creditTotalProperty to set.
*/
public void setCreditTotalProperty(String creditTotalProperty) {
this.creditTotalProperty = creditTotalProperty;
}
/**
* Gets the debitTotalLabelProperty attribute.
*
* @return Returns the debitTotalLabelProperty.
*/
public String getDebitTotalLabelProperty() {
return debitTotalLabelProperty;
}
/**
* Sets the debitTotalLabelProperty attribute value.
*
* @param debitTotalLabelProperty The debitTotalLabelProperty to set.
*/
public void setDebitTotalLabelProperty(String debitTotalLabelProperty) {
this.debitTotalLabelProperty = debitTotalLabelProperty;
}
/**
* Gets the creditTotalLabelProperty attribute.
*
* @return Returns the creditTotalLabelProperty.
*/
public String getCreditTotalLabelProperty() {
return creditTotalLabelProperty;
}
/**
* Sets the creditTotalLabelProperty attribute value.
*
* @param creditTotalLabelProperty The creditTotalLabelProperty to set.
*/
public void setCreditTotalLabelProperty(String creditTotalLabelProperty) {
this.creditTotalLabelProperty = creditTotalLabelProperty;
}
/**
* Gets the representedProperty attribute.
*
* @return Returns the representedProperty.
*/
public String getRepresentedProperty() {
return representedProperty;
}
/**
* Sets the representedProperty attribute value.
*
* @param representedProperty The representedProperty to set.
*/
public void setRepresentedProperty(String representedProperty) {
this.representedProperty = representedProperty;
}
/**
* Sets the nestedProperty attribute value.
* @param nestedProperty The nestedProperty to set.
*/
public void setNestedProperty(boolean nestedProperty) {
this.nestedProperty = nestedProperty;
}
/**
* @see org.kuali.kfs.sys.document.web.NestedFieldTotaling#setContainingPropertyName(java.lang.String)
*/
public void setContainingPropertyName(String containingPropertyName) {
this.containingPropertyName = containingPropertyName;
}
/**
* @see org.kuali.kfs.sys.document.web.NestedFieldTotaling#isNestedProperty()
*/
public boolean isNestedProperty() {
return this.nestedProperty;
}
}