1    package com.instantbank.lettertemplate.control.web.handlers;
2    
3    import java.util.HashMap;
4    import java.util.ArrayList;
5    import java.util.Enumeration;
6    import java.util.Locale;
7    import java.util.Hashtable;
8    import javax.servlet.http.HttpServletRequest;
9    import javax.servlet.ServletContext;
10   
11   import oracle.xml.parser.v2.*;
12   import org.w3c.dom.*;
13   import org.xml.sax.*;
14   
15   import com.instantbank.lettertemplate.control.event.PreviewPrintEvent;
16   import com.instantbank.lettertemplate.control.util.JSPUtil;
17   import com.instantbank.lettertemplate.control.util.WebKeys;
18   import com.instantbank.common.utilcomponents.Debug;
19   import com.instantbank.common.utilcomponents.CommonUtil;
20   import com.instantbank.common.utilcomponents.LetterTemplateExceptionMessage;
21   import com.instantbank.lettertemplate.control.LetterTemplateEventException;
22   import com.instantbank.lettertemplate.control.event.LetterTemplateEvent;
23   
24   /**
25    *  Preview/Print Letter usecase: handler of user requests in the Application
26    *  layer
27    *
28    * @author Instant-bank (Jorge Cardenas)
29    * @created August 2002
30    */
31   public class PreviewPrintHandler extends RequestHandlerSupport {
32   
33     private Debug debug = null;
34     ServletContext context;
35     private boolean gotoDB;
36   
37   
38     /**
39      *  principal method that process a user request instantiating a
40      *  PreviewPrintEvent with the user request data
41      *
42      * @param request of MainServlet
43      * @param context of MainServlet
44      * @return TemplatesEvent with the user request data
45      * @exception LetterTemplateEventException
46      */
47     public LetterTemplateEvent processRequest(HttpServletRequest request,
48                                               ServletContext context)
49        throws LetterTemplateEventException {
50       debug = new Debug();
51       debug.setDebugginOn(true);
52       debug.setPreMessage("** PreviewPrintHandler-application tier: ");
53   
54       gotoDB = true;
55   
56       this.context = context;
57       String action = request.getParameter("action");
58       debug.println("Creation of an PreviewPrintEvent Event; "
59         + "PreviewPrintEvent (web): action=" + action);
60   
61       String companyId = (String)request.getSession()
62         .getAttribute(WebKeys.CompanyId);
63   
64       Hashtable templateTable = CommonUtil.getWebContextVariable
65         (context, WebKeys.TemplatesTable);
66       Object listTemplates = templateTable.get(companyId);
67   
68       if((listTemplates != null && !listTemplates.equals(""))) {
69         gotoDB = false;
70       }
71   
72       if(action == null) {
73         throw new LetterTemplateEventException
74           (LetterTemplateExceptionMessage.SERVICE_NOT_SELECTED);
75       }
76       else if(action.equals("listTemplates")) {
77         return createListTemplatesPreviewEvent(request);
78       }
79       return null;
80     }
81   
82   
83     /**
84      *  method for instantiating a PreviewPrintEvent demanding a service of getting
85      *  the templates list
86      *
87      * @param request of MainServlet
88      * @return PreviewPrintEvent with the user request data
89      * @exception LetterTemplateEventException
90      */
91     private LetterTemplateEvent createListTemplatesPreviewEvent
92       (HttpServletRequest request)
93        throws LetterTemplateEventException {
94   
95       try {
96         if(!gotoDB) {
97           request.setAttribute(WebKeys.ExistsTemplatesList, "true");
98           return null;
99         }
100        // instantiating PreviewPrintEvent:
101        PreviewPrintEvent event
102           = new PreviewPrintEvent
103          (PreviewPrintEvent.LIST_TEMPLATES_PREVIEW,
104          (String)request.getSession()
105          .getAttribute(WebKeys.CompanyId),
106          (Long)request.getSession().
107          getAttribute(WebKeys.UserId));
108  
109        request.setAttribute(WebKeys.PreviewPrintEvent, event);
110        return event;
111      }
112      catch(Exception e) {
113        throw new LetterTemplateEventException
114          (LetterTemplateExceptionMessage.PROBLEM_PARSING + e.getMessage()
115          + LetterTemplateExceptionMessage.RETRY);
116      }
117    }
118  
119  }
120  
121