1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.ld.document.validation.impl;
20
21 import java.util.HashSet;
22 import java.util.Set;
23
24 import org.kuali.kfs.module.ld.LaborKeyConstants;
25 import org.kuali.kfs.module.ld.document.LaborExpenseTransferDocumentBase;
26 import org.kuali.kfs.sys.KFSPropertyConstants;
27 import org.kuali.kfs.sys.businessobject.AccountingLine;
28 import org.kuali.kfs.sys.document.AccountingDocument;
29 import org.kuali.kfs.sys.document.validation.GenericValidation;
30 import org.kuali.kfs.sys.document.validation.event.AttributedDocumentEvent;
31 import org.kuali.rice.krad.document.Document;
32 import org.kuali.rice.krad.util.GlobalVariables;
33
34
35
36
37 public class BenefitExpenseTransferSameFringeBenefitObjectCodeValidation extends GenericValidation {
38 private Document documentForValidation;
39
40
41
42
43
44
45 public boolean validate(AttributedDocumentEvent event) {
46 boolean result = true;
47
48 Document documentForValidation = getDocumentForValidation();
49
50 AccountingDocument accountingDocument = (AccountingDocument) documentForValidation;
51
52
53 boolean sameFringeBenefitObjectCodes = hasSameFringeBenefitObjectCodes(accountingDocument);
54 if (!sameFringeBenefitObjectCodes) {
55 GlobalVariables.getMessageMap().putError(KFSPropertyConstants.TARGET_ACCOUNTING_LINES, LaborKeyConstants.DISTINCT_OBJECT_CODE_ERROR);
56 result = false;
57 }
58
59 return result;
60 }
61
62
63
64
65
66
67
68 protected boolean hasSameFringeBenefitObjectCodes(AccountingDocument accountingDocument) {
69 LaborExpenseTransferDocumentBase expenseTransferDocument = (LaborExpenseTransferDocumentBase) accountingDocument;
70
71 Set<String> objectCodesFromSourceLine = new HashSet<String>();
72 for (Object sourceAccountingLine : expenseTransferDocument.getSourceAccountingLines()) {
73 AccountingLine line = (AccountingLine) sourceAccountingLine;
74 objectCodesFromSourceLine.add(line.getFinancialObjectCode());
75 }
76
77 Set<String> objectCodesFromTargetLine = new HashSet<String>();
78 for (Object targetAccountingLine : expenseTransferDocument.getTargetAccountingLines()) {
79 AccountingLine line = (AccountingLine) targetAccountingLine;
80 objectCodesFromTargetLine.add(line.getFinancialObjectCode());
81 }
82
83 if (objectCodesFromSourceLine.size() != objectCodesFromTargetLine.size()) {
84 return false;
85 }
86
87 return objectCodesFromSourceLine.containsAll(objectCodesFromTargetLine);
88 }
89
90
91
92
93
94 public Document getDocumentForValidation() {
95 return documentForValidation;
96 }
97
98
99
100
101
102 public void setDocumentForValidation(Document documentForValidation) {
103 this.documentForValidation = documentForValidation;
104 }
105 }