View Javadoc
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   * Created by maheswarang on 7/6/15.
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          //1. Pre process
46          preProcess(loanDocuments);
47          //2. building FieldLabel Map
48          populateFieldLabelMapping();
49          //3. generate email content
50          String mailContent = generateMailContent(loanDocuments);
51          //4. Generate notices
52          List<OLEDeliverNotice> oleDeliverNotices = buildNoticesForDeletion();
53          //5. Save loan document
54          getBusinessObjectService().save(loanDocuments);
55          //6. Delete notices
56          deleteNotices(oleDeliverNotices);
57          //7. update notice history
58          saveOLEDeliverNoticeHistory(oleDeliverNotices, mailContent);
59          //8. send mail
60          sendMail(mailContent);
61          //9 Post process
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  }