Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. package it.zero11.vaadin.course.view;
  2.  
  3. import java.util.List;
  4.  
  5. import com.vaadin.flow.component.UI;
  6. import com.vaadin.flow.component.button.Button;
  7. import com.vaadin.flow.component.combobox.ComboBox;
  8. import com.vaadin.flow.component.datepicker.DatePicker;
  9. import com.vaadin.flow.component.orderedlayout.VerticalLayout;
  10. import com.vaadin.flow.component.textfield.TextArea;
  11. import com.vaadin.flow.component.textfield.TextField;
  12. import com.vaadin.flow.data.binder.Binder;
  13. import com.vaadin.flow.data.binder.ValidationException;
  14. import com.vaadin.flow.data.converter.StringToBigDecimalConverter;
  15. import com.vaadin.flow.data.converter.StringToIntegerConverter;
  16. import com.vaadin.flow.router.PageTitle;
  17. import com.vaadin.flow.router.Route;
  18.  
  19. import it.zero11.vaadin.course.model.Brand;
  20. import it.zero11.vaadin.course.model.Product;
  21. import it.zero11.vaadin.course.service.BrandService;
  22. import it.zero11.vaadin.course.service.ProductService;
  23.  
  24. @Route(value = "products/create")
  25. @PageTitle("Products")
  26. public class ProductsCreateView extends VerticalLayout {
  27. private static final long serialVersionUID = 1L;
  28. private final ComboBox<Brand> brandComboBox;
  29. private final TextField skuTextField;
  30. private final TextArea descriptionTextArea;
  31. private final TextField aviabilityTextField;
  32. private final Button productSaveButton;
  33. private final DatePicker publishDatePicker;
  34. private final DatePicker firstAvailablePicker;
  35. private final TextField weightTextField;
  36. private final TextField priceTextField;
  37. private final TextField costTextField;
  38. private final TextField eanTextField;
  39. public ProductsCreateView() {
  40. Binder<Product> binder = new Binder<Product>(Product.class);
  41. skuTextField = new TextField();
  42. skuTextField.setLabel("SKU");
  43. add(skuTextField);
  44.  
  45. brandComboBox = new ComboBox<Brand>();
  46. brandComboBox.setLabel("Brand");
  47. brandComboBox.setItemLabelGenerator(Brand::getName);
  48. add(brandComboBox);
  49.  
  50. descriptionTextArea = new TextArea();
  51. descriptionTextArea.setLabel("Description");
  52. add(descriptionTextArea);
  53.  
  54. aviabilityTextField = new TextField();
  55. aviabilityTextField.setLabel("Aviability");
  56. add(aviabilityTextField);
  57.  
  58. publishDatePicker = new DatePicker();
  59. publishDatePicker.setLabel("Publish Date");
  60. add(publishDatePicker);
  61.  
  62. firstAvailablePicker = new DatePicker();
  63. firstAvailablePicker.setLabel("First Available");
  64. add(firstAvailablePicker);
  65.  
  66. weightTextField = new TextField();
  67. weightTextField.setLabel("Weight");
  68. add(weightTextField);
  69.  
  70. priceTextField = new TextField();
  71. priceTextField.setLabel("Price");
  72. add(priceTextField);
  73.  
  74. costTextField = new TextField();
  75. costTextField.setLabel("Cost");
  76. add(costTextField);
  77.  
  78. eanTextField = new TextField();
  79. eanTextField.setLabel("EAN");
  80. add(eanTextField);
  81.  
  82. binder.forField(skuTextField).bind(Product::getSku, Product::setSku);
  83. binder.forField(brandComboBox).bind(Product::getBrand, Product::setBrand);
  84. binder.forField(descriptionTextArea).bind(Product::getDescription, Product::setDescription);
  85. binder.forField(aviabilityTextField).withConverter(new StringToIntegerConverter("Inserire un valore numerico")).bind(Product::getAvailability, Product::setAvailability);
  86. binder.forField(publishDatePicker).bind(Product::getPublishDate, Product::setPublishDate);
  87. binder.forField(firstAvailablePicker).bind(Product::getFirstAvailable, Product::setFirstAvailable);
  88. binder.forField(weightTextField).withConverter(new StringToBigDecimalConverter("Inserire un valore numerico.")).bind(Product::getWeight, Product::setWeight);
  89. binder.forField(priceTextField).withConverter(new StringToBigDecimalConverter("Inserire un valore numerico.")).bind(Product::getPrice, Product::setPrice);
  90. binder.forField(costTextField).withConverter(new StringToBigDecimalConverter("Inserire un valore numerico.")).bind(Product::getCost, Product::setCost);
  91. binder.forField(eanTextField).bind(Product::getEan, Product::setEan);
  92.  
  93. productSaveButton = new Button("Save product");
  94. productSaveButton.addClickListener(e -> {
  95. Product p = new Product();
  96. try {
  97. binder.writeBean(p);
  98. ProductService.save(p);
  99.  
  100. UI.getCurrent().navigate(ProductsView.class);
  101. } catch (Exception e1) {
  102. // TODO Auto-generated catch block
  103. e1.printStackTrace();
  104. }
  105.  
  106.  
  107. });
  108. add(productSaveButton);
  109.  
  110. updateBrandData();
  111. }
  112.  
  113. private void updateBrandData() {
  114. List<Brand> brands = BrandService.findAll();
  115. brandComboBox.setItems(brands);
  116. }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement