1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  package org.kuali.kfs.gl.businessobject;
21  
22  import java.util.ArrayList;
23  import java.util.Collections;
24  import java.util.Comparator;
25  import java.util.Iterator;
26  import java.util.LinkedHashMap;
27  import java.util.List;
28  
29  import org.kuali.kfs.sys.KFSPropertyConstants;
30  import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
31  
32  
33  
34  
35  public class CorrectionChangeGroup extends PersistableBusinessObjectBase implements Comparable {
36      private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(CorrectionChangeGroup.class);
37  
38      private String documentNumber;
39      private Integer correctionChangeGroupLineNumber;
40      private Integer correctionCriteriaNextLineNumber;
41      private Integer correctionChangeNextLineNumber;
42      private List<CorrectionCriteria> correctionCriteria;
43      private List<CorrectionChange> correctionChange;
44  
45      public CorrectionChangeGroup(String documentNumber, Integer correctionChangeGroupLineNumber) {
46          setCorrectionChangeGroupLineNumber(correctionChangeGroupLineNumber);
47  
48          correctionCriteria = new ArrayList();
49          correctionChange = new ArrayList();
50          correctionCriteriaNextLineNumber = new Integer(0);
51          correctionChangeNextLineNumber = new Integer(0);
52  
53          setDocumentNumber(documentNumber);
54      }
55  
56      public CorrectionChangeGroup() {
57          super();
58          correctionCriteria = new ArrayList();
59          correctionChange = new ArrayList();
60          correctionCriteriaNextLineNumber = new Integer(0);
61          correctionChangeNextLineNumber = new Integer(0);
62      }
63  
64      
65  
66  
67  
68  
69      public void addCorrectionChange(CorrectionChange cc) {
70          LOG.debug("addCorrectionChange() started");
71  
72          cc.setDocumentNumber(documentNumber);
73          cc.setCorrectionChangeGroupLineNumber(correctionChangeGroupLineNumber);
74          cc.setCorrectionChangeLineNumber(correctionChangeNextLineNumber++);
75          correctionChange.add(cc);
76      }
77  
78      
79  
80  
81  
82  
83      public void addCorrectionCriteria(CorrectionCriteria cc) {
84          cc.setDocumentNumber(documentNumber);
85          cc.setCorrectionChangeGroupLineNumber(correctionChangeGroupLineNumber);
86          cc.setCorrectionCriteriaLineNumber(correctionCriteriaNextLineNumber++);
87          correctionCriteria.add(cc);
88      }
89  
90      
91  
92  
93  
94  
95      public void removeCorrectionChangeItem(int changeNumber) {
96          for (Iterator iter = correctionChange.iterator(); iter.hasNext();) {
97              CorrectionChange element = (CorrectionChange) iter.next();
98              if (changeNumber == element.getCorrectionChangeLineNumber().intValue()) {
99                  iter.remove();
100             }
101         }
102     }
103 
104     
105 
106 
107 
108 
109     public void removeCorrectionCriteriaItem(int criteriaNumber) {
110         for (Iterator iter = correctionCriteria.iterator(); iter.hasNext();) {
111             CorrectionCriteria element = (CorrectionCriteria) iter.next();
112             if (criteriaNumber == element.getCorrectionCriteriaLineNumber().intValue()) {
113                 iter.remove();
114             }
115         }
116     }
117 
118     
119 
120 
121 
122 
123 
124     public CorrectionChange getCorrectionChangeItem(int changeNumber) {
125         for (Iterator iter = correctionChange.iterator(); iter.hasNext();) {
126             CorrectionChange element = (CorrectionChange) iter.next();
127             if (changeNumber == element.getCorrectionChangeLineNumber().intValue()) {
128                 return element;
129             }
130         }
131 
132         CorrectionChange cc = new CorrectionChange(getDocumentNumber(), correctionChangeGroupLineNumber, changeNumber);
133         correctionChange.add(cc);
134 
135         return cc;
136     }
137     
138     
139     
140 
141 
142 
143 
144 
145     public CorrectionCriteria getCorrectionCriteriaItem(int criteriaNumber) {
146         for (Iterator iter = correctionCriteria.iterator(); iter.hasNext();) {
147             CorrectionCriteria element = (CorrectionCriteria) iter.next();
148             if (criteriaNumber == element.getCorrectionCriteriaLineNumber().intValue()) {
149                 return element;
150             }
151         }
152 
153         CorrectionCriteria cc = new CorrectionCriteria(getDocumentNumber(), correctionChangeGroupLineNumber, criteriaNumber);
154         correctionCriteria.add(cc);
155         return cc;
156     }
157 
158     public String getDocumentNumber() {
159         return documentNumber;
160     }
161 
162     
163 
164 
165 
166 
167 
168     public void setDocumentNumber(String documentNumber) {
169         this.documentNumber = documentNumber;
170 
171         for (Iterator iter = correctionCriteria.iterator(); iter.hasNext();) {
172             CorrectionCriteria element = (CorrectionCriteria) iter.next();
173             element.setDocumentNumber(documentNumber);
174         }
175         for (Iterator iter = correctionChange.iterator(); iter.hasNext();) {
176             CorrectionChange element = (CorrectionChange) iter.next();
177             element.setDocumentNumber(documentNumber);
178         }
179     }
180 
181     public Integer getCorrectionChangeGroupLineNumber() {
182         return correctionChangeGroupLineNumber;
183     }
184 
185     public void setCorrectionChangeGroupLineNumber(Integer correctionChangeGroupLineNumber) {
186         this.correctionChangeGroupLineNumber = correctionChangeGroupLineNumber;
187     }
188 
189     public Integer getCorrectionCriteriaNextLineNumber() {
190         return correctionCriteriaNextLineNumber;
191     }
192 
193     public void setCorrectionCriteriaNextLineNumber(Integer correctionCriteriaNextLineNumber) {
194         this.correctionCriteriaNextLineNumber = correctionCriteriaNextLineNumber;
195     }
196 
197     public Integer getCorrectionChangeNextLineNumber() {
198         return correctionChangeNextLineNumber;
199     }
200 
201     public void setCorrectionChangeNextLineNumber(Integer correctionChangeNextLineNumber) {
202         this.correctionChangeNextLineNumber = correctionChangeNextLineNumber;
203     }
204 
205     public List<CorrectionCriteria> getCorrectionCriteria() {
206         Collections.sort(correctionCriteria);
207         return correctionCriteria;
208     }
209 
210     public void setCorrectionCriteria(List<CorrectionCriteria> correctionCriteria) {
211         this.correctionCriteria = correctionCriteria;
212     }
213 
214     public List<CorrectionChange> getCorrectionChange() {
215         Collections.sort(correctionChange);
216         return correctionChange;
217     }
218 
219     public void setCorrectionChange(List<CorrectionChange> correctionChange) {
220         this.correctionChange = correctionChange;
221     }
222 
223     
224 
225 
226 
227 
228     public int compareTo(Object o) {
229         CorrectionChangeGroup other = (CorrectionChangeGroup) o;
230 
231         String thisFdocNbr = documentNumber == null ? "" : documentNumber;
232         String thatFdocNbr = other.documentNumber == null ? "" : other.documentNumber;
233 
234         int c = thisFdocNbr.compareTo(thatFdocNbr);
235         if (c == 0) {
236             Integer thisNbr = correctionChangeGroupLineNumber == null ? 0 : correctionChangeGroupLineNumber;
237             Integer thatNbr = other.correctionChangeGroupLineNumber == null ? 0 : other.correctionChangeGroupLineNumber;
238             return thisNbr.compareTo(thatNbr);
239         }
240         else {
241             return c;
242         }
243     }
244 
245     
246 
247 
248     protected LinkedHashMap toStringMapper_RICE20_REFACTORME() {
249         LinkedHashMap m = new LinkedHashMap();
250         m.put(KFSPropertyConstants.DOCUMENT_NUMBER, this.documentNumber);
251         if (this.correctionChangeGroupLineNumber != null) {
252             m.put("correctionChangeGroupLineNumber", this.correctionChangeGroupLineNumber.toString());
253         }
254         return m;
255     }
256     
257     
258 
259 
260 
261     public static class CorrectionGroupLineNumberComparator implements Comparator {
262 
263         
264 
265 
266         public CorrectionGroupLineNumberComparator() {
267         }
268 
269         
270 
271 
272 
273 
274 
275 
276 
277         public int compare(Object c1, Object c2) {
278 
279             CorrectionChangeGroup ccg1 = (CorrectionChangeGroup) c1;
280             CorrectionChangeGroup ccg2 = (CorrectionChangeGroup) c2;
281 
282             return ccg1.getCorrectionChangeGroupLineNumber().compareTo(ccg2.getCorrectionChangeGroupLineNumber());
283         }
284 
285     }
286 }