Beispiel #1
0
  @Override
  public void entryOperationFinished(
      Notification source, Operation op, List<? extends Serializable> entries) {

    for (Serializable entry : entries) {

      if (op.equals(Operation.DELETE)) { // waiter deletes

        Order order = (Order) entry;
        if (gui != null) {

          if (order instanceof GroupOrder) {
            order.setStatus(Order.Status.delivered);
          } else {

            order.setStatus(Order.Status.delivering);
          }
          gui.addOrUpdateOrder(order);
        }
        if (group != null) {
          if (order instanceof GroupOrder) {
            if (group.getGroupData().equals(((GroupOrder) order).getGroupData())) {
              group.notifyPaying();
            }
          }
        }
        if (groupView != null) {

          CustomerData g = order.getCustomerData();
          if (order instanceof GroupOrder) {
            g.setStatus(CustomerData.Status.eating);
          }

          groupView.updateCustomerData(g);
        }

      } else if (op.equals(Operation.TAKE)) { // load balancer takes
        Order order = (Order) entry;
        if (gui != null) {
          order.setStatus(Order.Status.outsourced);
          gui.addOrUpdateOrder(order);
        }
        if (groupView != null) {

          CustomerData customerData = order.getCustomerData();
          String newBranch;
          if (customerData.getBranch().startsWith("1")) {
            newBranch = "2";

          } else {
            newBranch = "1";
          }
          customerData.setBranch(newBranch + " (moved)");
          groupView.updateCustomerData(customerData);
        }

      } else if (op.equals(Operation.WRITE)) {

        Entry ent = (Entry) entry;
        Order g = (Order) ent.getValue();
        if (gui != null) {
          gui.addOrUpdateOrder(g);
        }
        if (loadBalancer != null) {
          loadBalancer.balance(source.getObservedContainer());
        }
      }
    }
  }