⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extracttimeentryservlet.java

📁 考勤管理系统源码
💻 JAVA
字号:
package com.wiley.compBooks.EJwithUML.BillingSystemInterface;

import javax.servlet.http.*;
import javax.servlet.*;
import javax.naming.*;
import javax.ejb.*;
import java.rmi.*;
import javax.rmi.PortableRemoteObject;
import java.io.IOException;
import java.util.*;
import org.xml.sax.SAXException;
import com.wiley.compBooks.EJwithUML.TimeCardWorkflow.ExtractTimeEntriesWorkflow;
import com.wiley.compBooks.EJwithUML.TimeCardWorkflow.ExtractTimeEntriesWorkflowHome;
import com.wiley.compBooks.EJwithUML.Dtos.ExtractCriteriaDTO;
import com.wiley.compBooks.EJwithUML.Dtos.TimeEntryReportDTO;
import com.wiley.compBooks.EJwithUML.Dtos.TimeEntryDTO;
import com.wiley.compBooks.EJwithUML.Base.DateUtil;
import com.wiley.compBooks.EJwithUML.Base.ApplicationExceptions.ApplicationException;
import com.wiley.compBooks.EJwithUML.Base.EjbUtil.EjbReferenceNames;

/**
 * The ExtractTimeEntryServlet uses the ExtractTimeEntriesWorkflow to service
 * the external client like the Billing System. It accepts SOAP/XML request and
 * returns SOAP/XML response.
 */
public class ExtractTimeEntryServlet extends HttpServlet
{
  private XMLRequestFilter filter = new XMLRequestFilter();
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException
  {
    doPost(request, response);
  }

  /**
   * Overrides method from HttpServlet.  doPost is called by the servlet engine.
   */
  public void doPost(HttpServletRequest request, HttpServletResponse response)
                                        throws ServletException, IOException
  {
    StringBuffer responseBuffer = new StringBuffer(5000);
    responseBuffer.append("<env:Envelope xmlns:env=\"http://www.w3c.org/2002/06/soap-envelope\""
                  + " xmlns:tcapp=\"http://com.wiley.compBooks/EJwithUML2e\">");
    buildHeaderTag(responseBuffer);
    try
    {
      HashMap requestData = filter.filter(request);
      // obtain remote reference to ExtractTimeEntriesWorkflow session bean
      Context initial = new InitialContext();
      Object rtwobjref = initial.lookup(EjbReferenceNames.EXTRACT_TIME_ENTRY_WORKFLOW_HOME);
      ExtractTimeEntriesWorkflowHome home = (ExtractTimeEntriesWorkflowHome)
          PortableRemoteObject.narrow(rtwobjref,ExtractTimeEntriesWorkflowHome.class);
      ExtractTimeEntriesWorkflow rtw = home.create();
      Date startDate = DateUtil.createDate(
      (String)requestData.get(XmlTimeEntryReportRequestTags.START_DATE));
      Date endDate = DateUtil.createDate(
      (String)requestData.get(XmlTimeEntryReportRequestTags.END_DATE));
      ExtractCriteriaDTO criteria = new ExtractCriteriaDTO((String)requestData.get(
                              XmlTimeEntryReportRequestTags.CLIENT_NAME),
                              startDate,
                              endDate);

      ArrayList users = (ArrayList)requestData.get(
                                  XmlTimeEntryReportRequestTags.USERS);
      if (users != null)
      {
        criteria.setUsers(users);
      }
      HashMap reports = rtw.extractForCriteria(criteria);
      buildBodyTag(responseBuffer, reports, users);
    }
    catch (Exception e)
    {
      System.out.println("e= " +e);
      buildFaultTag(responseBuffer, e);
    }
    responseBuffer.append("</env:Envelope>");
    response.getWriter().print(responseBuffer.toString());
    response.getWriter().flush();
    response.getWriter().close();
  }

  private void buildFaultTag(StringBuffer response, Exception exp)
  {
    response.append("<env:Fault><env:Code><env:Value>");
    if (exp instanceof IOException ||
        exp instanceof SAXException)
    {
       response.append("env:Sender");
    }
    else
    {
      response.append("env:Receiver");
    }
    response.append("</env:Value><env:Subcode><env:Value>" +
             ((ApplicationException)exp).getOrigin() +
             "</env:Value></env:Subcode></env:Code><env:Reason>" +
              exp.getClass().getName() +
             "</env:Reason><env:Detail>" +
             exp.toString() +
             "</env:Detail></env:Fault>");
  }

  private void buildHeaderTag(StringBuffer response)
  {
    response.append(
    "<env:Header xmlns:tcapp=\"http://com.wiley.compBooks/EJwithUML2e\">" +
    "<tcapp:Responder env:mustUnderstand=\"1\">");
    response.append("TimecardApplication</tcapp:Responder></env:Header>");
  }

  private void buildBodyTag(StringBuffer response, HashMap responseData,
                            ArrayList users)
  {
    response.append("<env:Body><tcapp:TimeEntries>");
    buildUserTags(response, responseData);
    if (users.size() > responseData.size())
    {
      //some of the users do not exist
      ArrayList userNotInDatabase = new ArrayList();
      for(int i=0; i < users.size(); i++)
      {
        if (!responseData.containsKey((String)users.get(i)))
        {
          userNotInDatabase.add(users.get(i));
        }
      }
      buildUserNotInDatabaseTag(response, userNotInDatabase);
    }
    response.append("</tcapp:TimeEntries></env:Body>");
  }

  private void buildUserTags(StringBuffer response, HashMap responseData)
  {
    Iterator userIterator = responseData.entrySet().iterator();
    while(userIterator.hasNext())
    {
      TimeEntryReportDTO userData = (TimeEntryReportDTO)((Map.Entry)
                                               userIterator.next()).getValue();
      response.append("<tcapp:User><tcapp:Name>"+userData.getName()+
                      "</tcapp:Name>");
      buildTimeEntryTags(response, userData.getTimeEntries());
      response.append("</tcapp:User>");
    }
  }

  private void buildTimeEntryTags(StringBuffer response, Iterator timeentries)
  {
    while(timeentries.hasNext())
    {
      TimeEntryDTO timeentryData = (TimeEntryDTO)timeentries.next();
      response.append("<tcapp:TimeEntry><tcapp:Project>"+
                      timeentryData.getProjectName()+"</tcapp:Project>");
      response.append("<tcapp:ChargeCode>"+
                     timeentryData.getChargeCodeName()+"</tcapp:ChargeCode>");
      response.append("<tcapp:Date>"+
                     DateUtil.toDateString(timeentryData.getDate())+"</tcapp:Date>");
      response.append("<tcapp:Hours>"+
                     timeentryData.getHours()+"</tcapp:Hours></tcapp:TimeEntry>");
    }
  }

 private void buildUserNotInDatabaseTag(StringBuffer response, ArrayList users)
 {
   response.append("<tcapp:UserNotInDatabase>");
   for(int i=0; i < users.size(); i++)
   {
     response.append("<tcapp:UserName>"+users.get(i)+
                     "</tcapp:UserName>");
   }
   response.append("</tcapp:UserNotInDatabase>");
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -