View Javadoc

1   package org.kuali.ole.deliver.batch;
2   
3   import org.kuali.ole.OLEConstants;
4   import org.kuali.ole.deliver.loan.LoanProcessor;
5   
6   import java.util.ArrayList;
7   import java.util.HashMap;
8   import java.util.List;
9   import java.util.Map;
10  
11  /**
12   * Created with IntelliJ IDEA.
13   * User: ?
14   * Date: 12/31/12
15   * Time: 5:30 PM
16   * To change this template use File | Settings | File Templates.
17   */
18  public class OleDeliverBatchServiceImpl {
19  
20  
21  
22      private void getHTMLHeader(StringBuffer stringBuffer,String title) throws Exception{
23          stringBuffer.append("<HTML>");
24          stringBuffer.append("<TITLE>"+title+"</TITLE>");
25          stringBuffer.append("<HEAD></HEAD>");
26          stringBuffer.append("<BODY>");
27      }
28  
29      private void getTemplateHeader(OleNoticeBo noticeBo,StringBuffer stringBuffer)throws Exception{
30  
31          stringBuffer.append("<TABLE></BR></BR>");
32          stringBuffer.append("<TR><TD>Patron Name :</TD><TD>"+noticeBo.getPatronName()+"</TD></TR>");
33          stringBuffer.append("<TR><TD>Address :</TD><TD>"+noticeBo.getPatronAddress()+"</TD></TR>");
34          stringBuffer.append("<TR><TD>EMAIL :</TD><TD>"+noticeBo.getPatronEmailAddress()+"</TD></TR>");
35          stringBuffer.append("<TR><TD>Phone Number :</TD><TD>"+noticeBo.getPatronPhoneNumber()+"</TD></TR>");
36          stringBuffer.append("</TABLE>");
37      }
38  
39      private void getTemplateBody(StringBuffer stringBuffer,String title,String body) throws Exception{
40          stringBuffer.append("<TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>");
41          stringBuffer.append("<TABLE width=\"100%\">");
42          stringBuffer.append("<TR><TD><CENTER>"+ title+"</CENTER></TD></TR>");
43          stringBuffer.append("<TR><TD><p>"+body+"</p></TD></TR>");
44          stringBuffer.append("<TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR></TABLE>");
45      }
46  
47      private void getTemplateFooter(OleNoticeBo noticeBo,StringBuffer stringBuffer) throws Exception{
48          stringBuffer.append("<TABLE><TR><TD>Circulation Location/Library Name :</TD><TD>"+noticeBo.getCirculationDeskName()+"</TD><TD>&nbsp;</TD><TD>Title :</TD><TD>"+noticeBo.getTitle()+"</TD></TR>");
49          stringBuffer.append("<TR><TD>Address :</TD><TD>"+noticeBo.getCirculationDeskAddress()+"</TD><TD>&nbsp;</TD><TD>Author :</TD><TD>"+noticeBo.getAuthor()+"</TD></TR>");
50          stringBuffer.append("<TR><TD>Email :</TD><TD>"+noticeBo.getCirculationDeskEmailAddress()+"</TD><TD>&nbsp;</TD><TD>Volume/Issue/Copy Number :</TD><TD>"+noticeBo.getVolumeNumber()+"</TD></TR>");
51          stringBuffer.append("<TR><TD>Phone Number :</TD><TD>"+noticeBo.getCirculationDeskPhoneNumber()+"</TD><TD>&nbsp;</TD><TD>Library shelving location :</TD><TD>"+noticeBo.getItemShelvingLocation()+"</TD></TR>");
52          stringBuffer.append("<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>Call Number :</TD><TD>"+noticeBo.getItemCallNumber()+"</TD></TR>");
53          if(noticeBo.getOleItem() != null){
54              stringBuffer.append("<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>Item Barcode :</TD><TD>"+noticeBo.getOleItem().getBarcodeARSL()+"</TD></TR>");
55          }
56          if(noticeBo.getNoticeName().equalsIgnoreCase("Overdue")){
57              stringBuffer.append("<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>Item was due :</TD><TD>"+noticeBo.getDueDate()+"</TD></TR>");
58          }
59          if(noticeBo.getNoticeName().equalsIgnoreCase("Recall")){
60              stringBuffer.append("<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>Original due date:</TD><TD>"+noticeBo.getOriginalDueDate()+"</TD></TR>");
61              stringBuffer.append("<TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>New due date:</TD><TD>"+noticeBo.getNewDueDate()+"</TD></TR>");
62          }
63          stringBuffer.append("<TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>");
64      }
65  
66      private void getPickUpLocationTemplate(OleNoticeBo noticeBo,StringBuffer stringBuffer)throws Exception{
67  
68          stringBuffer.append("<TR><TD>Pick up location :</TD><TD></TD></TR>");
69          stringBuffer.append("<TR><TD>Circulation Location/Library Name :</TD><TD>"+noticeBo.getCirculationDeskName()+"</TD></TR>");
70          stringBuffer.append("<TR><TD>Address :</TD><TD>"+noticeBo.getCirculationDeskAddress()+"</TD></TR>");
71          stringBuffer.append("<TR><TD>Email :</TD><TD>"+noticeBo.getCirculationDeskEmailAddress()+"</TD></TR>");
72          stringBuffer.append("<TR><TD>Phone Number :</TD><TD>"+noticeBo.getCirculationDeskPhoneNumber()+"</TD></TR>");
73          stringBuffer.append("<TR><TD>Item will be held until</TD><TD>"+noticeBo.getDueDate()+"</TD></TR>");
74      }
75  
76      private void getHTMLFooter(StringBuffer stringBuffer)throws Exception{
77          stringBuffer.append("</TABLE></BODY></HTML>");
78      }
79  
80      private Map getSMSTemplate(List<OleNoticeBo> noticeBo) throws Exception{
81          List<OleNoticeBo> overDueNoticeList = new ArrayList<OleNoticeBo>();
82          List<OleNoticeBo> onHoldNoticeList = new ArrayList<OleNoticeBo>();
83          List<OleNoticeBo> recallNoticeList = new ArrayList<OleNoticeBo>();
84          List<OleNoticeBo> expiredNoticeList = new ArrayList<OleNoticeBo>();
85          List<OleNoticeBo> expiredRequiredNoticeList = new ArrayList<OleNoticeBo>();
86          Map smsMap = new HashMap();
87          for(int temp=0;temp<noticeBo.size();temp++){
88              if(noticeBo.get(temp).getNoticeName().equalsIgnoreCase(OLEConstants.NOTICE_OVERDUE)){
89                  overDueNoticeList.add(noticeBo.get(temp));
90              }
91              if(noticeBo.get(temp).getNoticeName().equalsIgnoreCase("OnHold")){
92                  onHoldNoticeList.add(noticeBo.get(temp));
93              }
94              if(noticeBo.get(temp).getNoticeName().equalsIgnoreCase("Recall")){
95                  recallNoticeList.add(noticeBo.get(temp));
96              }
97              if(noticeBo.get(temp).getNoticeName().equalsIgnoreCase(OLEConstants.NOTICE_HOLD_COURTESY)){
98                  expiredNoticeList.add(noticeBo.get(temp));
99              }
100             if(noticeBo.get(temp).getNoticeName().equalsIgnoreCase("ExpiredRequired")){
101                 expiredRequiredNoticeList.add(noticeBo.get(temp));
102             }
103         }
104         Map overdue = new HashMap();
105         if(overDueNoticeList!=null && overDueNoticeList.size()>0){
106             overdue = getOverDueList(overdue,overDueNoticeList);
107         }
108         Map hod = new HashMap();
109         if(onHoldNoticeList != null && onHoldNoticeList.size()>0){
110            hod = getHoldList(hod,onHoldNoticeList);
111         }
112         Map recl = new HashMap();
113         if(recallNoticeList != null && recallNoticeList.size()>0){
114            recl = getRecallList(recl,recallNoticeList);
115         }
116         Map exp = new HashMap();
117         if(expiredNoticeList != null && expiredNoticeList.size()>0){
118            exp = getExpiredList(exp,expiredNoticeList);
119         }
120         Map expReq = new HashMap();
121         if(expiredRequiredNoticeList != null && expiredRequiredNoticeList.size()>0){
122             expReq = getExpiredRequiredList(expReq,expiredRequiredNoticeList);
123         }
124 
125         smsMap.put("OVERDUE",overdue);
126         smsMap.put("HOLD",hod);
127         smsMap.put("RECALL",recl);
128         smsMap.put("EXPIRED",exp);
129         smsMap.put("EXPIREDREQ",expReq);
130         return smsMap;
131     }
132 
133     private Map getExpiredRequiredList(Map expReq,List expiredRequiredNoticeList) throws Exception{
134         String smsExpiredReq = "";
135         LoanProcessor loanProcessor = new LoanProcessor();
136         for(int exReq=0;exReq<expiredRequiredNoticeList.size();exReq++){
137             OleNoticeBo oleNoticeBo = (OleNoticeBo)expiredRequiredNoticeList.get(exReq);
138             smsExpiredReq = loanProcessor.getParameter("EXP_REQ_TITLE")+"    "+"Circulation Location/Library Name :"+oleNoticeBo.getCirculationDeskName()+",Address :"+oleNoticeBo.getCirculationDeskAddress()+",Title :"+oleNoticeBo.getTitle()+",Call Number :"+oleNoticeBo.getItemCallNumber()+",Item was due :"+oleNoticeBo.getDueDate();
139             expReq.put(exReq,smsExpiredReq);
140         }
141         return expReq;
142     }
143 
144     private Map getExpiredList(Map expire,List expiredNoticeList) throws Exception{
145         String smsExpire = "";
146         LoanProcessor loanProcessor = new LoanProcessor();
147         for(int exp=0;exp<expiredNoticeList.size();exp++){
148             OleNoticeBo oleNoticeBo = (OleNoticeBo)expiredNoticeList.get(exp);
149             smsExpire = loanProcessor.getParameter("EXPIRED_TITLE")+"    "+"Circulation Location/Library Name :"+oleNoticeBo.getCirculationDeskName()+",Address :"+oleNoticeBo.getCirculationDeskAddress()+",Title :"+oleNoticeBo.getTitle()+",Call Number :"+oleNoticeBo.getItemCallNumber()+",Item was due :"+oleNoticeBo.getDueDate();
150             expire.put(exp,smsExpire);
151         }
152         return expire;
153     }
154 
155     private Map getRecallList(Map rcall,List recallNoticeList) throws Exception{
156         String smsRecall = "";
157         LoanProcessor loanProcessor = new LoanProcessor();
158         for(int recall=0;recall<recallNoticeList.size();recall++){
159             OleNoticeBo oleNoticeBo = (OleNoticeBo)recallNoticeList.get(recall);
160             smsRecall = loanProcessor.getParameter("RECALL_TITLE")+"    "+"Circulation Location/Library Name :"+oleNoticeBo.getCirculationDeskName()+",Address :"+oleNoticeBo.getCirculationDeskAddress()+",Title :"+oleNoticeBo.getTitle()+",Call Number :"+oleNoticeBo.getItemCallNumber()+",Original due date :"+oleNoticeBo.getDueDate()+",New due date: "+oleNoticeBo.getNewDueDate();
161             rcall.put(recall,smsRecall);
162         }
163         return rcall;
164     }
165 
166     private Map getHoldList(Map hod,List onHoldNoticeList) throws Exception{
167         String smsHod = "";
168         LoanProcessor loanProcessor = new LoanProcessor();
169         for(int hold=0;hold<onHoldNoticeList.size();hold++){
170             OleNoticeBo oleNoticeBo = (OleNoticeBo)onHoldNoticeList.get(hold);
171             smsHod = loanProcessor.getParameter("ONHOLD_TITLE")+"    "+"Circulation Location/Library Name :"+oleNoticeBo.getCirculationDeskName()+",Address :"+oleNoticeBo.getCirculationDeskAddress()+",Title :"+oleNoticeBo.getTitle()+",Call Number :"+oleNoticeBo.getItemCallNumber()+",Item will be held until :"+oleNoticeBo.getDueDate()+",Pick up location:"+oleNoticeBo.getCirculationDeskName()+",Pick up location Address :"+oleNoticeBo.getCirculationDeskAddress();
172             hod.put(hold,smsHod);
173         }
174         return hod;
175     }
176 
177 
178 
179     private Map getOverDueList(Map overdue,List overDueNoticeList) throws Exception{
180         String smsDue = "";
181         LoanProcessor loanProcessor = new LoanProcessor();
182         for(int due=0;due<overDueNoticeList.size();due++){
183             OleNoticeBo oleNoticeBo = (OleNoticeBo)overDueNoticeList.get(due);
184             smsDue = loanProcessor.getParameter("OVERDUE_TITLE")+"    "+"Circulation Location/Library Name :"+oleNoticeBo.getCirculationDeskName()+",Address :"+oleNoticeBo.getCirculationDeskAddress()+",Title :"+oleNoticeBo.getTitle()+",Call Number :"+oleNoticeBo.getItemCallNumber()+",Item was due :"+oleNoticeBo.getDueDate();
185             overdue.put(due, smsDue);
186         }
187 
188         return overdue;
189     }
190 
191     private List getTemplate(List<OleNoticeBo> noticeBo) throws Exception{
192         StringBuffer stringBuffer = new StringBuffer();
193 
194         List templateForNoticeList = new ArrayList();
195         List<OleNoticeBo> overDueNoticeList = new ArrayList<OleNoticeBo>();
196         List<OleNoticeBo> onHoldNoticeList = new ArrayList<OleNoticeBo>();
197         List<OleNoticeBo> recallNoticeList = new ArrayList<OleNoticeBo>();
198         List<OleNoticeBo> expiredNoticeList = new ArrayList<OleNoticeBo>();
199         List<OleNoticeBo> expiredRequiredNoticeList = new ArrayList<OleNoticeBo>();
200 
201         for(int temp=0;temp<noticeBo.size();temp++){
202             if(noticeBo.get(temp).getNoticeName().equalsIgnoreCase(OLEConstants.NOTICE_OVERDUE)){
203                 overDueNoticeList.add(noticeBo.get(temp));
204             }
205             if(noticeBo.get(temp).getNoticeName().equalsIgnoreCase("OnHold")){
206                 onHoldNoticeList.add(noticeBo.get(temp));
207             }
208             if(noticeBo.get(temp).getNoticeName().equalsIgnoreCase("Recall")){
209                 recallNoticeList.add(noticeBo.get(temp));
210             }
211             if(noticeBo.get(temp).getNoticeName().equalsIgnoreCase(OLEConstants.NOTICE_HOLD_COURTESY)){
212                 expiredNoticeList.add(noticeBo.get(temp));
213             }
214             if(noticeBo.get(temp).getNoticeName().equalsIgnoreCase("ExpiredRequired")){
215                 expiredRequiredNoticeList.add(noticeBo.get(temp));
216             }
217         }
218         LoanProcessor loanProcessor = new LoanProcessor();
219 
220         if(overDueNoticeList!=null && overDueNoticeList.size()>0){
221             getHTMLHeader(stringBuffer,loanProcessor.getParameter("OVERDUE_TITLE"));
222             getTemplateHeader(overDueNoticeList.get(0), stringBuffer);
223             getTemplateBody(stringBuffer,loanProcessor.getParameter("OVERDUE_TITLE"),loanProcessor.getParameter("OVERDUE_BODY"));
224             for(int overdue=0;overdue<overDueNoticeList.size();overdue++){
225                 getTemplateFooter(noticeBo.get(overdue),stringBuffer);
226             }
227             getHTMLFooter(stringBuffer);
228         }
229 
230         if(onHoldNoticeList != null && onHoldNoticeList.size()>0){
231             getHTMLHeader(stringBuffer,loanProcessor.getParameter("ONHOLD_TITLE"));
232             getTemplateHeader(onHoldNoticeList.get(0), stringBuffer);
233             getTemplateBody(stringBuffer,loanProcessor.getParameter("ONHOLD_TITLE"),loanProcessor.getParameter("ONHOLD_BODY"));
234             for(int onHold=0;onHold<onHoldNoticeList.size();onHold++){
235                 getTemplateFooter(noticeBo.get(onHold),stringBuffer);
236                 getPickUpLocationTemplate(noticeBo.get(onHold),stringBuffer);
237             }
238             getHTMLFooter(stringBuffer);
239         }
240 
241         if(recallNoticeList != null && recallNoticeList.size()>0){
242             getHTMLHeader(stringBuffer,loanProcessor.getParameter("RECALL_TITLE"));
243             getTemplateHeader(recallNoticeList.get(0), stringBuffer);
244             getTemplateBody(stringBuffer,loanProcessor.getParameter("RECALL_TITLE"),loanProcessor.getParameter("RECALL_BODY"));
245             for(int recall=0;recall<recallNoticeList.size();recall++){
246                 getTemplateFooter(noticeBo.get(recall),stringBuffer);
247             }
248             getHTMLFooter(stringBuffer);
249         }
250 
251         if(expiredNoticeList != null && expiredNoticeList.size()>0){
252             getHTMLHeader(stringBuffer,loanProcessor.getParameter("EXPIRED_TITLE"));
253             getTemplateHeader(expiredNoticeList.get(0), stringBuffer);
254             getTemplateBody(stringBuffer,loanProcessor.getParameter("EXPIRED_TITLE"),loanProcessor.getParameter("EXPIRED_BODY"));
255             for(int exp=0;exp<expiredNoticeList.size();exp++){
256                 getTemplateFooter(noticeBo.get(exp),stringBuffer);
257             }
258             getHTMLFooter(stringBuffer);
259         }
260 
261         if(expiredRequiredNoticeList != null && expiredRequiredNoticeList.size()>0){
262             getHTMLHeader(stringBuffer,loanProcessor.getParameter("EXP_REQ_TITLE"));
263             getTemplateHeader(expiredRequiredNoticeList.get(0), stringBuffer);
264             getTemplateBody(stringBuffer,loanProcessor.getParameter("EXP_REQ_TITLE"),loanProcessor.getParameter("EXP_REQ_BODY"));
265             for(int exReq=0;exReq<expiredRequiredNoticeList.size();exReq++){
266                 getTemplateFooter(noticeBo.get(exReq),stringBuffer);
267             }
268             getHTMLFooter(stringBuffer);
269         }
270 
271 
272         templateForNoticeList.add(stringBuffer);
273 
274         return templateForNoticeList;
275     }
276 
277 
278 
279     public List getNoticeForPatron(List<OleNoticeBo> noticeBo) throws Exception{
280         return getTemplate(noticeBo);
281 
282     }
283 
284     public Map getSMSForPatron(List<OleNoticeBo> noticeBo) throws Exception {
285         return getSMSTemplate(noticeBo);
286     }
287 
288 }