001 /*
002 * Copyright 2011 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.kfs.module.ec.util;
017
018 import java.util.ArrayList;
019 import java.util.HashMap;
020 import java.util.List;
021 import java.util.Map;
022
023 import org.kuali.kfs.module.ec.businessobject.EffortCertificationReportDefinition;
024
025 /**
026 * To group and hold the data presented to working reports of extract process
027 */
028 public class ExtractProcessReportDataHolder {
029 private EffortCertificationReportDefinition reportDefinition;
030 private Map<String, Integer> basicStatistics;
031 private List<LedgerBalanceWithMessage> ledgerBalancesWithMessage;
032
033 private Map<String, Object> reportData;
034
035 public final static String KEY_OF_STATISTICS_ENTRY = "statistics";
036 public final static String KEY_OF_ERRORS_ENTRY = "errors";
037 public final static String REPORT_YEAR = "reportYear";
038 public final static String REPORT_NUMBER = "reportNumber";
039 public final static String REPORT_PERIOD_BEGIN = "reportPeriodBegin";
040 public final static String REPORT_PERIOD_END = "reportPeriodEnd";
041
042 /**
043 * Constructs a ExtractProcessReportDataHolder.java.
044 */
045 public ExtractProcessReportDataHolder() {
046 this(null);
047 }
048
049 /**
050 * Constructs a ExtractProcessReportDataHolder.java.
051 *
052 * @param reportDefinition
053 */
054 public ExtractProcessReportDataHolder(EffortCertificationReportDefinition reportDefinition) {
055 super();
056 this.reportDefinition = reportDefinition;
057 this.basicStatistics = new HashMap<String, Integer>();
058 this.ledgerBalancesWithMessage = new ArrayList<LedgerBalanceWithMessage>();
059 this.reportData = new HashMap<String, Object>();
060 }
061
062 /**
063 * update the value of the entry with the given key. If the key exists, the value will be the sum of the given and existing
064 * values; otherwise, create a new entry with the key and value.
065 *
066 * @param key the given key
067 * @param count the given count
068 */
069 public void updateBasicStatistics(String key, Integer count) {
070 if (basicStatistics.containsKey(key)) {
071 Integer currentCount = basicStatistics.get(key);
072 count = currentCount + count;
073 }
074 basicStatistics.put(key, count);
075 }
076
077 /**
078 * Gets the reportDefinition attribute.
079 *
080 * @return Returns the reportDefinition.
081 */
082 public EffortCertificationReportDefinition getReportDefinition() {
083 return reportDefinition;
084 }
085
086 /**
087 * Sets the reportDefinition attribute value.
088 *
089 * @param reportDefinition The reportDefinition to set.
090 */
091 public void setReportDefinition(EffortCertificationReportDefinition reportDefinition) {
092 this.reportDefinition = reportDefinition;
093 }
094
095 /**
096 * Gets the basicStatistics attribute.
097 *
098 * @return Returns the basicStatistics.
099 */
100 public Map<String, Integer> getBasicStatistics() {
101 return basicStatistics;
102 }
103
104 /**
105 * Sets the basicStatistics attribute value.
106 *
107 * @param basicStatistics The basicStatistics to set.
108 */
109 public void setBasicStatistics(Map<String, Integer> basicStatistics) {
110 this.basicStatistics = basicStatistics;
111 }
112
113 /**
114 * Gets the ledgerBalancesWithMessage attribute.
115 * @return Returns the ledgerBalancesWithMessage.
116 */
117 public List<LedgerBalanceWithMessage> getLedgerBalancesWithMessage() {
118 return ledgerBalancesWithMessage;
119 }
120
121 /**
122 * Sets the ledgerBalancesWithMessage attribute value.
123 * @param ledgerBalancesWithMessage The ledgerBalancesWithMessage to set.
124 */
125 public void setLedgerBalancesWithMessage(List<LedgerBalanceWithMessage> ledgerBalancesWithMessage) {
126 this.ledgerBalancesWithMessage = ledgerBalancesWithMessage;
127 }
128
129 /**
130 * Gets the reportData attribute.
131 * @return Returns the reportData.
132 */
133 public Map<String, Object> getReportData() {
134 reportData.put(REPORT_YEAR, reportDefinition.getUniversityFiscalYear());
135 reportData.put(REPORT_NUMBER, reportDefinition.getEffortCertificationReportNumber());
136 reportData.put(REPORT_PERIOD_BEGIN, reportDefinition.getEffortCertificationReportBeginPeriodCode() + "/" + reportDefinition.getEffortCertificationReportBeginFiscalYear());
137 reportData.put(REPORT_PERIOD_END, reportDefinition.getEffortCertificationReportEndPeriodCode() + "/" + reportDefinition.getEffortCertificationReportEndFiscalYear());
138
139 reportData.put(KEY_OF_STATISTICS_ENTRY, basicStatistics);
140 reportData.put(KEY_OF_ERRORS_ENTRY, ledgerBalancesWithMessage);
141 return reportData;
142 }
143
144 /**
145 * @see java.lang.Object#toString()
146 */
147 @Override
148 public String toString() {
149 return this.getReportData().toString();
150 }
151 }