Advertisement
Guest User

PersonTable

a guest
Mar 29th, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.67 KB | None | 0 0
  1. public class PersonTable {
  2.  
  3.     private TableView<PersonRepository.Person> table;
  4.  
  5.     private PersonState state;
  6.  
  7.     private List<PersonRepository.Person> personList = new ArrayList<>();
  8.  
  9.     private JFXTextField searchField;
  10.  
  11.     private int selectedIndex;
  12.  
  13.     public PersonTable(TableView<PersonRepository.Person> table, StackPane root, JFXTextField searchField, PersonState state) {
  14.         this.table = table;
  15.         this.state = state;
  16.         this.searchField = searchField;
  17.  
  18.         TableColumn<PersonRepository.Person, String> nameColumn = new TableColumn<>("Name");
  19.         nameColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getName()));
  20.  
  21.         TableColumn<PersonRepository.Person, String> geburtsDatumColumn = new TableColumn<>("Geburtsdatum");
  22.         geburtsDatumColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getGeburtsdatum()));
  23.  
  24.         TableColumn<PersonRepository.Person, String> geschlechtColumn = new TableColumn<>("Geschlecht");
  25.         geschlechtColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getGender().getDisplayName()));
  26.  
  27.         TableColumn<PersonRepository.Person, String> plzColumn = new TableColumn<>("Stadtteil");
  28.         plzColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getPlz() + " " +      
  29.                         param.getValue().getStadtteil()));
  30.  
  31.         TableColumn<PersonRepository.Person, String> ortColumn = new TableColumn<>("Feststellung");
  32.         ortColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getFeststellung()));
  33.  
  34.         TableColumn<PersonRepository.Person, String> berufColumn = new TableColumn<>("Beruf");
  35.         berufColumn.setCellValueFactory(param -> new SimpleStringProperty(param.getValue().getBeruf()));
  36.  
  37.         table.getColumns().clear();
  38.         table.getColumns().addAll(nameColumn, geburtsDatumColumn, geschlechtColumn, plzColumn, ortColumn, berufColumn);
  39.         table.getItems().clear();
  40.         table.setRowFactory(param -> {
  41.             TableRow<PersonRepository.Person> personTableRow = new TableRow<>();
  42.             personTableRow.setOnMouseClicked(e -> {
  43.                 if (e.getClickCount() == 2) {
  44.                     this.selectedIndex = table.getSelectionModel().getSelectedIndex();
  45.                     PersonRepository.Person person = table.getSelectionModel().getSelectedItem();
  46.                     Futures.addCallback(Main.getInstance().getPersonRepository().getPersonById(person.getPatId()), (Callback<Rows>)
  47.                                 result -> {
  48.                                     if (result != null && result.first() != null) {
  49.                                     Row row = result.first();
  50.                                     Platform.runLater(() -> Dialog.showPersonDialog(root, row, null));
  51.                                 }
  52.                     }, MoreExecutors.directExecutor());
  53.                 }
  54.             });
  55.             return personTableRow;
  56.         });
  57.         searchField.textProperty().addListener((observable, oldValue, newValue) -> {
  58.             table.getItems().clear();
  59.             if (newValue == null || newValue.isEmpty()) {
  60.                 table.getItems().addAll(this.personList);
  61.                 return;
  62.             }
  63.             String lowerCaseFilter = newValue.toLowerCase();
  64.             table.getItems().addAll(this.personList.stream().filter(p -> {
  65.                 if (p.getName().toLowerCase().contains(lowerCaseFilter)) {
  66.                     return true;
  67.                 } else if (String.valueOf(p.getGeburtsdatum()).toLowerCase().contains(lowerCaseFilter)) {
  68.                     return true;
  69.                 } else if (String.valueOf(p.getPlz()).toLowerCase().contains(lowerCaseFilter)) {
  70.                     return true;
  71.                 } else if (String.valueOf(p.getFeststellung()).toLowerCase().contains(lowerCaseFilter)) {
  72.                     return true;
  73.                 } else return p.getBeruf().toLowerCase().contains(lowerCaseFilter);
  74.             }).collect(Collectors.toList()));
  75.         });
  76.         this.updateRows();
  77.     }
  78.  
  79.     public void updateRows() {
  80.         Futures.addCallback(Main.getInstance().getPersonRepository().getPersons(), (Callback<List<PersonRepository.Person>>) result ->
  81.             Platform.runLater(() -> {
  82.                 this.searchField.setText("");
  83.                 this.table.getItems().clear();
  84.                 this.table.getItems().addAll(result.stream().filter(p -> p.getState() == this.state).collect(Collectors.toList()));
  85.                 this.personList.clear();
  86.                 this.personList.addAll(this.table.getItems());
  87.                 this.table.getSelectionModel().select(this.selectedIndex);
  88.             }), Main.getInstance().getMySQL().getPool());
  89.     }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement