10_Delete

Code-Dateien

DateinameAktion
CODECode_Bank.zipDownload
CODECode_Pizza.zipDownload
CODECode_Urlaub.zipDownload

Videos

DateinameAktion
VIDEOVideo_Bank_DAbspielen
VIDEOVideo_Pizza_EAbspielen
VIDEOVideo_Urlaub_DAbspielen

Lernmaterialien

Delete

Button

OrdersView.java

        grid.addComponentColumn(o -> new Button("Delete"))
                .setHeader("Task")
                .setSortable(false);

What each part does:

  • addComponentColumn(...)
    Creates a column with Vaadin components, not plain text.
  • o -> new Button("Delete")
    For each row o, Vaadin creates a new button labeled Delete.
  • .setHeader("Task")
    The column title is Task.
  • .setSortable(false)
    The user cannot sort by this column.

Important detail:
Right now, the button is only displayed. It does not delete anything yet, because there is no click listener.

Service

PizzaOrderService.java

    public void removePizzaOrder(Long orderId) {
        PizzaOrder o;
        Iterator<PizzaOrder> it;
        int anz;

        anz = 0;
        if (orderId == null)
            throw new PizzaOrderException("No Order ID!");
        it = orders.iterator();
        while (it.hasNext()) {
            o = it.next();
            if (o.getOrderId().equals(orderId)) {
                it.remove();
                anz++;
            }
        }
        if (anz == 0)
            throw new PizzaOrderException("Order with the ID " + orderId + " not found!");
    }

The cleanest modern alternative is usually this:

public void removePizzaOrder(Long orderId) {
    if (orderId == null) {
        throw new PizzaOrderException("No Order ID!");
    }

    boolean removed = orders.removeIf(o -> o.getOrderId().equals(orderId));

    if (!removed) {
        throw new PizzaOrderException("Order with the ID " + orderId + " not found!");
    }
}

Event

OrdersView.java

        grid.addComponentColumn(o -> new Button("Delete", e -> removeSelected(o.getOrderId())))
                .setHeader("Task")
                .setSortable(false);

OrdersView.java

    private void removeSelected(Long orderId) {
        try {
            pizzaOrderService.removePizzaOrder(orderId);
            reload();
        }
        catch (PizzaOrderException e) {
            Notification.show(e.getMessage());
        }
    }

One more

OrdersView.java

        grid.addComponentColumn(o -> new Button("One more", e -> oneMore(o.getOrderId())))
                .setHeader("Task")
                .setSortable(false);
    private void oneMore(Long orderId) {
        try {
            pizzaOrderService.oneMore(orderId);
            reload();
        }
        catch (PizzaOrderException e) {
            Notification.show(e.getMessage());
        }
    }

PizzaOrderService.java

    public void oneMore(Long orderId) {
        for (PizzaOrder o : orders) {
            if (o.getOrderId().equals(orderId)) {
                o.setQuantity(o.getQuantity() + 1);
                return;
            }
        }
        throw new PizzaOrderException("Order not found!");
    }

GitHub

Copy code