001    /**
002     * Copyright 2004-2012 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.hr.time.timesummary;
017    
018    import java.math.BigDecimal;
019    import java.util.ArrayList;
020    import java.util.List;
021    
022    import org.kuali.hr.time.util.TkConstants;
023    
024    public class AssignmentRow {
025            private String descr;
026            private List<BigDecimal> total = new ArrayList<BigDecimal>();
027            private String cssClass;
028            private String assignmentKey;
029            
030            private List<BigDecimal> amount = new ArrayList<BigDecimal>();
031            
032            private BigDecimal periodTotal = BigDecimal.ZERO;
033            
034            private EarnCodeSection earnCodeSection;
035            
036            public String getDescr() {
037                    return descr;
038            }
039            public void setDescr(String descr) {
040                    this.descr = descr;
041            }
042            public List<BigDecimal> getTotal() {
043                    return total;
044            }
045            public void setTotal(List<BigDecimal> total) {
046                    this.total = total;
047            }
048            public String getCssClass() {
049                    return cssClass;
050            }
051            public void setCssClass(String cssClass) {
052                    this.cssClass = cssClass;
053            }
054            public String getAssignmentKey() {
055                    return assignmentKey;
056            }
057            public void setAssignmentKey(String assignmentKey) {
058                    this.assignmentKey = assignmentKey;
059            }
060            
061            public void addToTotal(int index, BigDecimal hrs){
062                    BigDecimal total = getTotal().get(index);
063                    total = total.add(hrs, TkConstants.MATH_CONTEXT);
064                    getTotal().set(index, total);
065                    getEarnCodeSection().addToTotal(index, hrs);
066            }
067            
068            public void addWeeklyTotal(int index, int weekSize){
069                    BigDecimal weeklyTotal = BigDecimal.ZERO;
070                    BigDecimal weeklyAmt = BigDecimal.ZERO;
071                    for(int i = index; i >= (index-weekSize) && i >=0;i--){
072                            weeklyTotal = weeklyTotal.add(getTotal().get(i), TkConstants.MATH_CONTEXT);
073                            weeklyAmt = weeklyAmt.add(getAmount().get(i), TkConstants.MATH_CONTEXT);
074                    }
075                    getTotal().set(index,weeklyTotal);
076                    getAmount().set(index, weeklyAmt);
077                    
078                    BigDecimal periodTotal = getTotal().get(getTotal().size()-1);
079                    periodTotal = periodTotal.add(weeklyTotal, TkConstants.MATH_CONTEXT);
080                    getTotal().set(getTotal().size()-1,periodTotal);
081                    
082                    //accumulate amount
083                    BigDecimal amountTotal = getAmount().get(getTotal().size()-1);
084                    amountTotal = amountTotal.add(weeklyAmt, TkConstants.MATH_CONTEXT);
085                    getAmount().set(getAmount().size()-1, amountTotal);
086            }
087            public EarnCodeSection getEarnCodeSection() {
088                    return earnCodeSection;
089            }
090            public void setEarnCodeSection(EarnCodeSection earnCodeSection) {
091                    this.earnCodeSection = earnCodeSection;
092            }
093            public BigDecimal getPeriodTotal() {
094                    return periodTotal;
095            }
096            public void setPeriodTotal(BigDecimal periodTotal) {
097                    this.periodTotal = periodTotal;
098            }
099            public List<BigDecimal> getAmount() {
100                    return amount;
101            }
102            public void setAmount(List<BigDecimal> amount) {
103                    this.amount = amount;
104            }
105            
106            public void addToAmount(int index, BigDecimal amount){
107                    if(amount == null){
108                            return;
109                    }
110                    BigDecimal amtTotal = getAmount().get(index);
111                    amtTotal = amtTotal.add(amount, TkConstants.MATH_CONTEXT);
112                    getAmount().set(index, amtTotal);
113            }
114    }