1    package com.instantbank.collections.commonQueuing.web;
2    
3    import javax.ejb.FinderException;
4    import java.io.IOException;
5    import java.io.OutputStreamWriter;
6    import java.io.PrintWriter;
7    import javax.servlet.RequestDispatcher;
8    import javax.servlet.ServletConfig;
9    import javax.servlet.ServletContext;
10   import javax.servlet.ServletException;
11   import javax.servlet.http.HttpServlet;
12   import javax.servlet.http.HttpServletRequest;
13   import javax.servlet.http.HttpServletResponse;
14   import javax.servlet.http.HttpSession;
15   import com.instantbank.collections.commonQueuing.ejb.QueueServices;
16   import com.instantbank.collections.commonQueuing.ejb.QueueServicesHome;
17   import com.instantbank.collections.util.FilterChain;
18   import com.instantbank.collections.util.InstantbankException;
19   import com.instantbank.collections.util.ServiceLocator;
20   import com.instantbank.collections.util.StringFormat;
21   
22   public class SetUpQueuesController extends HttpServlet {
23     private String debug = "";
24     private QueueServices services;
25     private HttpSession session;
26   
27   
28     public void init(ServletConfig config) throws ServletException {
29       super.init(config);
30       try {
31         QueueServicesHome home = (QueueServicesHome)ServiceLocator.instance().createEJB("QueueServicesHome", QueueServicesHome.class, false);
32         services = home.create();
33       }
34       catch(Exception e) {}
35     }
36   
37   
38     public void dispatch(HttpServletRequest request, HttpServletResponse response, String action) throws ServletException, IOException, FinderException {
39       String useCase = "";
40   
41       if(action.equals("preview")) {
42         useCase = "PreviewWorkGenerated";
43       }
44       else if(action.equals("generate")) {
45         useCase = "GenerateWorkAdHoc";
46       }
47       else if(action.equals("distribute")) {
48         useCase = "DistributeWorkAdHoc";
49       }
50       ServletContext sc = getServletConfig().getServletContext();
51       RequestDispatcher rd = sc.getRequestDispatcher("/commonQueuing_web/CommonQueuingDispatcher.jsp?useCase=" + useCase);
52       rd.forward(request, response);
53     }
54   
55   
56     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
57       doPost(request, response);
58     }
59   
60   
61     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
62       String action = "";
63       com.instantbank.collections.util.FilterChain chain;
64   
65       try {
66         action = request.getParameter("action");
67         session = request.getSession(false);
68         session.setAttribute("hasException", "0");
69         try {
70           chain = new com.instantbank.collections.util.FilterChain(true, getServletConfig().getServletContext());
71           if(chain.processFilter(request, response)) {
72             return;
73           }
74           if(action.equals("initialize")) {
75             initialize(request, response);
76           }
77           else if(action.equals("getQueueList")) {
78             getQueueList(request, response);
79           }
80           else if(action.equals("preview")) {
81             dispatch(request, response, action);
82           }
83           else if(action.equals("generate")) {
84             dispatch(request, response, action);
85           }
86           else if(action.equals("distribute")) {
87             dispatch(request, response, action);
88           }
89           else if(action.equals("openSelectQueue")) {
90             openSelectQueue(request, response);
91           }
92           else if(action.equals("save")) {
93             saveQueue(request, response);
94           }
95           else {
96             throw new InstantbankException("112001", "Action " + action + " not supported");
97           }
98         }
99         catch(Exception e) {
100          throw new InstantbankException(e, "112002", "Failed to execute controller action " + action + " (" + debug + ")");
101        }
102      }
103      catch(InstantbankException e) {
104        session.setAttribute("hasException", "1");
105        session.setAttribute("Exception", e);
106        if(response.isCommitted()) {
107          return;
108        }
109        response.sendRedirect("../main_web/ControllerError.jsp?showTechnical=0");
110      }
111    }
112  
113  
114    public void getQueueList(HttpServletRequest request, HttpServletResponse response) throws ServletException, InstantbankException, IOException, FinderException {
115      String responseXml = "";
116  
117      String category = request.getParameter("category");
118      Long queueType = new Long(request.getParameter("typeId"));
119      String queueName = request.getParameter("name");
120      Long rowNum = new Long(request.getParameter("rownum"));
121      Long companyId = (Long)session.getAttribute("companyId");
122      String objectType = (String)request.getParameter("objectType");
123      responseXml = StringFormat.cleanXml(services.getQueues(companyId, objectType, category, queueType, queueName, rowNum.longValue(), 10));
124      response.setContentType("text/html");
125      OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream());
126      PrintWriter out = new PrintWriter(osw);
127      out.println("<script>");
128      out.print("top.xml='");
129      out.print(responseXml);
130      out.println("';");
131      out.println("top.showQueues();");
132      out.println("</script>");
133      out.close();
134    }
135  
136  
137    private void initialize(HttpServletRequest request, HttpServletResponse response) throws ServletException, InstantbankException, IOException, FinderException {
138      Long companyId = (Long)session.getAttribute("companyId");
139      Long queueId;
140      String xml = null;
141  
142      queueId = new Long(request.getParameter("queueId"));
143      if(queueId.longValue() == 0) {
144        xml = services.newQueue();
145      }
146      else {
147        xml = services.getQueue(queueId, companyId);
148      }
149      request.setAttribute("data", xml);
150  
151      ServletContext sc = getServletConfig().getServletContext();
152      RequestDispatcher rd = sc.getRequestDispatcher("/commonQueuing_web/QueueView.jsp?useCase=SetUpQueues&title=Set Up Queues");
153      rd.forward(request, response);
154    }
155  
156  
157    public void openSelectQueue(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, FinderException {
158      ServletContext sc = getServletConfig().getServletContext();
159      RequestDispatcher rd = sc.getRequestDispatcher("/commonQueuing_web/SelectQueueListView.jsp?useCase=OpenSelectQueue&title=Select a Queue");
160      rd.forward(request, response);
161    }
162  
163  
164    public void saveQueue(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, FinderException {
165      Long companyId = (Long)session.getAttribute("companyId");
166      String data = request.getParameter("data");
167      String objectType = (String)request.getParameter("objectType");
168      Long queueId = new Long(0);
169      Long userId = (Long)session.getAttribute("userId");
170      Long validQueueId = new Long(0);
171      String xml = "";
172  
173      try {
174        queueId = services.saveQueue(companyId, userId, data);
175        xml = services.getQueue(queueId, companyId);
176        request.setAttribute("data", xml);
177        validQueueId = queueId;
178      }
179      catch(Exception e) {
180        session.setAttribute("hasException", "1");
181        session.setAttribute("Exception", e);
182        request.setAttribute("data", data);
183      }
184      finally {
185        ServletContext sc = getServletConfig().getServletContext();
186        RequestDispatcher rd = sc.getRequestDispatcher("/commonQueuing_web/QueueView.jsp?useCase=SetUpQueues&title=Set Up Queues");
187        request.setAttribute("Reset", "SetUpQueuesController?action=initialize&objectType=" + objectType + "&queueId=" + validQueueId);
188        rd.forward(request, response);
189      }
190    }
191  
192  
193    public String getServletInfo() {
194      return "com.instantbank.collections.commonQueuing.web.SetUpQueuesController Information";
195    }
196  }
197  
198