Логика для добавления сотрудников

Есть класс для добавления данных в таблицу с помощью vaadin:

 @SpringComponent
 @UIScope
 public class EmployeeEditor extends VerticalLayout implements KeyNotifier {

 private final EmployeeRepositiry employeeRepositiry;
 private Employee employee;

 private TextField lastname = new TextField("","Фамилия");
 private TextField firstname = new TextField("","Имя");
 private TextField patronymic = new TextField("","Отчество");
 private TextField departament = new TextField("","Отдел");

 private Button save = new Button("Сохранить", VaadinIcon.CHECK.create());
 private Button cancel = new Button("Отменить");
 private Button delete = new Button("Удалить", VaadinIcon.TRASH.create());
 private HorizontalLayout actions = new HorizontalLayout(save, cancel, 
 delete);

 private Binder<Employee> employeeBinder = new Binder<>(Employee.class);

 private ChangeHandler changeHandler;

 public interface ChangeHandler{
 void onChange();
 }
 @Autowired
 public EmployeeEditor(EmployeeRepositiry employeeRepositiry) {
    this.employeeRepositiry = employeeRepositiry;

    add(lastname, firstname, patronymic, departament, actions);
    employeeBinder.bindInstanceFields(this);

 setSpacing(true);//добавляет интервалы между филдами

save.getElement().getThemeList().add("primary");//getElement().getThemeList() 
delete.getElement().getThemeList().add("error");//добавляет оформление: 
"error"-кнопка

addKeyPressListener(Key.ENTER, e -> save());

save.addClickListener(e -> save());//устанавливает обработчики кнопок
delete.addClickListener(e -> delete());
cancel.addClickListener(e -> editEmployee(employee));
setVisible(false);//делает форму невидимой
}
private void save() {
    employeeRepositiry.save(employee); 
   
    changeHandler.onChange();
}
private void delete() {
    employeeRepositiry.delete(employee);
    changeHandler.onChange();
}
public void editEmployee(Employee emp) {
    if (emp == null) {
        setVisible(false);
        return;
    }if (emp.getId() != null) {
        this.employee = employeeRepositiry.findById(emp.getId()).orElse(emp);
    }else {
        employee = emp;
    }
    employeeBinder.setBean(this.employee);//ляжет в филды
    setVisible(true);

    lastname.focus();//видимости
}

public void setChangeHandler(ChangeHandler changeHandler) {
    this.changeHandler = changeHandler;
}
}

Сущности:

@Entity
@Table
public class Employee {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)

private Long id;
private String lastname;
private String firstname;
private String patronymic;
private String departament;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ID_DEPARTAMENT")
private Departaments depid;
 
@Entity
@Table
public class Departaments {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)

private Long Id;
private String phone;
private String chief;
private String email;

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Employee> employees = new HashSet<>();

В таблице Department есть два отдела, как сформировать класс EmployeeEditor чтобы в таблицу Employee формировалась колонка dep_id(1 или 2), в зависимости от отдела куда мы добавляем сотрудника?


Ответы (0 шт):