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

📄 deliveryprotocolhandler.java

📁 J2ME MIDP_Example_Applications
💻 JAVA
📖 第 1 页 / 共 2 页
字号:


    private void handleSetStatusRequest(HttpServletRequest request,
                                        ValueParser parser,
                                        ValueGenerator generator)
    {
        try
        {
            HttpSession session = request.getSession(false);
            if (session != null)
            {
               String courierName = (String)session.getAttribute("courierName");
               if (courierName != null)
               {
                   DeliveryOrder currentJob =
                       deliveryOrderDatabase.getExistingJob(courierName);

                   String currentId;
                   String currentStatus;
                   if (currentJob != null)
                   {
                       currentId = currentJob.getId();
                       currentStatus = currentJob.getStatus();
                   }
                   else
                   {
                       currentId = "";
                       currentStatus = "none";
                   }

                   String newId = getStringValue(parser);
                   String newStatus = getStringValue(parser);
                   String newNote = getStringValue(parser);

                   if (currentId.equals(newId))
                   {
                       if (currentStatus.equals(DeliveryOrder.OPENED))
                       {
                           if (newStatus.equals(DeliveryOrder.ASSIGNED) ||
                               newStatus.equals(DeliveryOrder.OPENED))
                           {
                               currentJob.setStatus(newStatus);
                               if (newNote != null)
                               {
                                   currentJob.setNote(newNote);
                               }
                               setStatusOK(generator, currentId, newStatus);
                           }
                           else
                           {
                               generateErrorResponse(
                                   generator,
                                   "setStatus-error",
                                   "Invalid status change"
                               );
                           }
                       }
                       else if (currentStatus.equals(DeliveryOrder.ASSIGNED))
                       {
                           if (newStatus.equals(DeliveryOrder.OPENED) ||
                               newStatus.equals(DeliveryOrder.SENDERDOESNOTEXIST) ||
                               newStatus.equals(DeliveryOrder.PICKEDUP)
                              )
                           {
                               if (newStatus.equals(DeliveryOrder.OPENED))
                               {
                                   // Courier rejected assigned job before
                                   // picking up package. Un-assign job.
                                   currentJob.setCourierName("");
                               }
                               else if (newNote != null)
                               {
                                   currentJob.setNote(newNote);
                               }
                               currentJob.setStatus(newStatus);
                               setStatusOK(generator, currentId, newStatus);
                           }
                           else
                           {
                               generateErrorResponse(
                                   generator,
                                   "setStatus-error",
                                   "Invalid status change"
                               );
                           }
                       }
                       else if (currentStatus.equals(DeliveryOrder.PICKEDUP))
                       {
                           if (newStatus.equals(DeliveryOrder.COMPLETED) ||
                             newStatus.equals(DeliveryOrder.RETURNEDTOSENDER) ||
                             newStatus.equals(DeliveryOrder.COURIERCANCELLED))
                           {
                               currentJob.setStatus(newStatus);
                               if (newNote != null)
                               {
                                   currentJob.setNote(newNote);
                               }
                               setStatusOK(generator, currentId, newStatus);
                           }
                           else
                           {
                               generateErrorResponse(
                                   generator,
                                   "setStatus-error",
                                   "Invalid status change"
                               );
                           }
                       }
                       else if (currentStatus.equals(DeliveryOrder.COURIERCANCELLED))
                       {
                           if (newStatus.equals(DeliveryOrder.RETURNEDTOSENDER) ||
                               newStatus.equals(DeliveryOrder.COURIERCANCELLED))
                           {
                               currentJob.setStatus(newStatus);
                               if (newNote != null)
                               {
                                   currentJob.setNote(newNote);
                               }
                               setStatusOK(generator, currentId, newStatus);
                           }
                           else
                           {
                               generateErrorResponse(
                                   generator,
                                   "setStatus-error",
                                   "Invalid status change"
                               );
                           }
                       }
                       else
                       {
                           generateErrorResponse(
                               generator,
                               "setStatus-error",
                               "Unknown status"
                           );
                       }
                   }
                   else
                   {
                       // Shared state between local servlet database
                       // and remote client is corrupted ?

                       generateErrorResponse(
                           generator,
                           "setStatus-error",
                           "invalid id"
                       );
                   }
               }
               else
               {
                   generateErrorResponse(
                       generator,
                       "setStatus-error",
                       "Unknown courier - please login again"
                   );
               }
            }
            else
            {
               generateErrorResponse(
                  generator,
                  "setStatus-error",
                  "invalid session"
               );
            }
        }
        catch (InvalidRequestException e)
        {
            generateErrorResponse(generator, "setStatus-error", e.getMessage());
        }
    }


    private void setStatusOK(ValueGenerator generator, String id, String status)
    {
        generator.addValue("setStatus-OK");
        generator.addValue(id);
        generator.addValue(status);
    }


    private void handleLogoutRequest(HttpServletRequest request,
                                     ValueParser parser,
                                     ValueGenerator generator)
    {
        HttpSession session = request.getSession(false);
        if (session != null)
        {
            generator.addValue("logout-OK");
            session.invalidate();   // HTTP Session destroyed
        }
        else
        {
            generateErrorResponse(
                generator,
                "logout-error",
                "invalid session"
            );
        }
    }


    private String getStringValue(ValueParser parser)
        throws InvalidRequestException
    {
        String value = parser.getNextValue();
        if (value == null)
        {
            throw new InvalidRequestException("Missing value");
        }
        return value;
    }


    private int getIntValue(ValueParser parser)
        throws InvalidRequestException
    {
        String valueStr = getStringValue(parser);
        int value;
        try
        {
            value = Integer.parseInt(valueStr);
        }
        catch (NumberFormatException e)
        {
            throw new InvalidRequestException("Value \"" + valueStr +
                                              "\" is not a valid integer");
        }                             
        return value;
    }


    private boolean getBooleanValue(ValueParser parser)
        throws InvalidRequestException
    {
        String valueStr = getStringValue(parser);
        boolean value = false;
        if (valueStr.equals("true"))
        {
            value = true;
        }
        else if (valueStr.equals("false"))
        {
            value = false;
        }
        else
        {
            throw new InvalidRequestException("Value \"" + valueStr +
                                              "\" is not a valid boolean");
        }
        return value;
    }


    private void addIntValue(ValueGenerator generator, int value)
    {
        generator.addValue(Integer.toString(value));
    }
}

⌨️ 快捷键说明

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