@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()); } } } }