/*
* 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.module.tem.document;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.kuali.kfs.module.tem.businessobject.AgencyCorrectionChangeGroup;
import org.kuali.kfs.module.tem.document.service.TemCorrectionDocumentService;
import org.kuali.kfs.sys.KFSConstants;
import org.kuali.kfs.sys.document.AmountTotaling;
import org.kuali.kfs.sys.document.FinancialSystemTransactionalDocumentBase;
import org.kuali.rice.core.api.util.type.KualiDecimal;
import org.kuali.rice.krad.util.ObjectUtils;
public class TemCorrectionProcessDocument extends FinancialSystemTransactionalDocumentBase implements AmountTotaling {
protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(TemCorrectionProcessDocument.class);
protected String correctionTypeCode; // CorrectionDocumentService.CORRECTION_TYPE_MANUAL or
protected boolean correctionSelection; // false if all input rows should be in the output, true if only selected rows should be
// in the output
protected boolean correctionFileDelete; // false if the file should be processed by scrubber, true if the file should not be
// processed by agency upload process
protected Integer correctionRowCount; // Row count in output group
protected String correctionInputFileName; // input file name
protected String correctionOutputFileName; // output file name
protected String correctionScriptText; // Not used
protected Integer correctionChangeGroupNextLineNumber;
protected List<AgencyCorrectionChangeGroup> correctionChangeGroup;
protected KualiDecimal correctionTripTotalAmount = KualiDecimal.ZERO;
public TemCorrectionProcessDocument() {
super();
correctionChangeGroupNextLineNumber = new Integer(0);
correctionChangeGroup = new ArrayList<AgencyCorrectionChangeGroup>();
}
/**
* Returns the editing method to use on the origin entries in the document, either "Manual Edit," "Using Criteria," "Remove
* Group from Processing," or "Not Available"
*
* @return the String representation of the method this document is using
*/
public String getMethod() {
if (TemCorrectionDocumentService.CORRECTION_TYPE_MANUAL.equals(correctionTypeCode)) {
return "Manual Edit";
}
else if (TemCorrectionDocumentService.CORRECTION_TYPE_CRITERIA.equals(correctionTypeCode)) {
return "Using Criteria";
}
else if (TemCorrectionDocumentService.CORRECTION_TYPE_REMOVE_GROUP_FROM_PROCESSING.equals(correctionTypeCode)) {
return "Remove Group from Processing";
}
else {
return KFSConstants.NOT_AVAILABLE_STRING;
}
}
/**
* Returns the source of the origin entries this document uses: either an uploaded file of origin entries or the database
*
* @return a String with the name of the system in use
*/
public String getSystem() {
return "Database";
}
/**
* This method...
*
* @param ccg
*/
public void addCorrectionChangeGroup(AgencyCorrectionChangeGroup ccg) {
ccg.setDocumentNumber(documentNumber);
ccg.setCorrectionChangeGroupLineNumber(correctionChangeGroupNextLineNumber++);
correctionChangeGroup.add(ccg);
}
/**
* This method...
*
* @param changeNumber
*/
public void removeCorrectionChangeGroup(int changeNumber) {
for (Iterator iter = correctionChangeGroup.iterator(); iter.hasNext();) {
AgencyCorrectionChangeGroup element = (AgencyCorrectionChangeGroup) iter.next();
if (changeNumber == element.getCorrectionChangeGroupLineNumber().intValue()) {
iter.remove();
}
}
}
/**
* This method...
*
* @param groupNumber
* @return
*/
public AgencyCorrectionChangeGroup getCorrectionChangeGroupItem(int groupNumber) {
for (Iterator iter = correctionChangeGroup.iterator(); iter.hasNext();) {
AgencyCorrectionChangeGroup element = (AgencyCorrectionChangeGroup) iter.next();
if (groupNumber == element.getCorrectionChangeGroupLineNumber().intValue()) {
return element;
}
}
AgencyCorrectionChangeGroup ccg = new AgencyCorrectionChangeGroup(documentNumber, groupNumber);
correctionChangeGroup.add(ccg);
return ccg;
}
@Override
public KualiDecimal getTotalDollarAmount() {
return correctionTripTotalAmount;
}
/**
* Gets the correctionTypeCode attribute.
* @return Returns the correctionTypeCode.
*/
public String getCorrectionTypeCode() {
return correctionTypeCode;
}
/**
* Sets the correctionTypeCode attribute value.
* @param correctionTypeCode The correctionTypeCode to set.
*/
public void setCorrectionTypeCode(String correctionTypeCode) {
this.correctionTypeCode = correctionTypeCode;
}
/**
* Gets the correctionSelection attribute.
* @return Returns the correctionSelection.
*/
public boolean isCorrectionSelection() {
return correctionSelection;
}
/**
* Sets the correctionSelection attribute value.
* @param correctionSelection The correctionSelection to set.
*/
public void setCorrectionSelection(boolean correctionSelection) {
this.correctionSelection = correctionSelection;
}
/**
* Gets the correctionFileDelete attribute.
* @return Returns the correctionFileDelete.
*/
public boolean isCorrectionFileDelete() {
return correctionFileDelete;
}
/**
* Sets the correctionFileDelete attribute value.
* @param correctionFileDelete The correctionFileDelete to set.
*/
public void setCorrectionFileDelete(boolean correctionFileDelete) {
this.correctionFileDelete = correctionFileDelete;
}
/**
* Gets the correctionRowCount attribute.
* @return Returns the correctionRowCount.
*/
public Integer getCorrectionRowCount() {
return correctionRowCount;
}
/**
* Sets the correctionRowCount attribute value.
* @param correctionRowCount The correctionRowCount to set.
*/
public void setCorrectionRowCount(Integer correctionRowCount) {
this.correctionRowCount = correctionRowCount;
}
/**
* Gets the correctionInputFileName attribute.
* @return Returns the correctionInputFileName.
*/
public String getCorrectionInputFileName() {
return correctionInputFileName;
}
/**
* Sets the correctionInputFileName attribute value.
* @param correctionInputFileName The correctionInputFileName to set.
*/
public void setCorrectionInputFileName(String correctionInputFileName) {
this.correctionInputFileName = correctionInputFileName;
}
/**
* Gets the correctionOutputFileName attribute.
* @return Returns the correctionOutputFileName.
*/
public String getCorrectionOutputFileName() {
return correctionOutputFileName;
}
/**
* Sets the correctionOutputFileName attribute value.
* @param correctionOutputFileName The correctionOutputFileName to set.
*/
public void setCorrectionOutputFileName(String correctionOutputFileName) {
this.correctionOutputFileName = correctionOutputFileName;
}
/**
* Gets the correctionScriptText attribute.
* @return Returns the correctionScriptText.
*/
public String getCorrectionScriptText() {
return correctionScriptText;
}
/**
* Sets the correctionScriptText attribute value.
* @param correctionScriptText The correctionScriptText to set.
*/
public void setCorrectionScriptText(String correctionScriptText) {
this.correctionScriptText = correctionScriptText;
}
/**
* Gets the correctionChangeGroupNextLineNumber attribute.
* @return Returns the correctionChangeGroupNextLineNumber.
*/
public Integer getCorrectionChangeGroupNextLineNumber() {
return correctionChangeGroupNextLineNumber;
}
/**
* Sets the correctionChangeGroupNextLineNumber attribute value.
* @param correctionChangeGroupNextLineNumber The correctionChangeGroupNextLineNumber to set.
*/
public void setCorrectionChangeGroupNextLineNumber(Integer correctionChangeGroupNextLineNumber) {
this.correctionChangeGroupNextLineNumber = correctionChangeGroupNextLineNumber;
}
/**
* Gets the correctionTripTotalAmount attribute.
* @return Returns the correctionTripTotalAmount.
*/
public KualiDecimal getCorrectionTripTotalAmount() {
return correctionTripTotalAmount;
}
/**
* Sets the correctionTripTotalAmount attribute value.
* @param correctionTripTotalAmount The correctionTripTotalAmount to set.
*/
public void setCorrectionTripTotalAmount(KualiDecimal correctionTripTotalAmount) {
if(ObjectUtils.isNull(correctionTripTotalAmount)) {
this.correctionTripTotalAmount = KualiDecimal.ZERO;
} else {
this.correctionTripTotalAmount = correctionTripTotalAmount;
}
}
public List<AgencyCorrectionChangeGroup> getCorrectionChangeGroup() {
Collections.sort(correctionChangeGroup);
return correctionChangeGroup;
}
public void setCorrectionChangeGroup(List<AgencyCorrectionChangeGroup> correctionChangeGroup) {
this.correctionChangeGroup = correctionChangeGroup;
}
}