1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.kfs.module.cg.dataaccess.impl;
20
21 import java.sql.Date;
22 import java.util.Collection;
23 import java.util.Iterator;
24
25 import org.apache.ojb.broker.query.Criteria;
26 import org.apache.ojb.broker.query.QueryFactory;
27 import org.apache.ojb.broker.query.ReportQueryByCriteria;
28 import org.kuali.kfs.module.cg.CGPropertyConstants;
29 import org.kuali.kfs.module.cg.businessobject.Award;
30 import org.kuali.kfs.module.cg.businessobject.Proposal;
31 import org.kuali.kfs.module.cg.dataaccess.CloseDao;
32 import org.kuali.kfs.module.cg.document.ProposalAwardCloseDocument;
33 import org.kuali.kfs.sys.KFSConstants;
34 import org.kuali.kfs.sys.KFSPropertyConstants;
35 import org.kuali.kfs.sys.util.TransactionalServiceUtils;
36 import org.kuali.rice.core.framework.persistence.ojb.dao.PlatformAwareDaoBaseOjb;
37
38
39
40
41 public class CloseDaoOjb extends PlatformAwareDaoBaseOjb implements CloseDao {
42
43
44
45
46 @Override
47 public String getMaxApprovedClose(Date today) {
48
49 Criteria criteria = new Criteria();
50 criteria.addEqualTo(CGPropertyConstants.PROPOSAL_AWARD_CLOSE_DOC_USER_INITIATED_CLOSE_DATE, today);
51 criteria.addEqualTo(KFSPropertyConstants.DOCUMENT_HEADER + "." + KFSPropertyConstants.WORKFLOW_DOCUMENT_STATUS_CODE, KFSConstants.DocumentStatusCodes.ENROUTE);
52
53 ReportQueryByCriteria rqbc = new ReportQueryByCriteria(ProposalAwardCloseDocument.class, criteria);
54 rqbc.setAttributes(new String[] { KFSPropertyConstants.DOCUMENT_NUMBER });
55 rqbc.addOrderByDescending(KFSPropertyConstants.DOCUMENT_NUMBER);
56
57 Iterator<?> documentHeaderIdsIterator = getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(rqbc);
58
59 if (documentHeaderIdsIterator.hasNext()) {
60 Object[] result = (Object[]) TransactionalServiceUtils.retrieveFirstAndExhaustIterator(documentHeaderIdsIterator);
61 if (result[0] != null) {
62 return result[0].toString();
63 }
64 else {
65 return null;
66 }
67 }
68 else {
69 return null;
70 }
71 }
72
73
74
75
76 @Override
77 public String getMostRecentClose(Date today) {
78
79 Criteria criteria = new Criteria();
80 criteria.addEqualTo(CGPropertyConstants.PROPOSAL_AWARD_CLOSE_DOC_USER_INITIATED_CLOSE_DATE, today);
81 criteria.addEqualTo(KFSPropertyConstants.DOCUMENT_HEADER + "." + KFSPropertyConstants.WORKFLOW_DOCUMENT_STATUS_CODE, KFSConstants.DocumentStatusCodes.APPROVED);
82 ReportQueryByCriteria rqbc = new ReportQueryByCriteria(ProposalAwardCloseDocument.class, criteria);
83 rqbc.setAttributes(new String[] { KFSPropertyConstants.DOCUMENT_NUMBER });
84
85 rqbc.addOrderByDescending(KFSPropertyConstants.DOCUMENT_NUMBER);
86 getPersistenceBrokerTemplate().clearCache();
87 if ( getPersistenceBrokerTemplate().getCount(rqbc) == 0) {
88 return null;
89 }
90
91 Iterator<?> documentHeaderIdsIterator = getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(rqbc);
92
93
94 Object[] result = (Object[]) TransactionalServiceUtils.retrieveFirstAndExhaustIterator(documentHeaderIdsIterator);
95 if (result[0] != null) {
96 return result[0].toString();
97 }
98 else {
99 return null;
100 }
101 }
102
103
104
105
106 @Override
107 public Collection<Award> getAwardsToClose(ProposalAwardCloseDocument close) {
108
109 Criteria criteria = new Criteria();
110 criteria.addIsNull("awardClosingDate");
111 criteria.addLessOrEqualThan("awardEntryDate", close.getCloseOnOrBeforeDate());
112 criteria.addNotEqualTo("awardStatusCode", "U");
113
114 return getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(Award.class, criteria));
115 }
116
117
118
119
120 @Override
121 public Collection<Proposal> getProposalsToClose(ProposalAwardCloseDocument close) {
122
123 Criteria criteria = new Criteria();
124 criteria.addIsNull("proposalClosingDate");
125 criteria.addLessOrEqualThan("proposalSubmissionDate", close.getCloseOnOrBeforeDate());
126
127 return getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(Proposal.class, criteria));
128 }
129
130 }