001    /**
002     * Copyright 2004-2013 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.io.Serializable;
019    import java.math.BigDecimal;
020    import java.util.ArrayList;
021    import java.util.HashMap;
022    import java.util.List;
023    import java.util.Map;
024    
025    import org.kuali.hr.time.util.TkConstants;
026    
027    public class EarnCodeSection implements Serializable {
028            private String earnCode;
029            private String description;
030            private Map<String, AssignmentRow> assignKeyToAssignmentRowMap = new HashMap<String, AssignmentRow>();
031            private List<AssignmentRow> assignmentsRows = new ArrayList<AssignmentRow>();
032            private List<BigDecimal> totals = new ArrayList<BigDecimal>();
033            private Boolean isAmountEarnCode = Boolean.FALSE;;
034            
035            private EarnGroupSection earnGroupSection;
036            
037            public String getEarnCode() {
038                    return earnCode;
039            }
040            public void setEarnCode(String earnCode) {
041                    this.earnCode = earnCode;
042            }
043            public String getDescription() {
044                    return description;
045            }
046            public void setDescription(String description) {
047                    this.description = description;
048            }
049            
050            public void addAssignmentRow(AssignmentRow assignRow) {
051            int i = 0;
052                    for (AssignmentColumn assignmentColumn : assignRow.getAssignmentColumns()) {
053                            BigDecimal value = totals.get(i).add(assignmentColumn.getTotal(), TkConstants.MATH_CONTEXT);
054                            totals.set(i, value.setScale(TkConstants.BIG_DECIMAL_SCALE, TkConstants.BIG_DECIMAL_SCALE_ROUNDING));
055                i++;
056                    }
057                    assignKeyToAssignmentRowMap.put(assignRow.getAssignmentKey(), assignRow);
058                    assignmentsRows.add(assignRow);
059            }
060            
061            public void addWeeklyTotal(int index, int weekSize){
062                    
063                    BigDecimal weeklyTotal = BigDecimal.ZERO;
064                    for(int i = index; i >= (index-weekSize) && i >=0;i--){
065                            weeklyTotal = weeklyTotal.add(getTotals().get(i), TkConstants.MATH_CONTEXT);
066                    }
067                    getTotals().set(index,weeklyTotal);
068                    BigDecimal periodTotal = getTotals().get(getTotals().size()-1);
069                    periodTotal = periodTotal.add(weeklyTotal, TkConstants.MATH_CONTEXT);
070                    getTotals().set(getTotals().size()-1,periodTotal);
071                    
072                    for(AssignmentRow ar : assignmentsRows){
073                            ar.addWeeklyTotal(index, weekSize);
074                    }
075            }
076            
077            public List<AssignmentRow> getAssignmentsRows() {
078                    return assignmentsRows;
079            }
080            public void setAssignmentsRows(List<AssignmentRow> assignmentsRows) {
081                    this.assignmentsRows = assignmentsRows;
082            }
083            public List<BigDecimal> getTotals() {
084                    return totals;
085            }
086            public void setTotals(List<BigDecimal> totals) {
087                    this.totals = totals;
088            }
089            public Map<String, AssignmentRow> getAssignKeyToAssignmentRowMap() {
090                    return assignKeyToAssignmentRowMap;
091            }
092            public void setAssignKeyToAssignmentRowMap(
093                            Map<String, AssignmentRow> assignKeyToAssignmentRowMap) {
094                    this.assignKeyToAssignmentRowMap = assignKeyToAssignmentRowMap;
095            }
096            
097            public void addToTotal(int index, BigDecimal hrs){
098                    BigDecimal total = getTotals().get(index);
099                    total = total.add(hrs, TkConstants.MATH_CONTEXT);
100                    getTotals().set(index, total);
101            }
102            
103            public void addToAmount(int index, BigDecimal amount){
104                    BigDecimal amtTotal = getTotals().get(index);
105                    amtTotal = amtTotal.add(amount, TkConstants.MATH_CONTEXT);
106                    getTotals().set(index, amtTotal);
107            }
108            public EarnGroupSection getEarnGroupSection() {
109                    return earnGroupSection;
110            }
111            public void setEarnGroupSection(EarnGroupSection earnGroupSection) {
112                    this.earnGroupSection = earnGroupSection;
113            }
114            public Boolean getIsAmountEarnCode() {
115                    return isAmountEarnCode;
116            }
117            public void setIsAmountEarnCode(Boolean isAmountEarnCode) {
118                    this.isAmountEarnCode = isAmountEarnCode;
119            }
120            
121            
122    }