Guest User

Untitled

a guest
Jan 23rd, 2020
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.72 KB | None | 0 0
  1. package com.example.test.spring.multilevel;
  2.  
  3. import java.util.Random;
  4.  
  5. import com.example.test.spring.MessageBean;
  6. import com.vaadin.flow.component.orderedlayout.VerticalLayout;
  7. import com.vaadin.flow.component.textfield.TextField;
  8. import com.vaadin.flow.data.binder.Binder;
  9. import com.vaadin.flow.router.Route;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11.  
  12. @Route
  13. public class MainView extends VerticalLayout {
  14.  
  15.     private TextField typeField = new TextField();
  16.  
  17.     public MainView(@Autowired MessageBean bean) {
  18.         add(typeField);
  19.  
  20.         Binder<? extends ParentDTO> binder;
  21.  
  22.         if (new Random().nextInt(2) == 0) {
  23.             ChildDTO child = new ChildDTO();
  24.             binder = createChildBinder(child);
  25.         } else {
  26.             ChildTwoDTO child = new ChildTwoDTO();
  27.             binder = createChildBinder(child);
  28.         }
  29.     }
  30.  
  31.     public Binder<ChildDTO> createChildBinder(ChildDTO bean) {
  32.         Binder<ChildDTO> binder = createBinder(bean);
  33.         TextField titleField = new TextField();
  34.         add(titleField);
  35.         binder.forField(titleField).asRequired()
  36.                 .bind(ChildDTO::getTitle, ChildDTO::setTitle);
  37.         binder.readBean(bean);
  38.         return binder;
  39.     }
  40.  
  41.     public Binder<ChildTwoDTO> createChildBinder(ChildTwoDTO bean) {
  42.         Binder<ChildTwoDTO> binder = createBinder(bean);
  43.         TextField languageField = new TextField();
  44.         add(languageField);
  45.         binder.forField(languageField).asRequired()
  46.                 .bind(ChildTwoDTO::getLanguage, ChildTwoDTO::setLanguage);
  47.         binder.readBean(bean);
  48.         return binder;
  49.     }
  50.  
  51.     public <T extends ParentDTO> Binder<T> createBinder(T bean) {
  52.         Binder<T> binder = new Binder<>();
  53.         binder.forField(typeField).asRequired("Better fill this...")
  54.                 .bind(ParentDTO::getType, ParentDTO::setType);
  55.         return binder;
  56.     }
  57.  
  58.     public static abstract class ParentDTO {
  59.         private String type = "type";
  60.  
  61.         public String getType() {
  62.             return type;
  63.         }
  64.  
  65.         public void setType(String type) {
  66.             this.type = type;
  67.         }
  68.     }
  69.  
  70.     public static class ChildDTO extends ParentDTO {
  71.         private String title = "title";
  72.  
  73.         public String getTitle() {
  74.             return title;
  75.         }
  76.  
  77.         public void setTitle(String title) {
  78.             this.title = title;
  79.         }
  80.     }
  81.  
  82.     public static class ChildTwoDTO extends ParentDTO {
  83.         private String language = "language";
  84.  
  85.         public String getLanguage() {
  86.             return language;
  87.         }
  88.  
  89.         public void setLanguage(String language) {
  90.             this.language = language;
  91.         }
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment