1 package org.kuali.ole.deliver.notice.executors;
2
3 import org.apache.commons.lang3.StringUtils;
4 import org.apache.log4j.Logger;
5 import org.kuali.ole.OLEConstants;
6 import org.kuali.ole.OLEParameterConstants;
7 import org.kuali.ole.deliver.batch.OleMailer;
8 import org.kuali.ole.deliver.bo.OLEDeliverNotice;
9 import org.kuali.ole.deliver.bo.OLEDeliverNoticeHistory;
10 import org.kuali.ole.deliver.bo.OleLoanDocument;
11 import org.kuali.ole.deliver.bo.OlePatronDocument;
12 import org.kuali.ole.deliver.service.CircDeskLocationResolver;
13 import org.kuali.ole.deliver.service.NoticesExecutor;
14 import org.kuali.ole.deliver.service.ParameterValueResolver;
15 import org.kuali.ole.describe.bo.OleInstanceItemType;
16 import org.kuali.rice.core.api.mail.EmailBody;
17 import org.kuali.rice.core.api.mail.EmailFrom;
18 import org.kuali.rice.core.api.mail.EmailSubject;
19 import org.kuali.rice.core.api.mail.EmailTo;
20 import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader;
21 import org.kuali.rice.kim.impl.identity.type.EntityTypeContactInfoBo;
22 import org.kuali.rice.krad.service.BusinessObjectService;
23 import org.kuali.rice.krad.service.KRADServiceLocator;
24
25 import java.sql.Timestamp;
26 import java.util.*;
27
28
29
30
31 public abstract class LoanNoticesExecutor extends NoticesExecutor {
32
33 private static final Logger LOG = Logger.getLogger(LoanNoticesExecutor.class);
34 protected List<OleLoanDocument> loanDocuments;
35 protected Map<String,String> fieldLabelMap = new HashMap<String,String>();
36
37 public LoanNoticesExecutor(List<OleLoanDocument> loanDocuments) {
38 this.loanDocuments = loanDocuments;
39 }
40
41 @Override
42 public void run() {
43 LOG.info("NoticesExecutor thread id---->"+Thread.currentThread().getId()+"current thread---->"+Thread.currentThread());
44
45
46 preProcess(loanDocuments);
47
48 populateFieldLabelMapping();
49
50 String mailContent = generateMailContent(loanDocuments);
51
52 List<OLEDeliverNotice> oleDeliverNotices = buildNoticesForDeletion();
53
54 getBusinessObjectService().save(loanDocuments);
55
56 deleteNotices(oleDeliverNotices);
57
58 saveOLEDeliverNoticeHistory(oleDeliverNotices, mailContent);
59
60 sendMail(mailContent);
61
62 postProcess(loanDocuments);
63 }
64
65 public void sendMail(String mailContent) {
66 OlePatronDocument olePatron = loanDocuments.get(0).getOlePatron();
67 try {
68 EntityTypeContactInfoBo entityTypeContactInfoBo = olePatron.getEntity()
69 .getEntityTypeContactInfos().get(0);
70 String emailAddress = getPatronHomeEmailId(entityTypeContactInfoBo) != null ?
71 getPatronHomeEmailId(entityTypeContactInfoBo) : "";
72
73 if (loanDocuments.size() == 1) {
74 sendMailsToPatron(emailAddress, mailContent, loanDocuments.get(0).getItemLocation());
75 } else {
76 sendMailsToPatron(emailAddress, mailContent, null);
77 }
78
79 } catch (Exception e) {
80 e.printStackTrace();
81 }
82 }
83
84 protected abstract void postProcess(List<OleLoanDocument> loanDocuments);
85 protected abstract void preProcess(List<OleLoanDocument> loanDocuments);
86 public abstract List<OLEDeliverNotice> buildNoticesForDeletion();
87 public abstract String generateMailContent(List<OleLoanDocument> oleLoanDocuments);
88 public abstract void populateFieldLabelMapping();
89
90 }