10_Delete
Code-Dateien
| Dateiname | Aktion |
|---|---|
| CODECode_Bank.zip | Download |
| CODECode_Pizza.zip | Download |
| CODECode_Urlaub.zip | Download |
Videos
| Dateiname | Aktion |
|---|---|
| VIDEOVideo_Bank_D | Abspielen |
| VIDEOVideo_Pizza_E | Abspielen |
| VIDEOVideo_Urlaub_D | Abspielen |
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 rowo, 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!");
}