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 org.json.simple.JSONValue;
019    
020    import java.math.BigDecimal;
021    import java.util.ArrayList;
022    import java.util.HashMap;
023    import java.util.List;
024    import java.util.Map;
025    
026    public class TimeSummary {
027            private List<String> summaryHeader = new ArrayList<String>();
028            private List<EarnGroupSection> sections = new ArrayList<EarnGroupSection>();
029            
030            private List<BigDecimal> workedHours = new ArrayList<BigDecimal>();
031    
032            public List<String> getSummaryHeader() {
033                    return summaryHeader;
034            }
035            public void setSummaryHeader(List<String> summaryHeader) {
036                    this.summaryHeader = summaryHeader;
037            }
038            public List<EarnGroupSection> getSections() {
039                    return sections;
040            }
041            public void setSections(List<EarnGroupSection> sections) {
042                    this.sections = sections;
043            }
044            public List<BigDecimal> getWorkedHours() {
045                    return workedHours;
046            }
047            public void setWorkedHours(List<BigDecimal> workedHours) {
048                    this.workedHours = workedHours;
049            }
050    
051        public String toJsonString() {
052    
053            List<Map<String, Object>> earnCodeSections = new ArrayList<Map<String, Object>>();
054    
055            for (EarnGroupSection earnGroupSection : this.sections) {
056                for (EarnCodeSection earnCodeSection : earnGroupSection.getEarnCodeSections()) {
057                    Map<String, Object> ecs = new HashMap<String, Object>();
058    
059    
060                    ecs.put("earnCode", earnCodeSection.getEarnCode());
061                    ecs.put("desc", earnCodeSection.getDescription());
062                    ecs.put("totals", earnCodeSection.getTotals());
063                    ecs.put("isAmountEarnCode", earnCodeSection.getIsAmountEarnCode());
064    
065                    List<Map<String, Object>> assignmentRows = new ArrayList<Map<String, Object>>();
066                    for (AssignmentRow assignmentRow : earnCodeSection.getAssignmentsRows()) {
067    
068                        Map<String, Object> ar = new HashMap<String, Object>();
069    
070                        ar.put("assignmentKey", assignmentRow.getAssignmentKey());
071                        ar.put("descr", assignmentRow.getDescr());
072                        ar.put("cssClass", assignmentRow.getCssClass());
073                        ar.put("amount", assignmentRow.getAmount());
074                        ar.put("total", assignmentRow.getTotal());
075                        ar.put("amount", assignmentRow.getAmount());
076    
077                        assignmentRows.add(ar);
078                    }
079    
080                    ecs.put("assignmentRows", assignmentRows);
081                    ecs.put("earnGroup", earnGroupSection.getEarnGroup());
082                    ecs.put("totals", earnGroupSection.getTotals());
083    
084                    earnCodeSections.add(ecs);
085                }
086    
087            }
088    
089            return JSONValue.toJSONString(earnCodeSections);
090        }
091    
092    }